Calc: "Speichern unter..." als CSV für mehrere Tab
Verfasst: Do, 01.02.2007 15:31
Hallo,
ich bin gerade dabei mir mein erstes Makro zu basteln. Und zwar brauch ich eins welches mir alle Tabellen des aktuellen Dokuments als CSV speichert mit folgenden Optionen:
1. die Dateien sollen nach folgenden Schema benannt werden: "DateinameTabellenname.prn" (Dateiname ohne Endung)
2. die Dateien sollen im selben Ordner wie die Ursprungsdatei gespeichert werden
3. die Dateien sollen als Text (CSV) mit fester Spaltenbreite gespeichert werden
4. In der CSV Datei müssen die Kommas durch Punkte ersetzt sein.
5. und es wär schön schön, wenn nach ausführen des Skripts, wieder die Ursprungsdatei in OO offen wäre.
Soweit bin ich bisher gekommen:
Zu 1. Dachte ich mir dass ich den Dateinamen und Tabellename auslese und diese dann als String an die Save funktion übergebe.
Aber dass funktioniert leider noch nicht, warum?
Zu 2. so ähnlich:
Dass dann eben einsetzen:
Und da ich dass ja für mehrere Tabellen machen will, muss ich das Programm auch noch davon abhalten das Dokument zu schließen, wie mache ich das?
Zu. 4. Muss ich dafür einen zusätzlichen Befehl schreiben oder gibt es da eine andere Lösung?
Danke für alle Antworten,
Richard
ich bin gerade dabei mir mein erstes Makro zu basteln. Und zwar brauch ich eins welches mir alle Tabellen des aktuellen Dokuments als CSV speichert mit folgenden Optionen:
1. die Dateien sollen nach folgenden Schema benannt werden: "DateinameTabellenname.prn" (Dateiname ohne Endung)
2. die Dateien sollen im selben Ordner wie die Ursprungsdatei gespeichert werden
3. die Dateien sollen als Text (CSV) mit fester Spaltenbreite gespeichert werden
4. In der CSV Datei müssen die Kommas durch Punkte ersetzt sein.
5. und es wär schön schön, wenn nach ausführen des Skripts, wieder die Ursprungsdatei in OO offen wäre.
Soweit bin ich bisher gekommen:
Code: Alles auswählen
REM ***** BASIC *****
Sub Main
End Sub
sub export
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(3) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///F:/richard/Eigene%20Dateien/test/Datsheet1.prn"
args1(1).Name = "FilterName"
args1(1).Value = "Text - txt - csv (StarCalc)"
args1(2).Name = "FilterOptions"
args1(2).Value = "FIX,34,ANSI,1"
args1(3).Name = "SelectionOnly"
args1(3).Value = true
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
end sub
Code: Alles auswählen
dim docname as string
dim sheetname as string
docname = ThisComponent.CurrentController.Frame
sheetname = Document.CurrentController.Activesheet.Name
Zu 2. so ähnlich:
Code: Alles auswählen
dim directory as string
dirname = CurDir
Code: Alles auswählen
args1(0).Value = "dirname/docnamesheetname.prn"
Zu. 4. Muss ich dafür einen zusätzlichen Befehl schreiben oder gibt es da eine andere Lösung?
Danke für alle Antworten,
Richard