Вставка картинки в Excel при помощи VBA

Всем доброго дня. Пишу скрипт для CATIA, который формирует табличку в Ecxel. В нем хочу вставлять картинку в ячейку. При помощи этого кода у меня получилось это сделать:

With xlApp.ActiveSheet.Pictures.Insert(LogoPath)
  .Left = xlApp.ActiveSheet.Range("B1").Left
  .Top = xlApp.ActiveSheet.Range("B1").Top
  .Placement = 3
  .PrintObject = True
End With

Но данный код вставляет картинку ссылкой. И если сохранить файл Excel и отправить кому-то, то она не откроется. Поэтому я попробовал данный код:

Call xlApp.ActiveSheet.Shapes.AddPicture(LogoPath, msoCFalse, msoCTrue, 100, 100, 100, 100)

Но ничего не вставляется.


Ответы (1 шт):

Автор решения: vikttur

На VBA так:

Sub InsertPictures()
    Dim sPath As String, sName As String
    Dim r As Range, oPic As Object

    sPath = "C:\pictures\" ' путь к каталогу '
    sName = "new.png" ' имя картинки '
    Set r = Cells(1, 1) ' диапазон вставки '

    On Error Resume Next ' обход ошибки, если картинки нет ' 
    Set oPic = ActiveSheet.Shapes.AddPicture(sPath & sName, 0, 1, r.Left + 2, r.Top + 2, r.Width - 4, r.Height - 4) ' вот она, красавица '
    Set r = Nothing: Set oPic = Nothing ' чистим память ' 
End Sub

Или с выносом параметров (вместо строки Set oPic...):

With ActiveSheet.Shapes.AddPicture(sPath & sName, 0, 1, 0, 0, 0, 0)
    .Left = r.Left + 2
    .Top = r.Top + 2
    .Width = r.Width - 4
    .Height = r.Height - 4
End With
→ Ссылка