将值从AHK参数传递到VBA脚本中的子例程

时间:2018-11-08 05:37:20

标签: excel vba autohotkey

我有一个.AHK脚本来打开excel工作表,然后按键盘快捷键在其中执行宏。但是,我也想传递从命令行接收到的参数(文件的路径),以某种方式将其作为参数传递给宏。我该怎么办?

要点,我被迫使用以下方法打开Excel工作表:

Run, file.xlsm

我无法使用创建excel对象,然后使用该对象打开工作簿,然后使用同一对象调用宏的替代方法。

我的子程序如下:

Sub Test(String path)
    Call Application.Run("EEC.SetTargetProject", path)  
End Sub

我注意到,如果我有子例程的参数,则无法分配快捷方式来调用该子例程。因此,如果删除参数以使子例程test不带任何参数,则可以通过转到“宏”>“选项”>“快捷键”来为其分配键盘快捷键。还有其他一些方法可以在不使用Excel对象的情况下从AHK脚本调用宏吗?谢谢!

1 个答案:

答案 0 :(得分:0)

尝试以下操作:

在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输入框,输入路径并按Enter。