我一直在尝试将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 method”一样使用它吗?
答案 0 :(得分:0)
来自OpenOffice.org forums(我自己没有测试过):
Dim oSvc as object
oSvc = createUnoService("com.sun.star.system.SystemShellExecute")
Rem Launch notepad
oSvc.execute(ConvertToUrl("C:\windows\notepad.exe"), "", 0)
答案 1 :(得分:0)
我使用了Shell函数。在函数的第一个参数中,我添加了"工作表("设置")的所有等价物。单元格(2,2)& IPRODB& " -i" &安培; DateiAll_in&#34 ;.我替换了工作表("设置")。单元格(2,2)用于程序的直接路径,因为它更容易。所以它使用下面的代码:
Shell("C:\Program Files\*******\*****\*****.exe & IPRODB & "-i" & DateiAll_in",1,,True)