Hallo,
ich versuche folgendes Problem zu lösen.
Ich habe tausende von Bilddateien die eine reine Textdatei mit dem gleichen Namen (Worlddatei) erhalten sollen. Der Dateiname und die Daten die in der Textdatei erscheinen sollen werden in Calc berechnet, bzw liegen dort vor.
Meine bisherigen Versuche mit einem Makro, welches eine neue Textdatei mit dem Namen erstellen soll, scheitern leider schon im Ansatz. Das folgende Makro hab ich in ähnlicher Form gefunden und versucht anzupassen.
Sub Save
oDoc=thisComponent
Sheet = oDoc.Sheets(0) '[erstes Arbeitsblatt]
Cell = Sheet.getCellByPosition(0, 0) '[Zelle A1]
Filename = Cell.String
Path = "file:///C:/Temp/GK3/" '[Pfad anpassen bei Windows]
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FilterName"
args1(0).Value = "Text"
oDoc.storeAsUrl(Path & Filename & ".txt",args1())
End Sub
Mein 2ter Versuch als Seriendruck aus Writer heraus scheiterte an der fehlenden Übernahmemöglichkeit des Dateinamens aus den Daten von Calc heraus. Die Textdatei habe ich dann zwar, aber ich müsste Sie einzeln mit "speichern unter" als Textdatei ablegen. Bei mehreren Tausend Dateien etwas umständlich.
Wie kann ich die reine Textdatei erstellen lassen und die Tabelleneinträge die in verschiedenen Spalten vorliegen dann untereinander setzen?
Vielen Dank und einen schönen 1. Mai
Willi
Reine Textdatei(en) aus Calcdaten erstellen
Moderator: Moderatoren
Code: Alles auswählen
args1(0).Name = "FilterName"
args1(0).Value = "Text"
Es gibt keinen Exportfilter mit Namen "Text" für Calc (den gibt es nur für Writer)
Hier ist ein passender Thread:
viewtopic.php?t=11034&highlight=filtername
Erkläre wie Du vorgegangen bist, mir ist der Zusammenhang zwischen einer Calc-Datei und Seriendruck unklar, da sie ja nach obrigen Ausführungen nicht die Adressquelle sein dürfte.Mein 2ter Versuch als Seriendruck aus Writer heraus scheiterte an der fehlenden Übernahmemöglichkeit des Dateinamens aus den Daten von Calc heraus. Die Textdatei habe ich dann zwar, aber ich müsste Sie einzeln mit "speichern unter" als Textdatei ablegen.
Auch das müßtest Du erklären, denn so wie es dasteht schließt es natürlich einen einfachen Export aus, weil erst die Werte umsortiert werden müssen. Wie das am Besten ginge hängt von den Anforderungen ab die Du hast.und die Tabelleneinträge die in verschiedenen Spalten vorliegen dann untereinander setzen?
Gruß
Stephan
Hallo Stephan,
erstmal vielen Dank für deine Antwort. Den ersten Teil mit dem Filter versuche ich dann mal nachzuvollziehen. In dem angegebenen Thread wird ja eine Textdatei (csv) erstellt.
Zum besseren Verständnis, herauskommen soll eine Datei mit dem Namen XXXXX_XXXXX.jpw deren Inhalt besteht aus 6 untereinander aufgeführten Zahlen.
Alle Daten die zur Erstellung dieser Textdatei benötigt werden sind als einzelne Tabelleneinträge in der Calc-Tabelle vorhanden.
Die Tabelle hat die Einträge "Dateiname", "Start", "Wert1", "Wert2", "Ende", "Rechtswert", "Hochwert".
Mein erster Ansatz hatte bisher auch nicht berücksichtigt, dass eine Schleife durchlaufen werden muss bis alle Einträge der Tabelle abgearbeitet sind.
Was mir dann aber fehlt ist die korrekte Bezeichnung, welche aus dem entsprechenden Datenfeld stammen sollte. Die Ablage des Dokuments als reine Textdatei ist beim speichern ja auswählbar. Der Dateiname erhält dann aber, außer dem händischen Eintrag nur eine Aufzählung von 1 bis X, mit der ich dann wieder nichts anfangen kann.
Gruß
Willi
erstmal vielen Dank für deine Antwort. Den ersten Teil mit dem Filter versuche ich dann mal nachzuvollziehen. In dem angegebenen Thread wird ja eine Textdatei (csv) erstellt.
Zum besseren Verständnis, herauskommen soll eine Datei mit dem Namen XXXXX_XXXXX.jpw deren Inhalt besteht aus 6 untereinander aufgeführten Zahlen.
Alle Daten die zur Erstellung dieser Textdatei benötigt werden sind als einzelne Tabelleneinträge in der Calc-Tabelle vorhanden.
Die Tabelle hat die Einträge "Dateiname", "Start", "Wert1", "Wert2", "Ende", "Rechtswert", "Hochwert".
Mein erster Ansatz hatte bisher auch nicht berücksichtigt, dass eine Schleife durchlaufen werden muss bis alle Einträge der Tabelle abgearbeitet sind.
Der Seriendruck macht nichts anderes als die relevanten Daten aus der Calc-Tabelle in einem Textdokument untereinander zu setzen. Nach dem Speichern, drucken, versenden ist es ja möglich die Dateien als einzelne Dokumente zu speichern.Erkläre wie Du vorgegangen bist, mir ist der Zusammenhang zwischen einer Calc-Datei und Seriendruck unklar, da sie ja nach obrigen Ausführungen nicht die Adressquelle sein dürfte.
Was mir dann aber fehlt ist die korrekte Bezeichnung, welche aus dem entsprechenden Datenfeld stammen sollte. Die Ablage des Dokuments als reine Textdatei ist beim speichern ja auswählbar. Der Dateiname erhält dann aber, außer dem händischen Eintrag nur eine Aufzählung von 1 bis X, mit der ich dann wieder nichts anfangen kann.
Gruß
Willi
Ein Tag ohne Herausforderung ist ein langweiliger Tag.
Zum besseren Verständnis, herauskommen soll eine Datei mit dem Namen XXXXX_XXXXX.jpw deren Inhalt besteht aus 6 untereinander aufgeführten Zahlen.
Tja, keine Ahnung im ersten Post ist von *.txt als Dateiendung die Rede:
Code: Alles auswählen
oDoc.storeAsUrl(Path & Filename & ".txt",args1())
Was stimmt denn nun?
Ich nehme im Weiteren an das *.txt stimmt.
Ich würde das dann lieber direkt machen, geht ohnehin scheller als normal zu speichern.Alle Daten die zur Erstellung dieser Textdatei benötigt werden sind als einzelne Tabelleneinträge in der Calc-Tabelle vorhanden.
Die Tabelle hat die Einträge "Dateiname", "Start", "Wert1", "Wert2", "Ende", "Rechtswert", "Hochwert".
Mein erster Ansatz hatte bisher auch nicht berücksichtigt, dass eine Schleife durchlaufen werden muss bis alle Einträge der Tabelle abgearbeitet sind.
Stehen die Werte zeilenweise untereinander und die erste gültige Zeile gehr von A1 bis G1 und der Name der Tabelle ist "Tabelle1", sollte folgender Code reichen:
Code: Alles auswählen
Sub txt_exportieren()
i = 0
halt = 0
Do
dateiname = ThisComponent.Sheets().getByName("Tabelle1").GetCellByPosition(0,i).String
akt_datei = Freefile
open ConvertToURL("C:\Temp\GK3\" & dateiname & ".txt") for OutPut as akt_datei
For j = 1 To 6
Print #akt_datei, ThisComponent.Sheets().getByName("Tabelle1").GetCellByPosition(j,i).String
Next j
close #akt_datei
i = i + 1
If ThisComponent.Sheets().getByName("Tabelle1").GetCellByPosition(0,i).String = "" Then halt = 1
Loop While halt = 0
End Sub
Gruß
Stephan
Hallo Stephan,
Vielen Dank für das Makro, es funktioniert tadellos. Werde mich mal daran machen es in allen Einzelheiten zu verstehen.
Die Dateiendung ist jedoch tatsächlich jgw, aber die wird ja in dem Fall komplett aus der Tabelle genommen. Die Endung ".txt" habe ich für mich aus dem Makro entfernt.
Zum besseren Verständnis, gibt Freefile das Textformat vor?
Gruß
Willi
Vielen Dank für das Makro, es funktioniert tadellos. Werde mich mal daran machen es in allen Einzelheiten zu verstehen.
Die Dateiendung ist jedoch tatsächlich jgw, aber die wird ja in dem Fall komplett aus der Tabelle genommen. Die Endung ".txt" habe ich für mich aus dem Makro entfernt.
Zum besseren Verständnis, gibt Freefile das Textformat vor?
Gruß
Willi
Ein Tag ohne Herausforderung ist ein langweiliger Tag.