遍历 excel 个文档以替换 word 中的单词

Iterating through excel document to replace words in word

我有一个包含两列和 100 行的 excel 文档。第一列是在word文档中要查找的词,第二列是我要替换搜索词的词。

我想遍历 excel table 中的每一行,并使用输入在 word 文档中进行搜索和替换。

我有在 Access 中使用 VBA 的经验,但我以前从未在 Word 或 Excel 中使用过它,所以我很困惑。

我认为可行的功能是:

function replace(find,replace)
with activedocument.content.find
.forward=True
.wrap=wdFindContinue
.Execute fintext:=find,replacewith:=replace,matchcase:=False,matchwholeword:=True
end with
end function

在 access 中,您将在事件中调用该函数,但 word 没有事件。我只想 运行 代码。当我 select 运行 出现一个要求我创建宏的表格时,我迷路了。

如何在 Word 中运行vba编码?

谢谢

到 运行 VBA Word 中的代码按 Alt-F8

它将显示一个表格,其中包含文档中所有可用的 Public 子或函数。

例如:

  • 打开 Word 文件和 VBA 编辑器 window (Alt-F11)
  • 点击菜单项:插入 -> 模块
  • 创建一个与此类似的 myFindAndReplace Sub:

Option Explicit

Public Sub myFindAndReplace()

    Const MAX_ITEMS As Long = 3
    Dim i As Long, arr1(1 To MAX_ITEMS) As String, arr2(1 To MAX_ITEMS) As String

    arr1(1) = "find1"
    arr1(2) = "find2"
    arr1(3) = "find3"

    arr2(1) = "replace1"
    arr2(2) = "replace2"
    arr2(3) = "replace3"

    With Application.ActiveDocument.Content.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        For i = 1 To MAX_ITEMS
            .Text = arr1(i)
            .Replacement.Text = arr2(i)
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .Execute Replace:=wdReplaceAll
        Next
    End With
End Sub

返回 Word,单击 Alt-F8,您将获得可用的宏:


Word 在 VBA 模块 ThisDocument 中(在您的文件名下的项目下)有以下事件:

  • Document_BuildingBlockInsert()
  • Document_Close()
  • Document_ContentControlAfterAdd()
  • Document_ContentControlBeforeContentUpdate()
  • Document_ContentControlBeforeDelete()
  • Document_ContentControlBeforeStoreUpdate()
  • Document_ContentControlOnEnter()
  • Document_ContentControlOnExit()
  • Document_New()
  • Document_Open()
  • Document_Sync()
  • Document_XMLAfterInsert()
  • Document_XMLBeforeDelete()

现在您可以

  1. 构建整个两个数组(在 Word 中)并直接在代码中使用它们,如示例 Sub

  2. 或打开Excel文件并遍历每一行以在Word中执行替换

选项2更复杂