从另一个工作簿

从另一个工作簿

问题描述:

调用宏所以我有一个主Excel中有几个宏例如代码文件: Sub ExtractDate()Sub RemoveBlankSpaces()Sub ReMoveOlderDates()从另一个工作簿

我想要做的是每次我从服务器下载一个新的Excel电子表格时,我希望能够将那些在主excel文件中的相同宏应用到正在从服务器下载的文件中,而无需将master excel文件中的代码复制并粘贴到新文件中。

有没有办法做到这一点?

+0

解决此问题的一个好方法是将您的主Excel文件转换为加载项。以下是我在另一篇SO文章中写的一篇文章:http://*.com/questions/23135211/how-to-make-a-reusable-button-from-a-macro – 2015-01-15 16:06:07

+0

Hey Dan,谢谢答复。如果你可以澄清,那么我是否将你发布在另一个链接上的代码添加到我想要使用的宏的主excel文件中? – 2015-01-15 16:44:24

对任何Excel文件执行宏(你可以因此增加一些一致性检查规则到你的代码)的常用方法如下:

1)添加要始终执行到ThisWorkbook_Open事件的代码的主表。您可以从VBE访问事件,方法是单击模块树上的“This Workbook”,然后选择打开的事件。这是想法:

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

不要忘记添加一个最终的数据验证,如果想(例如,如果文件名是“本”,然后执行)

2)保存工作簿为“.xlam” ,给它的名称和你喜欢的位置(它只会创建一个副本,你不会覆盖原来的主工作簿)

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

4)进入浏览窗口,寻找你.xlam文件并将其添加到检查加载项

从现在开始,每次你打开一个Excel文件,该文件被称为在ThisWorkbook_Open事件的宏列表您的.xlam文件(从您的主工作簿生成)将被执行。

重要提示

如果您的宏还有诸如“ThisWorkbook.Range("A1")”,不要忘记用“ActiveWorbook”,以取代他们的主文件之前将其保存为.xlam,否则就会引用在加载项上运行宏,而不是在当前打开的工作簿中运行宏。如果您不想触摸原始文件,则始终可以将此代码编辑到外接程序中,该外接程序可以从VBE中的任何Excel实例访问它(如果启动外接程序,该树总会在那里)。

+0

@JamesCammer,你能发表一个快照吗?这真的很奇怪。你可能只是有一个旧的Excel,你有“.xla”吗? – 2015-01-16 15:18:31

+0

这是一个愚蠢的问题,我自己想清楚了。非常感谢Matteo!你是最棒的:) – 2015-01-16 15:19:59

+0

@JamesCammer没有问题,如果你认为未来可能会帮助别人解决同样的问题,请不要犹豫加入混淆之源! – 2015-01-16 15:21:35