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」を使用したマクロの呼び出しが正常に機能することがわかります。しかし、変数に変更したため、型の競合のエラーが発生し、理由がわかりません。可変にする必要があります。
手伝って頂けますか?