заменить inlineshapes, используя слово VBA - PullRequest
0 голосов
/ 27 июня 2018

У меня есть текстовый документ со многими изображениями, и я хочу иметь возможность выбрать путь к файлу (в котором новые изображения расположены и пронумерованы, т.е. от 1 до 100), чтобы затем заменить существующие изображения новыми изображениями.

Я прочитал несколько постов других, извлекающих свойства существующих встроенных форм для достижения этой цели, но я также читал людей, которым удалось выполнить следующий метод, который кажется намного более простым (я просто не смог заставить работать код полностью еще). В настоящее время код выполняется и заменяет последнее изображение совершенно нормально, но затем останавливается с ошибкой «438» - объект не поддерживает это свойство или метод, когда он пытается заменить второе последнее изображение.

Код выглядит следующим образом:

Sub Replace_images()
  Dim rg As Word.Range
  Dim i As Long
  Dim doc As Word.Document
  Dim path As String

 'Ensure pictures are numbered with no leading zeros (in folder) & are .jpg
  path = "C:\filepathtopictures\"

   Set doc = ActiveDocument

For i = doc.InlineShapes.Count To 1 Step -1

  Set rg = doc.InlineShapes(i).Range
  doc.InlineShapes(i).Delete
  rg = doc.InlineShapes.AddPicture(path & i & ".jpg", False, True, rg)

Next i

End Sub

Я не понимаю, как использование addpicture не работает для следующего изображения, когда ничего не изменилось с последнего изображения. Если кто-то может объяснить, почему это не работает, или скажите, что нужно изменить, это было бы здорово!

...