Страницы: 1
RSS
Вставить картинку в определенный диапазон
 
Всем привет !

Пользуюсь, что бы вставить картинку по размерам ячейки
Код
ActiveSheet.Shapes.AddPicture Cells(1, 1).Value, False, True, Cells(10, 5).Left, Cells(10, 5).Top, Cells(10, 5).Width, Cells(10, 5).Height

Как изменить код, что бы картинка вставлялась ( размер ) в диапазон, к примеру, левый угол 10 строка 5 столбец , правый нижний угол 20 строка 10 столбец.
Спасибо  
 
Таким способом размер картинки не подогнать, его нужно вычислять под размеры диапазона
Согласие есть продукт при полном непротивлении сторон
 
Sanja, Если диапазон известен.. всегда вставлять именно в такой промежуток... Возможно какое-то другое решение ?  
 
Цитата
Max.il написал: всегда вставлять именно в такой промежуток
Не важно. Вы же видите какие аргументы принимает метод AddPicture - координаты верхнего левого угла и высоту/ширину
Согласие есть продукт при полном непротивлении сторон
 
Sanja, Возможно , скажу глупость из-за незнания. А если в этом промежутке разместить что-то типа ListBox. В него нельзя вставлять( по его диапазону ) ?  
 
Есть такой элемент ActiveX  - 'Image' попробуйте с ним что нибудь изобразить
Согласие есть продукт при полном непротивлении сторон
 
Sanja,Моих знаний, к сожалению, не хватит. Сможете мне помочь ? Что нужно от меня ?

Какую картинку вставить - путь прописывается в ячейки "А1"
Далее, по макросу нужно вставить картинку в Forms.Image.1
 
Для того, что-бы вставить (визуально) картинку в нужный диапазон, элемент ActiveX Image нужно вставить на лист и подогнать его размеры под нужный диапазон заранее вручную, а то его программная вставка ничем не будет отличаться от вставки картинки просто на лист.
Нужные свойства для Image можно настроить как вручную, так и программно.
Для того, что бы размеры Image были привязаны к ячейкам нужно:
ПКМ по Image - Формат объекта - Свойства - перемещать и изменять объект вместе с ячейками
Код
Sub AddPictureToImage()
Application.ScreenUpdating = False
With Worksheets("Лист1").Image1
    'адрес ячейки, в которой прописан путь к файлу-картинке
    .Picture = LoadPicture(Worksheets("Лист1").Range("A1").Value)
    '-----------------------------------------------------------
    'остальные нужные свойства можно настроить заранее, вручную
    'а можно и программно
    'свойсво подложки (прозрачная)
    .BackStyle = fmBackStyleTransparent
    'рамка элемента (отсутствует)
    .BorderStyle = fmBorderStyleNone
    'размер картинки (растягивать)
    .PictureSizeMode = fmPictureSizeModeStretch
    '-----------------------------------------------------------
End With
Application.ScreenUpdating = True
End Sub
Изменено: Sanja - 28.05.2019 07:29:19
Согласие есть продукт при полном непротивлении сторон
 
Код
Sub Kartinka()
Dim LVU As Range
Dim PNU As Range
Set LVU = Cells(10, 5) 'Левый верхний угол
Set PNU = Cells(20, 10) 'Правый нижний угол
ActiveSheet.Shapes.AddPicture Cells(1, 1).Value, _
        False, _
        True, _
        LVU.Left, _
        LVU.Top, _
        Range(LVU, PNU).Width, _
        Range(LVU, PNU).Height
End Sub

Пример во вложении
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
Страницы: 1
Наверх