VBA-Skript, um aus txt-Dateien eine Calc-Datei zu machen
Hallo zusammen,
bin neu im Forum und über die Suche schon teilweise zu meinem Problem fündig geworden. Wie mein Nickname allerdings verrät, habe ich keine Ahnung von VB-Skripten, Python, Javascript etc..
Ich habe einige import.txt-Dateien, die folgendermaßen aufgebaut sind:
Seminar Zeitmanagement 1
Teilnahmegebühr: €110.25
18 Teilnehmer
Gesamtlizenzen Windows: 5
Seminar Beginnt 2021/09/09 05:12:58 MEZ
Materialkosten: €0
Die Feldwerte sind lediglich in eigenen Zeilen eingetragen, ohne Trennzeichen etc.
Daraus werden soll nach Möglichkeit eine Libreoffice-Calc-Tabelle mit folgendem Aufbau:
Titel Seminar I Teilnehmer I Gebühr I Lizenzen I Materialkosten I Datum/Uhrzeit I
Und als Quelle sollen alle txt-Dateien aus einem bestimmten Ordner dienen, vorhandene Sätze(der Titel ist eindeutig) nach Möglichkeit aber nicht mit importiert werden. Und wenn wir das €-Zeichen noch wegbekommen, bin ich rundum glücklich. Und zukünftig neue Sätze unten anfügen sollte nach Möglichkeit auch gehen. Zur Not kann ich aber nach gewisser Zeit auch einfach eine neue Tabelle daraus machen und die neuen Daten per Copy&Paste unten dranhängen.
Für Excel gibt es ja das Power-Query-Tool, das steht mir aber leider nicht zur Verfügung, weshalb ich das vermutlich mit VBS/VBA machen muss. Habt Ihr da ein paar Tipps und evtl. Code für mich? Bin bisher eher in SQL-Abfragen unterwegs gewesen und dafür eine SQL-DB bauen lohnt glaube ich nicht für ein paar Hundert Dateien.....
Vielen Dank für Eure Hilfe!
Gruß
Tobias
bin neu im Forum und über die Suche schon teilweise zu meinem Problem fündig geworden. Wie mein Nickname allerdings verrät, habe ich keine Ahnung von VB-Skripten, Python, Javascript etc..
Ich habe einige import.txt-Dateien, die folgendermaßen aufgebaut sind:
Seminar Zeitmanagement 1
Teilnahmegebühr: €110.25
18 Teilnehmer
Gesamtlizenzen Windows: 5
Seminar Beginnt 2021/09/09 05:12:58 MEZ
Materialkosten: €0
Die Feldwerte sind lediglich in eigenen Zeilen eingetragen, ohne Trennzeichen etc.
Daraus werden soll nach Möglichkeit eine Libreoffice-Calc-Tabelle mit folgendem Aufbau:
Titel Seminar I Teilnehmer I Gebühr I Lizenzen I Materialkosten I Datum/Uhrzeit I
Und als Quelle sollen alle txt-Dateien aus einem bestimmten Ordner dienen, vorhandene Sätze(der Titel ist eindeutig) nach Möglichkeit aber nicht mit importiert werden. Und wenn wir das €-Zeichen noch wegbekommen, bin ich rundum glücklich. Und zukünftig neue Sätze unten anfügen sollte nach Möglichkeit auch gehen. Zur Not kann ich aber nach gewisser Zeit auch einfach eine neue Tabelle daraus machen und die neuen Daten per Copy&Paste unten dranhängen.
Für Excel gibt es ja das Power-Query-Tool, das steht mir aber leider nicht zur Verfügung, weshalb ich das vermutlich mit VBS/VBA machen muss. Habt Ihr da ein paar Tipps und evtl. Code für mich? Bin bisher eher in SQL-Abfragen unterwegs gewesen und dafür eine SQL-DB bauen lohnt glaube ich nicht für ein paar Hundert Dateien.....
Vielen Dank für Eure Hilfe!
Gruß
Tobias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1273488678
Url: https://administrator.de/contentid/1273488678
Ausgedruckt am: 24.11.2024 um 01:11 Uhr
1 Kommentar
Servus Tobias,
mein Vorschlag mach es doch gleich mit der Powershell (falls du unter Windows arbeiten solltest), ist weniger Tipparbeit .
Für VBA/VBS habe ich gerade nicht genügend Zeit (bin mit VBA eher unter MS Office unterwegs, den LibreOffice Dialekt müsste ich mir dann nochmal anschauen, kommt auch darauf an unter welchem OS du dies nutzt), wäre aber auch kein großes Problem.
#edit# Hab das ganze nach kurzer Einsicht in die API auch mal als Calc Dokument (*.ods) in LibreOffice Basic programmiert, das Demo-Dokument kannst du hier runterladen:
Beim Ausführen kommt als erstes ein Dialog in dem du den Ordner mit den *.txt Dateien wählen kannst.
Nicht vergessen die Makro-Sicherheit anzupassen damit die Makros auch laufen.
Extras => Optionen => Sicherheit => Makrosicherheit => mindestens "Mittel" wählen. und dann Calc neu starten.
Grüße Uwe
mein Vorschlag mach es doch gleich mit der Powershell (falls du unter Windows arbeiten solltest), ist weniger Tipparbeit .
# Quellordner mit den Textdateien
$folder = 'D:\quelle
# Ergebnis-CSV-Datei
$result = 'D:\result.csv'
# Importiere vorhandene CSV falls vorhanden
$csv = @()
if (Test-Path $result){
$csv = Import-CSV $result -Delimiter ";"
}
# jede *.txt Datei des Ordners verarbeiten
Get-ChildItem $folder -File -Filter *.txt | %{
# Inhalt der Datei auslesen
$content = Get-Content $_.Fullname
# custom object mit den Daten erstellen und ausgeben und gleichzeitig nur an csv anhängen wenn nicht schon vorhanden
[pscustomobject]@{
'Titel Seminar' = $content
'Gebühr' = ($content[1] -replace '[^\d+\.]+').replace('.',',')
'Teilnehmer' = ($content[2] -replace '[^\d]+')
'Lizenzen' = $content[3] -replace '[^\d+]'
'Datum/Uhrzeit' = [regex]::match($content[4],'\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}')
'Materialkosten' = $content[5] -replace '[^\d\.]'
}
} | ?{$_.'Titel Seminar' -notin $csv.'Titel Seminar'} | export-csv $result -Delimiter ";" -Encoding UTF8 -NoType -Append
#edit# Hab das ganze nach kurzer Einsicht in die API auch mal als Calc Dokument (*.ods) in LibreOffice Basic programmiert, das Demo-Dokument kannst du hier runterladen:
import_text_files_1273488678.ods
Beim Ausführen kommt als erstes ein Dialog in dem du den Ordner mit den *.txt Dateien wählen kannst.
Nicht vergessen die Makro-Sicherheit anzupassen damit die Makros auch laufen.
Extras => Optionen => Sicherheit => Makrosicherheit => mindestens "Mittel" wählen. und dann Calc neu starten.
Grüße Uwe