从另一个工作簿调用宏

时间:2015-01-15 16:03:34

标签: excel vba excel-vba

所以我有一个主excel文件,其中包含多个宏的代码,例如: Sub ExtractDate()Sub RemoveBlankSpaces()Sub ReMoveOlderDates()

我想要做的是每次从服务器下载新的Excel电子表格时,我希望能够将主excel文件中的相同宏应用于从服务器下载的文件,而不必将主excel文件中的代码复制并粘贴到新文件中。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

在任何Excel文件上执行宏的常用方法(您可以在代码中添加一些一致性检查规则)如下:

1)将要始终执行的代码添加到主工作表的ThisWorkbook_Open事件中。您可以通过单击"此工作簿"来自VBE访问该事件。在模块树上,然后选择打开事件。这就是这个想法:

Private Sub ThisWorkbook_Open()
    ExtractDate
    RemoveBlankSpaces
    RemoveOlderDates
    'etc.
End Sub

如果需要,请不要忘记添加最终数据验证(例如,如果名称文件为"此"然后执行)

2)将此工作簿保存为&#34; .xlam&#34;,为其指定名称和您喜欢的位置(它只会创建一个副本,您不会覆盖原始主工作簿)< / p>

3)打开一个新的Excel文件,然后转到文件/选项/加载项,因此浏览(我的Excel是法语,名称可能略有不同,但这是逻辑)

4)在浏览窗口中,查找您的.xlam文件并将其添加到已检查的加载项列表中

从现在开始,每次打开Excel文件时,都会执行.xlam文件的ThisWorkbook_Open事件中调用的宏(从主工作簿生成)。

重要提示

如果您的宏中有&#34; ThisWorkbook.Range("A1")&#34;等引用,请不要忘记在主文件中用&#34; ActiveWorbook&替换它们#34;在将其保存为.xlam之前,否则您将在加载项上运行宏而不在当前打开的工作簿中运行宏。如果您不想触摸原始文件,可以随时将此代码编辑到加载项中,从VBE中的任何Excel实例访问该加载项(如果激活加载项,树将始终存在) 。