我一直在尝试将VBA for Excel代码转换为OpenOffice Calc(基本),现在我在访问外部程序(及其数据库)以生成稍后在代码中使用的输出时遇到问题。换句话说,我给出一个输入,调用程序,然后我想要一个输出文件。
在VBA中:
Prog = Worksheets("Settings").Cells(2, 2) & IPRODB & " -i " & DateiAll_in
Wait = True
Set sh = CreateObject("WScript.Shell")
RetVal = sh.Run(Prog, 0, Wait)
Worksheets("Settings").Cells(2, 2)
是程序的路径,IPRODB
是数据库的路径,"-i"似乎是程序的命令,DateiAll_in
是我之前在代码中创建的输入文件(.csv
)。
OpenOffice basic提供了打开外部程序的函数Shell(Pathname, Windowstyle, Param, bSync)
,但它将不一样,因为在VBA中的"运行方法"中,我运行的宏包含程序、程序的数据库和输入文件。(expression.Run(MacroName, varg1,varg2, (...)
)
有没有Shell函数的替代方案,或者我可以像在VBA中使用"run方法"一样使用它吗?
来自OpenOffice.org论坛(我自己没有测试):
Dim oSvc as object
oSvc = createUnoService("com.sun.star.system.SystemShellExecute")
Rem Launch notepad
oSvc.execute(ConvertToUrl("C:windowsnotepad.exe"), "", 0)
我使用了Shell函数。在函数的第一个参数中,我添加了"工作表("设置").Cells(2,2)&IPRODB&"-I"&DateiAll_In"的所有等价项。我替换了工作表("设置")。单元格(2,2)用于程序的直接路径,只是因为它更容易。所以它使用了下面的代码:
Shell("C:Program Files*****************.exe & IPRODB & "-i" & DateiAll_in",1,,True)