繁体   English   中英

VBA-如何在不打开另一个工作簿的情况下运行它?

[英]VBA - How run a Macro from another workbook without opening it?

我想将我所有的VBA项目保存在Excel工作簿(或其他类型的文件,如果可能)中,然后将其嵌入以在另一个工作簿中运行。 我看过有关它的主题,但只找到了运行第一张表的宏的方法。

我想在第二个工作簿中的第一个工作簿中运行宏,而无需打开第一个工作簿来执行此宏。 我怎样才能做到这一点?

将带有宏的文件另存为xlam文件,每次打开Excel时Excel都可以加载它们。

您需要打开文件->选项->加载项。

底部有一个转到按钮(或某些名称,我在当前计算机上没有英文Excel。)
然后,通过单击浏览并找到刚刚保存为xlam文件的文件,将文件添加到列表中。

我想到两种情况:

1)您还有另一个供个人使用的宏,可以将其保存在本地(保存在: %USERPROFILE%\\ AppData \\ Roaming \\ Microsoft \\ Excel \\ XLSTART )。 这将允许您为宏等创建快捷按钮。这些类型的宏可通过Excel打开,并且将在默认VBA编辑器中作为单独的VBA项目。

2)您有多个用户需要访问的网络或驱动器,因此每个用户的文件中都有一个宏(.xlsm或.xlsb),该内部宏读取Application。运行“ filepath \\ workbookname.xlsb!macro”,这也允许您调用私有子例程(请注意,您可以使用Call,但是Application.Run将确保甚至可以访问Private宏)。 尽管我本人已经有一个用户的计算机始终打开另一个文件,但这不应该要求打开另一个工作簿。


编辑:

第三种情况(确实是2b):

3)您有要定期访问另一个文件的文件...您将采用类似的方法指向要在Application.Run上创建宏的第2点,尽管您可以将该宏保存在XLSTART文件夹中...允许您在其他人也可能想要访问和利用的源宏位置。 文档将允许您为许多用户维护1个文件。

您的回答很棒! 很高兴从@Cyril了解XLSTART文件夹,但是基于@Andreas回答,我找到了自己的路径。

如@Andreas所说,添加外接程序的“问题”是因为我的VBA项目将在VB编辑器上可用于该计算机上的每个工作簿,并且要运行我的宏,我必须使用Application.Run(“ workbook.xlam!Macro”)。

然后,我发现引用具有相同的功能,包括可以删除.xlam文件以删除代码,并且没有上面提到的问题。

添加我的VBA .xlam文件作为参考,它仅适用于该特定工作簿,并且我可以像在同一工作簿上一样运行宏。

一般知识:

添加参考:

1-将项目另存为Excel加载项(.xlam文件)

2-打开目标工作簿,转到Visual Basic编辑器

3-转到工具>引用>浏览...,找到您的.xlam文件并确保已选中它。

4-完成! 现在,您将在编辑器上看到该项目,并且可以像在同一工作簿上一样运行宏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM