我有一个Excel VBA宏,在从批处理文件访问文件时需要运行它,但不是每次打开它时都需要运行它(因此不使用open file事件)。有没有办法从命令行或批处理文件运行宏?我不熟悉这样的命令。
假设是Windows NT环境。
发布于 2010-01-13 02:39:52
最简单的方法是:
1)从批处理文件启动Excel,打开包含宏的工作簿:
EXCEL.EXE /e "c:\YourWorkbook.xls"
2)从工作簿的Workbook_Open
事件调用宏,例如:
Private Sub Workbook_Open()
Call MyMacro1 ' Call your macro
ActiveWorkbook.Save ' Save the current workbook, bypassing the prompt
Application.Quit ' Quit Excel
End Sub
现在,这会将控件返回到批处理文件以进行其他处理。
发布于 2015-12-29 04:52:26
下面显示的方法允许从批处理文件中运行定义的Excel宏,它使用环境变量将宏名从批处理传递到Excel。
将此代码放入批处理文件(使用EXCEL.EXE
和工作簿的路径):
Set MacroName=MyMacro
"C:\Program Files\Microsoft Office\Office15\EXCEL.EXE" "C:\MyWorkbook.xlsm"
将此代码放入Excel VBA ThisWorkBook对象:
Private Sub Workbook_Open()
Dim strMacroName As String
strMacroName = CreateObject("WScript.Shell").Environment("process").Item("MacroName")
If strMacroName <> "" Then Run strMacroName
End Sub
并将代码放到Excel VBA模块中,如下所示:
Sub MyMacro()
MsgBox "MyMacro is running..."
End Sub
启动批处理文件并获得结果:
对于不打算运行任何宏的情况,只需将空值Set MacroName=
放入批处理即可。
发布于 2010-01-13 00:45:18
您可以编写一个vbscript来通过createobject()方法创建一个excel实例,然后打开工作簿并运行宏。可以直接调用vbscript,也可以从批处理文件中调用vbscript。
这是我刚刚偶然发现的一个资源:http://www.codeguru.com/forum/showthread.php?t=376401
https://stackoverflow.com/questions/2050505
复制相似问题