我有一个带宏的excel按钮。代码只是将工作簿的路径存储在可变名称“MyCompletePath”中。然后运行.vbs文件。代码是:
MyCompletePath = ActiveWorkbook.FullName
'Run VBS file
Shell "wscript C:\Users\name\Desktop\vb.vbs", vbNormalFocus
我想传递变量' MyCompletePath'从excel文件到使用最后一行执行的文件。
我做了一些搜索,但没有完全理解他们的解决方案做了什么。也许有人可以告诉我该怎么做。
更新/编辑:我现在遇到Shell" wscript之后的文件路径问题。它在文件夹名称中有空格。如何让它与名称中的空格一起使用?
谢谢。
答案 0 :(得分:2)
您可以在VBS文件的路径后包含命令行参数。例如:
Shell "wscript C:\Users\name\Desktop\vb.vbs BlahBlahBlah", vbNormalFocus
然后在VBS脚本中,您可以使用WScript.Arguments集合访问它们。例如:
MsgBox WScript.Arguments(0)
会弹出一个显示“BlahBlahBlah”的消息框。
对于文件路径,如您所指出的那样,可能包含空格,因此将被视为脚本的多个参数,我会将参数包含在引号中,如下所示:
Shell "wscript C:\Users\name\Desktop\vb.vbs ""this has multiple words""", vbNormalFocus
答案 1 :(得分:1)
基于passing argument from vba to vbs
当我在vba中写这个时:
Sub Macro1()
MyCompletePath = "toto"
Shell "wscript D:\\vb.vbs " & MyCompletePath
End Sub
,这在vb.vbs
中MsgBox("Hello " & WScript.Arguments(0))
我得到“Hello toto”