将变量从Excel宏传递到.vbs文件

时间:2013-10-25 13:07:09

标签: vba excel-vba vbscript excel

我有一个带宏的excel按钮。代码只是将工作簿的路径存储在可变名称“MyCompletePath”中。然后运行.vbs文件。代码是:

MyCompletePath = ActiveWorkbook.FullName

'Run VBS file
Shell "wscript C:\Users\name\Desktop\vb.vbs", vbNormalFocus

我想传递变量' MyCompletePath'从excel文件到使用最后一行执行的文件。

我做了一些搜索,但没有完全理解他们的解决方案做了什么。也许有人可以告诉我该怎么做。

更新/编辑:我现在遇到Shell" wscript之后的文件路径问题。它在文件夹名称中有空格。如何让它与名称中的空格一起使用?

谢谢。

2 个答案:

答案 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”