Мне нужен простой макрос VBA, который вставляет изображение, а затем меняет его высоту и ширину. Работает с первого раза. Однако пользователь может добавить несколько изображений, запустив макрос более одного раза, и моя проблема заключается в том, что макрос вставляет следующее изображение, но затем изменяет размер изображения, уже находящегося в документе, а не только что вставленного. Я бы предположил, что .count вернет последнее изображение (то есть то, которое было вставлено). Похоже, что строка «Установить myImage» не ссылается на только что вставленное изображение.
Приветствуется любая помощь. Код ниже.
Грег
ActiveDocument.Shapes.AddPicture Anchor:=Selection.Range, FileName:= _
"c:\mydir\carp3d.tif", LinkToFile:=False, SaveWithDocument:=True
' get last inserted image
Set myImage = ActiveDocument.Shapes(ActiveDocument.Shapes.Count)
myImage.Select
myImage.LockAspectRatio = msoTrue
myImage.LockAspectRatio = msoTrue
myImage.Height = 180#
myImage.Width = 124.55
Shapes.AddPicture возвращает объект Shape
, который вы должны захватить:
Set myImage = ActiveDocument.Shapes.AddPicture(....)
myImage.LockAspectRatio = msoTrue
' and so on
Вам не нужно myImage.Select
или два из myImage.LockAspectRatio = msoTrue
. Кроме того, заблокировав соотношение сторон, вам нужно установить только высоту или ширину, а не то и другое одновременно.
Большое спасибо. Я не знал, что синтаксис AddPicture может возвращать объект. Сработало идеально!