遍历 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()
现在您可以
构建整个两个数组(在 Word 中)并直接在代码中使用它们,如示例 Sub
或打开Excel文件并遍历每一行以在Word中执行替换
选项2更复杂
我有一个包含两列和 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()
现在您可以
构建整个两个数组(在 Word 中)并直接在代码中使用它们,如示例 Sub
或打开Excel文件并遍历每一行以在Word中执行替换
选项2更复杂