我有一个.AHK脚本来打开Excel工作表并按下键盘快捷键来执行宏。但是,我还想传递一个从命令行接收的参数(文件的路径),以某种方式作为参数传递给宏。我怎样才能做到这一点?
几点重点,我被迫打开excel表使用:
Run, file.xlsm
我不能使用创建excel对象的替代方法,然后使用该对象打开工作簿,然后使用相同的对象调用宏。
我的子程序如下:
Sub Test(String path)
Call Application.Run("EEC.SetTargetProject", path)
End Sub
我注意到,如果我的子程序有参数,我就不能指定一个快捷方式来调用子程序。因此,如果我删除参数以便子例程test
不带参数,那么我可以通过转到宏>选项>快捷键为其分配键盘快捷键。是否有其他方法可以在不使用Excel对象的情况下从AHK脚本调用宏?谢谢!
请尝试以下方法:
在VBA中使用此:
Sub Test()
path = InputBox("Please enter the path", "Input path")
Call Application.Run("EEC.SetTargetProject", path)
End Sub
在AHK中使用此:
WinActivate, file.xlsm
WinWaitActive, file.xlsm
Send, ^m ;Control + M - or any other shortcut you choose in Excel to trigger the macro
WinWaitActive, Input path
Send, %path_of_the_file_received_from_commandline%
Send, {ENTER}
AHK发送在Excel中运行宏的键盘快捷键。宏打开自己的输入框。 AHK检测到excel输入框,输入路径并按下回车键。