Hallo habe da ein kleines Problem, ich versuche eine Calc Datei mit 2 Tabellen in jeweils eine .csv Datei zu speichern. Das Funktioniert soweit auch, allerdings müssen die Felder mit {TAB} getrennt sein und der Text mit | getrennt . Diese Einstellung bekomme ich im Makro nicht hin. Soweit ich das ganze in den Dokus verstanden habe geht das mit "FilterFlags" allerdings hab ich nirgendwo in den ganzen Dokus was dazu gefunden.
Hier mal mein Makro:
sub csv_speichern
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/Export/tabelle1.csv"
args1(1).Name = "FilterName"
args1(1).Value = "Text - txt - csv (StarCalc)"
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Nr"
args2(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "URL"
args3(0).Value = "file:///C:/Export/tabelle2.csv"
args3(1).Name = "FilterName"
args3(1).Value = "Text - txt - csv (StarCalc)"
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args3())
end sub
Für eine kurze anregung oder einen Link wäre ich sehr dankbar
Twist
sxc als .csv mit Filteroptionen per Marko speichern
Moderator: Moderatoren
dieses Dokument:
http://api.openoffice.org/basic/man/tut ... torial.pdf
Seite 41ff. sollte helfen.
Gruß
Stephan
http://api.openoffice.org/basic/man/tut ... torial.pdf
Seite 41ff. sollte helfen.
Gruß
Stephan
Hi, vielen Dank für den Tip, hat funktioniert.
Hier das Makro, es speichert zuerst die Änderungen in der Datei, danach werden die Kopfzeilen aus den beiden Tabellen gelöscht. Anschließend werden die beiden Tabellen jeweils als eine Datei in c:\exporte\... mit Feldtrenner {tab} und Texttrenner | exportiert und OpenOffice schließt sich.
===============================================
sub csv_speichern
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
dim oDocument As Object
oDocument = ThisComponent
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oDocument.store(true)
Dim Doc As Object
Dim Sheet As Object
Dim NewColumn As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
Sheet.Rows.removeByIndex(0, 1)
Sheet = Doc.Sheets(1)
Sheet.Rows.removeByIndex(0, 1)
rem ----------------------------------------------------------------------
Dim mFileProperties(1) As New com.sun.star.beans.PropertyValue
Dim oDoc as Object, sURL as String
Dim aFileProperties() as New com.sun.star.beans.propertyValue
oDoc = ThisComponent
sUrl = "file:///c:/exporte/tabelle1.csv"
mFileProperties(0).Name = "FilterName"
mFileProperties(0).Value = "Text - txt - csv (StarCalc)"
mFileProperties(1).Name = "FilterFlags"
mFileProperties(1).Value = "9,124,SYSTEM,2,1/1/2/1/3/1/4/1/5/1/6/1"
oDoc.storeAsUrl( sUrl, mFileProperties())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Nr"
args2(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args2())
rem ----------------------------------------------------------------------
rem Dim mFileProperties(2) As New com.sun.star.beans.propertyValue
rem Dim oDoc as Object, sURL as String
rem Dim aFileProperties() as New com.sun.star.beans.propertyValue
oDoc = ThisComponent
sUrl = "file:///c:/exporte/tabelle2.csv"
mFileProperties(0).Name = "FilterName"
mFileProperties(0).Value = "Text - txt - csv (StarCalc)"
mFileProperties(1).Name = "FilterFlags"
mFileProperties(1).Value = "9,124,SYSTEM,2,1/1/2/1/3/1/4/1/5/1/6/1"
oDoc.storeAsUrl( sUrl, mFileProperties())
document.close(true)
end sub
Hier das Makro, es speichert zuerst die Änderungen in der Datei, danach werden die Kopfzeilen aus den beiden Tabellen gelöscht. Anschließend werden die beiden Tabellen jeweils als eine Datei in c:\exporte\... mit Feldtrenner {tab} und Texttrenner | exportiert und OpenOffice schließt sich.
===============================================
sub csv_speichern
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
dim oDocument As Object
oDocument = ThisComponent
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oDocument.store(true)
Dim Doc As Object
Dim Sheet As Object
Dim NewColumn As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
Sheet.Rows.removeByIndex(0, 1)
Sheet = Doc.Sheets(1)
Sheet.Rows.removeByIndex(0, 1)
rem ----------------------------------------------------------------------
Dim mFileProperties(1) As New com.sun.star.beans.PropertyValue
Dim oDoc as Object, sURL as String
Dim aFileProperties() as New com.sun.star.beans.propertyValue
oDoc = ThisComponent
sUrl = "file:///c:/exporte/tabelle1.csv"
mFileProperties(0).Name = "FilterName"
mFileProperties(0).Value = "Text - txt - csv (StarCalc)"
mFileProperties(1).Name = "FilterFlags"
mFileProperties(1).Value = "9,124,SYSTEM,2,1/1/2/1/3/1/4/1/5/1/6/1"
oDoc.storeAsUrl( sUrl, mFileProperties())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Nr"
args2(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args2())
rem ----------------------------------------------------------------------
rem Dim mFileProperties(2) As New com.sun.star.beans.propertyValue
rem Dim oDoc as Object, sURL as String
rem Dim aFileProperties() as New com.sun.star.beans.propertyValue
oDoc = ThisComponent
sUrl = "file:///c:/exporte/tabelle2.csv"
mFileProperties(0).Name = "FilterName"
mFileProperties(0).Value = "Text - txt - csv (StarCalc)"
mFileProperties(1).Name = "FilterFlags"
mFileProperties(1).Value = "9,124,SYSTEM,2,1/1/2/1/3/1/4/1/5/1/6/1"
oDoc.storeAsUrl( sUrl, mFileProperties())
document.close(true)
end sub