我有数百个 .doc word 文档,我需要在其中添加一个宏,该宏在 .doc 文件打开时运行,并根据文件名为所述文档创建标题。有没有办法批量做到这一点?我一直在单独打开每个文档并进入 Visual Basic --> Project --> This Document 然后插入一个包含代码的 .txt 文件。有没有一种快速的方法来处理多个文档?
2 回答
作为学习练习,将其放入 VBE 中 Normal(Normal.dot 模板)的“ThisDocument”部分
打开一个word文档,看看会发生什么。
我认为您不需要将代码放在每个文件中,我认为您应该可以在 Normal.dot 中使用 Document_Open 事件。
只需确保它在您打开的 Word 文档中显示为参考,但我不明白为什么它不会
如果您在每个文件中都绝对需要它,那么它可以完成,但问题是如果您对代码进行一个小的更改,您必须再次完成所有这些。代码的想法是编写一次,多次使用。
您可以编写更改其他文档中的 VBA 代码的 VBA 代码,但您需要在信任中心选项中“信任对 VBA 项目对象模型的访问”。如果您下载带有恶意 VBA 代码的 Word 文档,这可能会使您接触到病毒代码。本质上,您想要做的是编写 VBA 病毒。这样做有正当的理由,也有恶意的理由,我将使用这些技术的道德问题留给用户。知识本身并不是恶意的。
这是肉,您需要编写自己的代码来循环浏览文档并可能将它们保存为 .docm 文件。
Sub ReplaceCode()
Set oDoc = ActiveDocument
Set oComponents = oDoc.VBProject.VBComponents
For i = oComponents.Count To 1 Step -1
If oComponents(i).Type = 100 And oComponents(i).Name = "ThisDocument" Then
With oComponents(i).CodeModule
.DeleteLines 1, .CountOfLines
.AddFromFile "C:\ThisDocument.cls"
End With
End If
Next i
End Sub
此外,如果您通过从 VBA 导出来创建代码文件,则需要从 .cls 文件的顶部删除它:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
就个人而言,我会从 Excel 驱动它,可能使用工作表来保存要更新的文件或位置的列表,并使用另一个工作表来填充代码的更新文件列表。