批量添加宏到Word文档?

时间:2013-06-21 19:02:11

标签: vba ms-word word-vba

我有几百个.doc word文档,我需要添加一个宏,该宏在打开.doc文件时运行,并根据文件名为所述文档创建一个标题。有没有办法像批量那样做?我已经单独打开每个文档并进入visual basic - >项目 - >然后,此文档插入包含代码的.txt文件。有多快文件可以为多个文档执行此操作吗?

2 个答案:

答案 0 :(得分:1)

作为一项学习练习,请将其放入" ThisDocument" VBE中Normal(Normal.dot模板)的一部分

打开word文档,看看会发生什么。

我认为您不需要将代码放在每个文件中,我认为您应该可以使用Normal.dot中的Document_Open事件。

请确保它在您打开的Word文档中显示为参考但我不明白为什么它不会

如果你在每个文件中都绝对需要它,那么它可以完成,但问题是如果你对代码做了一个小的改动,你必须再次完成所有这些。代码的想法是写一次,多次使用。

答案 1 :(得分:0)

您可以编写VBA代码来更改其他文档中的VBA代码,但您需要在Trust Center选项中“信任对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中驱动它,可能使用工作表来保存要更新的文件或位置的列表,并使用另一张表来填充更新的文件列表。