我想使用 vbs 文件作为从 Java 访问 Excel 文件中的 vba 宏的桥梁。另外,我需要传输一些可变参数。
在 Java 中,我调用像这样打开 vbs 文件(工作正常):
String strFileName = "mappe2.xlsm"; //located in the same directory
String strMacroName = "showname";
String strParameter = "Myname";
String[] command = {"wscript.exe", f.getAbsolutePath(), strFileName, strMacroName, strParameter};
Process p = Runtime.getRuntime().exec(command);
在 Excel 中,我只是尝试调用这个简单的子:
Sub showname(strName As String)
MsgBox ("The name is: " & strName)
End Sub
我的(缩短的)vbs 文件如下所示:
Dim args, ExcelFileName, ExcelMacroName
Dim opt
Dim Command2
Set args = WScript.Arguments
ExcelFileName = args(0)
ExcelMacroName = args(1)
opt = Cstr(args(2))
Set objWbk = GetObject("E:\Mappe2.xlsm")
Command2 = ExcelFileName & "!" & "showname"
'objWbk.Application.Run Command2, "opt" 'This way it works!
objWbk.Application.Run Command2, opt 'Error: "Type conflict" occurs!
WScript.Quit
在这里你可以看到带有静态“opt”的宏调用工作正常。但由于我将其更改为变量,我得到类型冲突的错误,我不知道为什么。我需要让它可变。
你能帮助我吗?