Excel zur Textdatei Wandeln
Hallo ich versuch mich gerade an einer mir fast unlöslichen Aufgabe aber ich bin zuversichtlich,
daß ich hier Hilfe finde bei euch.
Ich habe von meinem Chef den Wunsch eine Dateiverarbeitung zu basteln.
Hier müssen feste Daten in der neuen Datei eingegeben werden.
Zusätzlich wird ein "Counter" benötigt und eine Abfrage in der Excel um zu schauen
was in die neue Textdatei rein soll.
SChon mal ein Dankeschön für alle Antworten und jede Hilfe hier im Forum.
Dann versuch ich mal die Idee zu beschreiben.
Grundbaustein ist eine Exceldatei die in mehreren Spalten unterschiedliche Infos stehen hat.
A = Artikelnummer
B = Menge
C = Artikelname
D = Preis
usw.
Hier brauchen wir nur die Informationen aus Spalte A und B.
Es soll geschaut werden ob ab zeile 2 eine Artikelnummer steht und in Menge was eingetragen ist.
Steht was in Menge sollen diese Infos in die neue Datei und dann weiter in die nächste Zeile und suchen.
Wenn keine Menge angegeben ist soll in der nächsten Zeile weitersuchen ohne etwas in die neue Datei einzutragen.
Findet er in Spalte A keine Artikelnummer mehr ist er fertig.
Aufbau der neune Datei (Textdatei)
K;Bestellung vom Kunden;10007;
D;1;4008;60;JA;
In der ersten Zeile haben wir die Kofzeile, bei der sich nur die Kundennummer (10007)
ändern kann.
in der zweiten Zeile haben wir
D = neue Datenzeile
1 = Positionsnummer (Counter der fortlaufen muss 1,2,3,4 usw.)
4008 = Artikelnummer (aus der Excel wie oben beschrieben)
60 = Menge (aus der Excel wie oben beschrieben)
JA = Befehlsparameter für die Spätere Verarbeitung
Beispiel mit 3 Artiekeln die in der Excel gefunden wurden.
K;Bestellung vom Kunden;10007;
D;1;4008;60;JA;
D;2;33;5;JA;
D;3;257;10;JA;
So nun habe ich selber auch schon ein Wenig probiert aber komme nicht weiter.
Ich habe hier schon eine Abfrage drin für die Kopfzeile, damit man die Kundennummer
eintragen kann zu der bestellung die per Excel übergeben wird.
Hier mal das was ich als nützlich finde
@echo off & setlocal enabledelayedexpansion
set "out=R:Excelbearbeitung\Kundenbestellung in Excel\Dateien\Kunden.txt"
set "cnt=0"
echo Bitte geben Sie die Kundennummer ein:
set /p "num=
set /a "cnt+=1"
>>"%out%" echo D;!cnt!;%%s;%%t;Ja;
)
Ich dank euch schon mal für eure Hilfe und hoffe, daß ihr mir helfen könnt.
Mit freundlichem Gruß Underdog81
daß ich hier Hilfe finde bei euch.
Ich habe von meinem Chef den Wunsch eine Dateiverarbeitung zu basteln.
Hier müssen feste Daten in der neuen Datei eingegeben werden.
Zusätzlich wird ein "Counter" benötigt und eine Abfrage in der Excel um zu schauen
was in die neue Textdatei rein soll.
SChon mal ein Dankeschön für alle Antworten und jede Hilfe hier im Forum.
Dann versuch ich mal die Idee zu beschreiben.
Grundbaustein ist eine Exceldatei die in mehreren Spalten unterschiedliche Infos stehen hat.
A = Artikelnummer
B = Menge
C = Artikelname
D = Preis
usw.
Hier brauchen wir nur die Informationen aus Spalte A und B.
Es soll geschaut werden ob ab zeile 2 eine Artikelnummer steht und in Menge was eingetragen ist.
Steht was in Menge sollen diese Infos in die neue Datei und dann weiter in die nächste Zeile und suchen.
Wenn keine Menge angegeben ist soll in der nächsten Zeile weitersuchen ohne etwas in die neue Datei einzutragen.
Findet er in Spalte A keine Artikelnummer mehr ist er fertig.
Aufbau der neune Datei (Textdatei)
K;Bestellung vom Kunden;10007;
D;1;4008;60;JA;
In der ersten Zeile haben wir die Kofzeile, bei der sich nur die Kundennummer (10007)
ändern kann.
in der zweiten Zeile haben wir
D = neue Datenzeile
1 = Positionsnummer (Counter der fortlaufen muss 1,2,3,4 usw.)
4008 = Artikelnummer (aus der Excel wie oben beschrieben)
60 = Menge (aus der Excel wie oben beschrieben)
JA = Befehlsparameter für die Spätere Verarbeitung
Beispiel mit 3 Artiekeln die in der Excel gefunden wurden.
K;Bestellung vom Kunden;10007;
D;1;4008;60;JA;
D;2;33;5;JA;
D;3;257;10;JA;
So nun habe ich selber auch schon ein Wenig probiert aber komme nicht weiter.
Ich habe hier schon eine Abfrage drin für die Kopfzeile, damit man die Kundennummer
eintragen kann zu der bestellung die per Excel übergeben wird.
Hier mal das was ich als nützlich finde
@echo off & setlocal enabledelayedexpansion
set "out=R:Excelbearbeitung\Kundenbestellung in Excel\Dateien\Kunden.txt"
set "cnt=0"
echo Bitte geben Sie die Kundennummer ein:
set /p "num=
"%out%" echo K;Bestellung vom Kunden;%num%;
for /f "usebackq tokens=1,2 delims=," %%s in ("%~dpn1.csv") do (set /a "cnt+=1"
>>"%out%" echo D;!cnt!;%%s;%%t;Ja;
)
Ich dank euch schon mal für eure Hilfe und hoffe, daß ihr mir helfen könnt.
Mit freundlichem Gruß Underdog81
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 190333
Url: https://administrator.de/forum/excel-zur-textdatei-wandeln-190333.html
Ausgedruckt am: 24.12.2024 um 12:12 Uhr
3 Kommentare
Neuester Kommentar
Hallo Underdog81!
Bis auf die Tatsache, dass die CSV-Datei etwas abenteuerlich festgelegt wird, könnte das etwa so gehen:
Da die Spalte 2 leer sein kann und dann 2 Kommata aufeinander folgen, diese aber von der "
Grüße
bastla
P.S.: Den Threadtitel solltest Du noch überarbeiten, da die Ausgangsdatei ja bereits im CSV- (und nicht im Excel-)Format vorliegt (dann wäre VBS/VBA, nicht Batch das richtige Werkzeug) ...
Bis auf die Tatsache, dass die CSV-Datei etwas abenteuerlich festgelegt wird, könnte das etwa so gehen:
@echo off & setlocal enabledelayedexpansion
set "out=Kunden.txt"
set /a cnt=0
set /p num=Kundennummer:
>"%out%" echo K;Bestellung vom Kunden;%num%;
for /f "usebackq skip=1 delims=" %%i in ("%~dpn1.csv") do (
set "Zeile=%%i"
for /f "tokens=1-2 delims=," %%s in ("!Zeile:,,=,§,!") do (
if "%%t" neq "§" (
set /a "cnt+=1"
>>"%out%" echo D;!cnt!;%%s;%%t;Ja;
)
)
)
for
"-Schleife als nur ein Trennzeichen interpretiert würden, muss vorweg ein Kennzeichen (§) für eine leere Spalte eingetragen werden - dieses kann dann abgefragt werden, um eine nicht vorhandene Menge zu erkennen.Grüße
bastla
P.S.: Den Threadtitel solltest Du noch überarbeiten, da die Ausgangsdatei ja bereits im CSV- (und nicht im Excel-)Format vorliegt (dann wäre VBS/VBA, nicht Batch das richtige Werkzeug) ...