Как заменить несколько заполнителей на динамическое поле через vba - PullRequest
0 голосов
/ 25 июня 2019

Возможна только обычная замена строк, как показано ниже:

Sub replace() 
   OldWord = "YYY"
   NewVAR = "my_variable"
   With ActiveDocument
      .Content.Find.Forward = True
      .Wrap = wdFindStop.Execute  _
                            FindText:=OldWord, _
                            ReplaceWith:=NewVAR, _ 
                            replace:=wdReplaceAll, _
                            MatchCase:=True
   End With
End Sub

Я могу отменить XXX с помощью my_variable.

ЦЕЛЬ: Вместо моей переменной хочу иметь динамическое поле

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Вам необходимо передать строки в качестве аргументов

Sub replace(ByVal OldWord As String, ByVal NewVAr As String)
    WithActiveDocument
        .Content.Find.Forward = True
        .Wrap = wdFindStop
        .Execute FindText:=OldWord, ReplaceWith:=NewVAr, replace:=wdReplaceAll, MatchCase:=True
    End With
End Sub

Поэтому, когда вы вызываете Sub, вы будете использовать один из следующих

replace "YYY", "Myvariable"
replace OldWord:="YYY", NewVAr:="Myvariable"
Call replace ("YYY", "Myvariable")

(все из которых делают то же самоевещь)

0 голосов
/ 25 июня 2019

Вы можете передать значение подпрограмме следующим образом:

Sub replace( PlaceHolder As String, NewWord As String ) 

   With ActiveDocument
      .Content.Find.Forward = True
      .Wrap = wdFindStop.Execute  _
                        FindText:=PlaceHolder, _
                        ReplaceWith:=NewWord, _ 
                        replace:=wdReplaceAll, _
                        MatchCase:=True
   End With
End Sub

Таким образом, когда вы вызываете Sub, вы передаете значение поля:

replace( "XXX", <string value of the field> )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...