искать текст внутри таблицы в документе Word и заменять его изображением - PullRequest
0 голосов
/ 15 мая 2019

Мне нужно заменить каждое вхождение <tag>filename123</tag> внутри таблицы в документе Word изображением D:\images\filename123.jpg (содержание каждого тега отличается). Я использую следующий код, скопированный из другого ответа , который хорошо выполняет команду поиска, но я не могу заставить работать строку замены. Что не так?

Sub Demo()
Dim StrOut As String
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "\<tag\>*\</tag\>"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchWildcards = True
    .Execute
  End With
  Do While .Find.Found
    If .Information(wdWithInTable) = True Then
      StrOut = Split(Split(.Text, ">")(1), "<")(0)
    End If
    .Collapse wdCollapseEnd
    ' the following line yields "Run-time error 9"
    .InlineShapes.AddPicture FileName:= _
    "D:\images\" & StrOut, LinkToFile:=False _
    , SaveWithDocument:=True
    .Text = ""
    .Find.Execute
  Loop
End With
End Sub

1 Ответ

1 голос
/ 15 мая 2019

Это должно работать для вас. Посмотрите на ваш код,

  • Я вижу, что этот тег всегда будет присутствовать внутри таблицы. "Информация (wdWithInTable)"
  • Я также изменил 'split' на 'replace' , чтобы избежать игры с индексами.
  • Вы пропустили расширение файла в коде вашего изображения, поэтому замените '. Png' на любой формат изображения, который у вас есть
Sub Demo()
Dim StrOut As String
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "\<tag\>*\</tag\>"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchWildcards = True
    .Execute
  End With
  Do While .Find.Found
    If .Information(wdWithInTable) = True Then
      StrOut = Replace(Replace(.Text, "<tag>", ""), "</tag>", "")
    End If
    .Collapse wdCollapseEnd
    ' the following line yields "Run-time error 9"
    .InlineShapes.AddPicture FileName:= _
    "C:\Users\jx00938\" & StrOut + ".png", LinkToFile:=False _
    , SaveWithDocument:=True
    .Text = ""
    .Find.Execute
  Loop
End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...