Вставка рисунка с сохранением пропорций по меньшей стороне
ВасилисаЛукьянчикова
Дата: Воскресенье, 21.01.2018, 19:33 |
Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
Приветствую всех. У меня есть макрос, который вставляет рисунок в фигуру - с сохранением пропорций. Но делает он это - по большей стороне рисунка. Как заставить макрос также вписывать рисунок в фигуру (то есть с сохранением пропорций) - но по меньшей стороне ?
Приветствую всех. У меня есть макрос, который вставляет рисунок в фигуру - с сохранением пропорций. Но делает он это - по большей стороне рисунка. Как заставить макрос также вписывать рисунок в фигуру (то есть с сохранением пропорций) - но по меньшей стороне ? ВасилисаЛукьянчикова
Ответить
Сообщение Приветствую всех. У меня есть макрос, который вставляет рисунок в фигуру - с сохранением пропорций. Но делает он это - по большей стороне рисунка. Как заставить макрос также вписывать рисунок в фигуру (то есть с сохранением пропорций) - но по меньшей стороне ? Автор - ВасилисаЛукьянчикова Дата добавления - 21.01.2018 в 19:33
Karataev
Дата: Понедельник, 22.01.2018, 09:04 |
Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация:
533
±
Замечаний:
0% ±
Excel
Используя заливку (Fill) нельзя сделать то, что Вы хотите, т.к. заливка это то, что находится внутри, заливка не может выходить наружу. Могу предложить вариант - вставка рисунка поверх рисунка, и таким образом будет два рисунка на листе, а не один, как сейчас.
Используя заливку (Fill) нельзя сделать то, что Вы хотите, т.к. заливка это то, что находится внутри, заливка не может выходить наружу. Могу предложить вариант - вставка рисунка поверх рисунка, и таким образом будет два рисунка на листе, а не один, как сейчас. Karataev
Ответить
Сообщение Используя заливку (Fill) нельзя сделать то, что Вы хотите, т.к. заливка это то, что находится внутри, заливка не может выходить наружу. Могу предложить вариант - вставка рисунка поверх рисунка, и таким образом будет два рисунка на листе, а не один, как сейчас. Автор - Karataev Дата добавления - 22.01.2018 в 09:04
ВасилисаЛукьянчикова
Дата: Понедельник, 22.01.2018, 09:56 |
Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
Karataev, ну хотя бы так.
Ответить
Karataev
Дата: Понедельник, 22.01.2018, 10:12 |
Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация:
533
±
Замечаний:
0% ±
Excel
Посмотрите комментарий в макросе.
[vba]
Код
Sub Вставить_рисунок() Dim shpHost As Shape, shp As Shape Dim var Application.ScreenUpdating = False On Error Resume Next ActiveSheet.Shapes("Вставленный").Delete On Error GoTo 0 'здесь укажите имя фигуры Set shpHost = ActiveSheet.Shapes("Прямоугольник") Set shp = ActiveSheet.Shapes.AddPicture(Range("I4"), False, True, -1, -1, -1, -1) shp.Name = "Вставленный" shp.LockAspectRatio = True If shp.Width > shp.Height Then shp.Height = shpHost.Height shp.Top = shpHost.Top var = shpHost.Left + shpHost.Width / 2 shp.Left = var - shp.Width / 2 Else shp.Width = shpHost.Width shp.Left = shpHost.Left var = shpHost.Top + shpHost.Height / 2 shp.Top = var - shp.Height / 2 End If shp.ZOrder msoSendToBack Application.ScreenUpdating = True End Sub
[/vba]
Посмотрите комментарий в макросе.
[vba]
Код
Sub Вставить_рисунок() Dim shpHost As Shape, shp As Shape Dim var Application.ScreenUpdating = False On Error Resume Next ActiveSheet.Shapes("Вставленный").Delete On Error GoTo 0 'здесь укажите имя фигуры Set shpHost = ActiveSheet.Shapes("Прямоугольник") Set shp = ActiveSheet.Shapes.AddPicture(Range("I4"), False, True, -1, -1, -1, -1) shp.Name = "Вставленный" shp.LockAspectRatio = True If shp.Width > shp.Height Then shp.Height = shpHost.Height shp.Top = shpHost.Top var = shpHost.Left + shpHost.Width / 2 shp.Left = var - shp.Width / 2 Else shp.Width = shpHost.Width shp.Left = shpHost.Left var = shpHost.Top + shpHost.Height / 2 shp.Top = var - shp.Height / 2 End If shp.ZOrder msoSendToBack Application.ScreenUpdating = True End Sub
[/vba]
Karataev
Сообщение отредактировал Karataev - Понедельник, 22.01.2018, 11:26
Ответить
Сообщение Посмотрите комментарий в макросе.
[vba]
Код
Sub Вставить_рисунок() Dim shpHost As Shape, shp As Shape Dim var Application.ScreenUpdating = False On Error Resume Next ActiveSheet.Shapes("Вставленный").Delete On Error GoTo 0 'здесь укажите имя фигуры Set shpHost = ActiveSheet.Shapes("Прямоугольник") Set shp = ActiveSheet.Shapes.AddPicture(Range("I4"), False, True, -1, -1, -1, -1) shp.Name = "Вставленный" shp.LockAspectRatio = True If shp.Width > shp.Height Then shp.Height = shpHost.Height shp.Top = shpHost.Top var = shpHost.Left + shpHost.Width / 2 shp.Left = var - shp.Width / 2 Else shp.Width = shpHost.Width shp.Left = shpHost.Left var = shpHost.Top + shpHost.Height / 2 shp.Top = var - shp.Height / 2 End If shp.ZOrder msoSendToBack Application.ScreenUpdating = True End Sub
[/vba]
Автор - Karataev Дата добавления - 22.01.2018 в 10:12
ВасилисаЛукьянчикова
Дата: Понедельник, 22.01.2018, 10:27 |
Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
Karataev, а можно эту картинку - разместить под фигурой, а не поверх нее ? (Потому что тогда можно будет - какие-то объекты по бокам расположить и невлезающие части картинки - будут скрыты)
Karataev, а можно эту картинку - разместить под фигурой, а не поверх нее ? (Потому что тогда можно будет - какие-то объекты по бокам расположить и невлезающие части картинки - будут скрыты) ВасилисаЛукьянчикова
Ответить
Сообщение Karataev, а можно эту картинку - разместить под фигурой, а не поверх нее ? (Потому что тогда можно будет - какие-то объекты по бокам расположить и невлезающие части картинки - будут скрыты) Автор - ВасилисаЛукьянчикова Дата добавления - 22.01.2018 в 10:27
ВасилисаЛукьянчикова
Дата: Понедельник, 22.01.2018, 10:59 |
Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
Karataev, тут есть такая досадная вещь - макрос вставляет за одно срабатывание - один рисунок, не убирая другие вставленные. Таким образом появляется огромное количество рисунков, которые перегружают файл. Можно каким-то образом удалять предыдущий вставленный рисунок ?
Karataev, тут есть такая досадная вещь - макрос вставляет за одно срабатывание - один рисунок, не убирая другие вставленные. Таким образом появляется огромное количество рисунков, которые перегружают файл. Можно каким-то образом удалять предыдущий вставленный рисунок ? ВасилисаЛукьянчикова
Ответить
Сообщение Karataev, тут есть такая досадная вещь - макрос вставляет за одно срабатывание - один рисунок, не убирая другие вставленные. Таким образом появляется огромное количество рисунков, которые перегружают файл. Можно каким-то образом удалять предыдущий вставленный рисунок ? Автор - ВасилисаЛукьянчикова Дата добавления - 22.01.2018 в 10:59
ВасилисаЛукьянчикова
Дата: Понедельник, 22.01.2018, 11:16 |
Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
Karataev, у меня еще такой вопрос. Ведь меньшая сторона - это может быть и ширина и высота. У меня в архиве - лежал файл 1.jpg, в котором меньшая сторона - это ширина. И вот данный макрос - не воспринимает этот рисунок. То есть он его вписывает по большей стороне, а не по меньшей. Как заставить макрос реагировать и на меньшую сторону - ширину - тоже ? (сейчас макрос реагирует только на меньшую сторону - высоту.)
Karataev, у меня еще такой вопрос. Ведь меньшая сторона - это может быть и ширина и высота. У меня в архиве - лежал файл 1.jpg, в котором меньшая сторона - это ширина. И вот данный макрос - не воспринимает этот рисунок. То есть он его вписывает по большей стороне, а не по меньшей. Как заставить макрос реагировать и на меньшую сторону - ширину - тоже ? (сейчас макрос реагирует только на меньшую сторону - высоту.) ВасилисаЛукьянчикова
Сообщение отредактировал ВасилисаЛукьянчикова - Понедельник, 22.01.2018, 11:22
Ответить
Сообщение Karataev, у меня еще такой вопрос. Ведь меньшая сторона - это может быть и ширина и высота. У меня в архиве - лежал файл 1.jpg, в котором меньшая сторона - это ширина. И вот данный макрос - не воспринимает этот рисунок. То есть он его вписывает по большей стороне, а не по меньшей. Как заставить макрос реагировать и на меньшую сторону - ширину - тоже ? (сейчас макрос реагирует только на меньшую сторону - высоту.) Автор - ВасилисаЛукьянчикова Дата добавления - 22.01.2018 в 11:16
ВасилисаЛукьянчикова
Дата: Понедельник, 22.01.2018, 11:31 |
Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
Karataev, спасибо. Теперь все просто идеально. Я могу только сказать, что вы настоящий гений в области написания макросов.
Karataev, спасибо. Теперь все просто идеально. Я могу только сказать, что вы настоящий гений в области написания макросов. ВасилисаЛукьянчикова
Ответить
Сообщение Karataev, спасибо. Теперь все просто идеально. Я могу только сказать, что вы настоящий гений в области написания макросов. Автор - ВасилисаЛукьянчикова Дата добавления - 22.01.2018 в 11:31
ВасилисаЛукьянчикова
Дата: Понедельник, 22.01.2018, 11:55 |
Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
Karataev, щелкнула по кнопке "Репутация +". Какое-то окошко появилось и тут же исчезло. Наверное повысилась.
Karataev, щелкнула по кнопке "Репутация +". Какое-то окошко появилось и тут же исчезло. Наверное повысилась. ВасилисаЛукьянчикова
Ответить
Сообщение Karataev, щелкнула по кнопке "Репутация +". Какое-то окошко появилось и тут же исчезло. Наверное повысилась. Автор - ВасилисаЛукьянчикова Дата добавления - 22.01.2018 в 11:55