Как вставить изображение в Excel в указанной ячейке с помощью VBA

Я добавляю файлы «.jpg» на свой лист Excel с помощью кода ниже:

'Add picture to excel xlApp.Cells(i, 20).Select xlApp.ActiveSheet.Pictures.Insert(picPath).Select 'Calgulate new picture size With xlApp.Selection.ShapeRange .LockAspectRatio = msoTrue .Width = 75 .Height = 100 End With 'Resize and make printable With xlApp.Selection .Placement = 1 'xlMoveAndSize '.Placement = 2 'xlMove '.Placement = 3 'xlFreeFloating .PrintObject = True End With 

Я не знаю, что я делаю неправильно, но он не вставлен в правую ячейку, так что я должен сделать, чтобы поместить это изображение в указанную ячейку в Excel?

Попробуй это:

 With xlApp.ActiveSheet.Pictures.Insert(PicPath) With .ShapeRange .LockAspectRatio = msoTrue .Width = 75 .Height = 100 End With .Left = xlApp.ActiveSheet.Cells(i, 20).Left .Top = xlApp.ActiveSheet.Cells(i, 20).Top .Placement = 1 .PrintObject = True End With 

Лучше не отбирать ничего в Excel, обычно это никогда не нужно и замедляет ваш код.

Я работал над системой, которая работала на ПК и Mac, и боролась за поиск кода, который работал для вставки изображений на ПК и Mac. Это работало для меня так, надеюсь, кто-то другой сможет это использовать!

Примечание: переменные strPictureFilePath и strPictureFileName должны быть установлены на допустимые пути ПК и Mac. Например:

Для ПК: strPictureFilePath = “E: \ Dropbox \” и strPictureFileName = “TestImage.jpg” и с Mac: strPictureFilePath = “Macintosh HD: Dropbox:” и strPictureFileName = “TestImage.jpg”

Код в соответствии с инструкциями:

  On Error GoTo ErrorOccured shtRecipeBrowser.Cells(intDestinationRecipeRowCount, 1).Select ActiveSheet.Pictures.Insert(Trim(strPictureFilePath & strPictureFileName)).Select Selection.ShapeRange.Left = shtRecipeBrowser.Cells(intDestinationRecipeRowCount, 1).Left Selection.ShapeRange.Top = shtRecipeBrowser.Cells(intDestinationRecipeRowCount, 1).Top + 10 Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Height = 130 

Если речь идет только о вставке и изменении размера изображения, попробуйте код ниже.

По конкретному вопросу, который вы задали, свойство TopLeftCell возвращает объект диапазона, связанный с ячейкой, где расположен верхний левый угол. Чтобы разместить новое изображение в определенном месте, я рекомендую создать изображение в «правильном» месте и зарегистрировать его верхние и левые значения свойств манекена на двойные переменные.

Вставьте свой Pic, назначенный переменной, чтобы легко изменить его имя. Объект Shape Object будет иметь то же имя, что и объект изображения.

 Sub Insert_Pic_From_File(PicPath as string, wsDestination as worksheet) Dim Pic As Picture, Shp as Shape Set Pic = wsDestination.Pictures.Insert(FilePath) Pic.Name = "myPicture" 'Strongly recommend using a FileSystemObject.FileExists method to check if the path is good before executing the previous command Set Shp = wsDestination.Shapes("myPicture") With Shp .Height = 100 .Width = 75 .LockAspectRatio = msoTrue 'Put this later so that changing height doesn't change width and vice-versa) .Placement = 1 .Top = 100 .Left = 100 End with End Sub 

Удачи!

  • удалить строку на основе условия
  • Ошибка времени выполнения 1004 Excel 2013
  • Excel VBA - электронная почта не отправляется при блокировке компьютера
  • Как создать пользовательское меню «Shapes» в Powerpoint
  • Как разобрать JSON с VBA без внешних библиотек?
  • Хэш-таблица / ассоциативный массив в VBA
  • Процедура слишком большая
  • vba: получить уникальные значения из массива
  • При вводе формулы из VBA возникают разные языки
  • Как определить последний ряд, используемый в VBA, включая пробелы между
  • Различие между использованием .text и .value в VBA Access
  • Давайте будем гением компьютера.