我需要通過excel表中的一行並使用單元格值在Word文檔中進行替換。我使用記錄宏來獲取代碼,它實際上替換了文本。但是,當我從Excel宏使用它時,它不起作用。從Excel中替換Word文檔中的文本
Dim WordApp As Object
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Dim WordDoc As Object
Set WordDoc = WordApp.Documents.Open(doc_path_str)
Dim find_what, find_repl As String
For col_idx = params_hdr_range.Column To params_hdr_range.Column + params_hdr_range.Columns.Count - 1
find_what = CStr(scnd_sheet.Cells(params_hdr_range.Row - 1, col_idx).Value)
find_repl = CStr(scnd_sheet.Cells(model_found_range.Row, col_idx).Value)
WordApp.Selection.Find.ClearHitHighlight
WordApp.Selection.Find.ClearFormatting
WordApp.Selection.Find.Replacement.ClearFormatting
With WordApp.Selection.Find
.Text = find_what
.Replacement.Text = find_repl
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
WordApp.Selection.Find.Execute Replace:=wdReplaceAll
Next col_idx
find_what和find_repl具有適當的值(「{} MODEL」和「F22-2」),我用錄製宏當相同的,但沒有更換製成。此代碼執行的唯一操作是在文檔中選擇文本「{MODEL}」。但它並沒有取代它,雖然它經歷了很多列和其他值(例如「{PRICE}」),但沒有發生任何其他事情。
我該如何解決這個問題?
你在引用添加到Word中Excel VBA項目?如果你不知道,Excel不會知道Word常量的值,比如'wdReplaceAll' –
將其作爲回答發佈,我會接受它:) – Sergi0