Почему Excel VBA не будет найден и заменен в документе Word? - PullRequest
2 голосов
/ 06 июня 2019

Я довольно новичок в VBA, пытаюсь заполнить шаблон слов из Excel с помощью VBA в Excel. Я использую следующий код для вставки даты в тег в документе word: Dim Template As String

Dim WordDoc, WordApp As Object
Dim Template as String
On Error Resume Next                                                      
Set WordApp = GetObject("Word.Application")                                 
If Err.Number <> 0 Then                                                     
    Err.Clear                                                               
    Set WordApp = CreateObject("Word.Application")                          
    WordApp.Visible = True                                                  
End If
Template = "C:\Users\me\Dropbox\me - Summer 2019\RMA_Log\00059-001_E_24May19_Form Returned Authorization.docx"
Set WordDoc = WordApp.Documents.Open(FileName:=Template, ReadOnly:=False)
With WordDoc.Content.Find                                                   
    .Text = "<Date>"                                                        
    .Replacement.Text = "06-06-2019"                                        
    .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue                                     
End With

Но это не заменит текст в основной части моего текстового документа.

Я пытался сделать WordDoc.ActiveDocument.Content.Find, но это тоже не работает. Если я точно скопирую код и заменю WordDoc на ActiveDocument и запуском его в слове VBA, текст будет заменен.

Dim Template As String
Template = "C:\Users\me\Dropbox\me - Summer 2019\RMA_Log\00059-001_E_24May19_Form Returned Authorization.docx"

With ActiveDocument.Content.Find                                                   
    .Text = "<Date>"                                                        
    .Replacement.Text = "06-06-2019"                                        
    .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue                                     
End With

Если я запускаю этот код в Word VBA, он заменяет тег, почему бы не запустить его из Excel?

Редактировать: Office 2016

1 Ответ

6 голосов
/ 06 июня 2019

Excel не знает, что такое wdReplaceAll или wdFindContinue.

Поместить ссылку на объектную модель Word (Tools > References > Microsoft Word XX Object Model).

И если у вас есть Option Explicit в верхней части кода, это выделит это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...