通过excel文档迭代替换单词中的单词

时间:2015-07-15 20:20:56

标签: vba excel-vba ms-word word-vba excel

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

我想遍历excel表中的每一行,并使用输入来搜索和替换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

在访问中,您将在事件中调用该函数,但单词没有事件。我只是想运行代码。当我选择运行一个表单,要求我创建一个宏时,我迷路了。

如何在Word中运行vba代码?

由于

1 个答案:

答案 0 :(得分:2)

要在Word中运行VBA代码,请按Alt-F8

它将在文档中显示包含所有可用公共子或函数的表单。

例如:

  • 打开Word文件和VBA编辑器窗口(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,您将获得可用的宏:

available macros form

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中执行替换

  3. 选项2更复杂