Pol*_*ron 73 excel command-line vba batch-file
我有一个Excel VBA宏,我需要在从批处理文件访问文件时运行,但不是每次我打开它(因此不使用打开的文件事件).有没有办法从命令行或批处理文件运行宏?我不熟悉这样的命令.
假设一个Windows NT环境.
Rob*_*rns 81
您可以启动Excel,打开工作簿并从VBScript文件运行宏.
将下面的代码复制到记事本中.
更新" MyWorkbook.xls "和" MyMacro "参数.
使用vbs扩展名保存并运行它.
Option Explicit
On Error Resume Next
ExcelMacroExample
Sub ExcelMacroExample()
Dim xlApp
Dim xlBook
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\MyWorkbook.xls", 0, True)
xlApp.Run "MyMacro"
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
运行宏的关键是:
xlApp.Run"MyMacro"
小智 20
最简单的方法是:
1)从批处理文件启动Excel以打开包含宏的工作簿:
EXCEL.EXE /e "c:\YourWorkbook.xls"
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
现在,这将把控件返回到批处理文件以进行其他处理.
您可以编写一个 vbscript 通过 createobject() 方法创建 excel 实例,然后打开工作簿并运行宏。您可以直接调用 vbscript,也可以从批处理文件调用 vbscript。
这是我刚刚偶然发现的资源: http://www.codeguru.com/forum/showthread.php ?t=376401
下面显示的方法允许从批处理文件运行定义的Excel宏,它使用环境变量将批处理中的宏名称传递给Excel。
将此代码放入批处理文件(使用您EXCEL.EXE的工作簿路径):
Set MacroName=MyMacro
"C:\Program Files\Microsoft Office\Office15\EXCEL.EXE" "C:\MyWorkbook.xlsm"
Run Code Online (Sandbox Code Playgroud)
将此代码放入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
Run Code Online (Sandbox Code Playgroud)
并将您的代码放入Excel VBA模块,如下所示:
Sub MyMacro()
MsgBox "MyMacro is running..."
End Sub
Run Code Online (Sandbox Code Playgroud)
启动批处理文件并获取结果:
对于不打算运行任何宏的情况,只需将空值添加Set MacroName=到批处理中即可。