2

我正在尝试将变量传递给以下代码集:

从编写的控制台应用程序C#

static void Main(string[] args) {

    string myPath = @"R:\xxx\xxx\xxx\test.vbs";
    Process p = new Process();
    ProcessStartInfo ps = new ProcessStartInfo(myPath,"hello");
    p.StartInfo = ps;
    p.Start();

    Console.WriteLine("press [enter] to exit");
    Console.ReadLine();

}

进入以下test.vbs文件:

strFolder = Wscript.Arguments.Item(0)
Set XL=CreateObject("Excel.Application") 
XL.Visible=True 
XL.Workbooks.Open "\\xxx\xxx\xxx\PassInVariable.xlsm",,True
XL.Run "'PassInVariable.xlsm'!xxx", strFolder   '<<<<<<<<<<<<<<PROBLEM SEEMS TO BE HERE
XL.Workbooks("PassInVariable.xlsm").close false
XL.quit
Set XL=nothing

然后在PassInVariable.xlsm文件中我有以下内容:

Option Explicit
Sub xxx(x As String)

MsgBox x

End Sub

似乎文件中的变量strFolderVBScript问题所在,因为如果我将其替换为诸如“hello”之类的文字,则该变量将移动到 excel VBA 中。

如何修复 vbs 文件以使变量向下传递?

4

1 回答 1

4

VBScript 中的所有变量都是Variants。您不能将按引用传递给需要Variant按引用字符串的方法。但是,您可以按值传递它,因为这样解释器将为您进行转换。

修复你Sub xxxSub xxx(ByVal x As String).

于 2013-01-27T21:51:02.947 回答