1

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

MyCompletePath = ActiveWorkbook.FullName

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

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

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

更新/编辑:我现在在Shell“wscript”之后的文件路径有问题。它在文件夹名称中有空格。我怎样才能让它与名称中的空格一起使用?

谢谢你。

4

2 回答 2

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
于 2013-10-25T13:22:30.440 回答
1

基于将参数从 vba 传递到 vbs

当我在 vba 中写下它时:

Sub Macro1()

MyCompletePath = "toto"

Shell "wscript D:\\vb.vbs " & MyCompletePath

End Sub

这在 vb.vbs

MsgBox("Hello " & WScript.Arguments(0))

我确实得到“Hello toto”

于 2013-10-25T13:20:37.710 回答