从Excel替换Word文档中的文本

时间:2014-03-27 01:10:56

标签: excel vba excel-vba ms-word

我需要遍历excel表中的一行并使用单元格值在Word文档中进行替换。我使用记录宏来获取代码,它实际上替换了文本。但是当我从Excel宏中使用它时,它不起作用。

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}”),但没有其他事情发生。
我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

除非在Excel VBA项目中添加对Word对象库的引用,否则Excel不会知道Word常量的值,例如wdReplaceAll。

您可以添加引用,在Excel VBA中声明常量,也可以使用常量'相反的值(可以在Word VBA对象浏览器中找到)