我在 Access 中有一个例程,即根据现有的模板文档创建一个新的 Word 文档。将模板保存到磁盘并打开后,我想更改 Word 文档中某些字段的结果。
在我看来,这样做的方法是将结果文本赋给一个新值,这是我在所有更改结果的引用中找到的。我正在这样做,并使用更新方法,但新文档仍然有旧结果,我无法更改它。
有谁可以帮忙吗?
Dim appWord As Word.Application
Dim fieldLoop As Word.Field
Set appWord = CreateObject("Word.application")
For Each fieldLoop In appWord.ActiveDocument.Fields
If InStr(1, fieldLoop.Code.Text, "Title", 1) Then
fieldLoop.Result.Text = “newname”
End If
If InStr(1, fieldLoop.Code.Text, "DocCode", 1) Then
fieldLoop.Result.Text = "newcode"
End If
If InStr(1, fieldLoop.Code.Text, "Category", 1) Then
fieldLoop.Result.Text = “newcategory”
End If
If InStr(1, fieldLoop.Code.Text, "Author", 1) Then
fieldLoop.Result.Text = "newauthor"
End If
Next fieldLoop
appWord.ActiveDocument.Fields.Update
答案1
您没有指定正在使用的字段类型,但根据您的 VBA 代码,您的最后一个命令appWord.ActiveDocument.Fields.Update
会将所有字段重置为原始字段“代码和类型”通常会生成的字段。
例如,如果您的字段代码为 Info 且类型为 Author,并且您的 VBA 例程将字段 Result 从文档作者的原始名称更改为 Albert Einstein,那么当您再次更新所有字段时,Result 将恢复为原始作者的姓名。
您正在更改的字段数据似乎是文档属性,如果您想永久更改这些属性,则必须更改属性值本身。文档属性有两种类型:内置和自定义。您必须知道您正在修改的属性类型,内置还是自定义。以下是永久修改文档属性的示例代码:
With ActiveDocument
.BuiltInDocumentProperties("Title").Value = "My Document Title"
.BuiltInDocumentProperties("Author").Value = "My Name"
.BuiltInDocumentProperties("Category").Value = "New Category"
.CustomDocumentProperties("DocCode").Value = "New DocCode"
End With