我正在尝试编写一段时间的脚本,但似乎它的一部分不起作用.
情况:我需要一个VB脚本,可以在任何Windows XP或7系统上使用任何LibreOffice(/ OpenOffice)Calc(在我的情况下为3.5.4)安装,以便将xls导出到csv(与csv文件一样多的csv文件) XLS).在这种情况下,它必须是VBS和LibreOffice.没有安装宏,一切由vbscript外部控制.
因此,第一步是使用宏录制器以获得正确的滤镜设置.
StarBasic宏:
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/Users/lutz/Desktop/test.csv"
args1(1).Name = "FilterName"
args1(1).Value = "Text - txt - csv (StarCalc)"
args1(2).Name = "FilterOptions"
args1(2).Value = "9,0,76,1,,0,false,true,true"
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
Run Code Online (Sandbox Code Playgroud)
此宏(在LibreOffice中)写入当前工作表的CSV(在LO告诉我仅保存当前工作表之后),编码UTF-8,字段分隔符Tab,没有文本分隔符.这有效.
我试图让这个在我的vbs中工作,但绝对没有.所以我在OpenOffice和LibreOffice论坛中搜索了很多,这里是stackoverflow等,并使用了另一种方法.
问题:每次保存文件时,无论我使用哪种过滤器或过滤器选项,它都会将它们保存为ODS.它总是保存到压缩的OpenDocument.我尝试了很多过滤器,甚至PDF.当我只使用FilterName属性时它似乎与pdf一起使用但不知何故它不再起作用.我不知道为什么.
代码:
' Scripting object
Dim wshshell
' File system object
Dim objFSO
' OpenOffice / LibreOffice Service …Run Code Online (Sandbox Code Playgroud)