在不打开Excel的情况下运行宏

3

我想知道如何将在Excel VBA中编写的VBA代码分配给一种程序或文件路径,这样你就可以直接使用它而无需打开Excel。换句话说,我想要一个桌面图标,可以启动我分配的VBA代码。


1
你不能在不打开包含宏的文件的情况下运行Excel VBA宏。如果你想要,可以在隐藏模式下启动Excel应用程序,然后从VBS文件中以隐藏模式打开文件并运行宏。 - Siddharth Rout
1
我认为更好的方法是尝试使用VB.Net。我发现从VBA到简单的VB.Net的学习曲线非常平滑。Express版本是免费的,如果你只想制作桌面实用程序,那么限制不太可能成为问题。 - Tony Dallimore
发布你的代码,这样我们才能帮你解决Sid建议的[vbs]问题。 - brettdj
对于许多任务来说,Excel 的速度非常慢,因此找到其他程序从命令行运行宏(Excel 和 Word)将是很好的选择。 - skan
使用VBS怎么样? - Roshantha De Mel
显示剩余2条评论
5个回答

8
您可以轻松完成。
在一个VBS文件中添加以下内容(例如example.vbs)。这只是一个文本文件,您可以使用记事本编写:
'Code should be placed in a .vbs file
Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'C:\path\to\my\excel\file\myExcelMacroFile.xlsm'!MyModule.MyFunctionName"
objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing

您可以双击VBS文件来执行它。
来源:http://wellsr.com/vba/2015/excel/run-macro-without-opening-excel-using-vbscript/

如何使用上述行将参数传递给函数?假设MyFunctionName的输入参数为String。 - Nitin Rathod
@Nitin:显然,你需要在函数名称后面添加参数,用逗号作为分隔符,参见https://dev59.com/EmzXa4cB1Zd3GeqPPxVe(我没有测试过)。 - Julien Kronegg
这怎么成为最佳答案了?这个打开 Excel 并执行文件,不是问题所在… - Walter Verhoeven

3
如果Excel宏中的VBA未引用Excel对象,您可以将代码复制到文本文件中并将扩展名更改为.VBS。但是,VB脚本不喜欢使用类型,请从Dim语句中删除"AS something"。我经常这样做以获得Intellisense的好处,如果使用记事本,则无法获得该功能。如果我的假设是正确的,那么您可能想要将标签更改为VB脚本,而不是Excel,以获得适当的帮助。

2

如果我理解正确的话,您可以在文本文件中编写VBS代码,并将其重命名为.vbs(请确保在Windows中显示文件扩展名)。双击该文件后,Windows脚本宿主将执行该文件。虽然VBS缺少一些VBA的功能,但您可以通过CreateObject / GetObject完成许多任务。


我对这样一种简便而有力的解决方案感到非常兴奋,但它却出现了错误。 - serhat

0

虽然学习曲线可能有点陡峭,但你可以考虑使用AutoHotKey。这使您能够创建自己的脚本,并在需要时将它们转换为(相当大的).exe文件。AutoHotKey是免费的!


0

编写一个cmd或ps1文件,打开一个Excel,在该Excel的启动中运行您的宏...然后完成后关闭它。

这可能是一种解决方案,但在正确规划的环境中,您可能正在做一些不必要的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接