2012-10-06 126 views
0

我不知道如何将Excel VBA上编写的VBA代码分配给某种程序/程序,或者可能是dos相关的文件路径,您可以直接打开excel。换句话说,我想要一个桌面图标,我可以激发我分配的vba代码。无需打开excel即可运行宏

+1

不能运行Excel的VBA宏'without'打开包含宏文件。如果你想要,你可以在隐藏模式下启动excel应用程序,然后在从VBS文件以隐藏模式打开文件后运行宏。 –

+1

我认为更好的方法是尝试VB.Net。我发现从VBA学习曲线到**简单** VB.Net无痛苦。 Express版本是免费的,如果您只想生产桌面工具,则限制不太可能成为问题。 –

+0

@Tony:这并不总是可能的。例如,在我的部门,我们为内部客户开发Excel工具,但我们无法访问VS许可证。 – ApplePie

回答

1

如果我的理解是正确的,你可以简单地写在一个文本文件VBS代码,并重新命名为.vbs的 (确保文件结尾可见在Windows)。双击该文件由Windows脚本主机执行。 VBS缺乏VBA的某些功能,但您可以使用CreateObject/GetObject进行很多操作。

+0

我对这种快捷方式的解决方案非常兴奋,但它给错误 – serhat

1

如果Excel宏中的VBA没有引用Excel对象,则可以将代码复制到文本文件中并将扩展名更改为.VBS。但是,VB脚本在使用类型时不喜欢它,只需从Dim语句中删除“AS something”。

我经常这样做以获得Intellisense的好处,我不会使用记事本。

如果我的假设是正确的,那么您可能希望将标签更改为VB脚本而不是Excel,以获得适当的帮助。

0

尽管学习曲线可能有点陡峭,但您可以考虑使用AutoHotKey。这允许您创建自己的脚本,并且如果需要的话将它们转换为(相当大的).exe文件。 AutoHotKey是免费的!

0

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

这可能是一个解决方案,但你可能正在做一些在正确的计划环境中不必要的东西。

1

你可以很容易地做到这一点。

将以下内容添加到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/