underdog81
Goto Top

Inhalt einer xls in eine .txt inc. Kopfzeile und festen Daten

Hallo Forum,
da ich hier schon sehr guter Erfahrungen gemacht habe und auch viel Unterstützung
bekomme wende ich mich wieder an euch und denke es ist für euch ein klax.

Ich komm mal gleich auf dem Punkt face-wink

ich bekomme vom Kunden eine Tabell mit dem Inhalt

Artikelnummer = 32 und 441 im Beispiel
Menge = 3 und 17 im Beispiel

gans Simpel also 2 Spalten

Artikelnummer | Menge
32 | 3
441 | 17


Ich brauche jetzt die Zahlen in eine .txt (Bestellung vom Kunden.txt)
,dazu aber einen variabelen Wert (Couter),fixe Daten und eine Kopfzeile

Kopfzeile= "K;Bestellung vom Kunden;22694"
Fixer Wert= "D"
variabeler Wert = 1 2 3 4 usw. (Counter)
Artikelnummer = 32 und 441 im Beispiel
Menge = 3 und 17 im Beispiel
und zum Schluss ein "Ja"
Wichtig sind die ";" hinter jedem Wert.

Hier ein Beispiel wie es in der .txt aussehen muss.
K;Bestellung vom Kunden;22694;
D;1;32;3;Ja;
D;2;441;17;Ja;


Ich hoffe ich hab es ordentlich beschrieben und ihr habt mich verstanden.
Vielen Dank schon einmal im Vorraus für eure Antworten.

Content-ID: 185474

Url: https://administrator.de/contentid/185474

Ausgedruckt am: 23.11.2024 um 00:11 Uhr

hajowe
hajowe 25.05.2012 um 10:18:08 Uhr
Goto Top
Hallo underdog.

Excel Datei öffnen
Dann speichern unter csv

Gruß
Underdog81
Underdog81 25.05.2012 um 10:22:20 Uhr
Goto Top
Zitat von @hajowe:
Hallo underdog.

Excel Datei öffnen
Dann speichern unter csv

Gruß


Hallo,

Leider habe ich dann immernoch keine Kopfzeile, die Fixen Daten und den Counter nicht in der .txt sondern nur die Angabe Artikelnummer und Menge.
Skyemugen
Skyemugen 25.05.2012 aktualisiert um 15:53:24 Uhr
Goto Top
Aloha,

ohne csv werde ich zur Sau face-wink nun, zumindest batch, wenn man ihr keinen vbs-inliner reindrücken möchte.

Nachfrage: Kopfzeile - Woher soll die Nummer genommen werden, als Eingabe oder kann die irgendwo ausgelesen werden?
Stehen Artikelnummer und Menge in der Datei vom Kunden in Zeile 1? Dein Beispiel ist unklar.

edit: code gelöscht, untere codes werden fortan genutzt face-wink

Soll die Datei eigentlich per drag&drop bearbeitet werden oder automatisch die neueste in einem Verzeichnis oder wie oder was?

greetz André


edit: Ah, mal der Spaß mit drag&drop der .xls (immer noch ausgehend, dass die .xls wie folgt aussiehtface-smile
Artikelnummer|Menge
1234|1
23456|2

Dazu erst einmal
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1

    FullName = objArgs(I)
    FileName = Left(objArgs(I), InstrRev(objArgs(I), ".") )  

    Set objExcel = CreateObject("Excel.application")  
    set objExcelBook = objExcel.Workbooks.Open(FullName)

    objExcel.application.visible=false
    objExcel.application.displayalerts=false

    objExcelBook.SaveAs FileName & "csv", 23  

    objExcel.Application.Quit
    objExcel.Quit   

    Set objExcel = Nothing
    set objExcelBook = Nothing

Next
als z.B. convert_xls_csv.vbs speichern
und dann mit
@echo off & setlocal enabledelayedexpansion
REM Konvertierung
set "csv=E:\Skripte\convert_xls_csv.vbs"  
cscript //nologo "%csv%" %1  
pause
REM Bearbeitung
set "out=E:\Skripte\Kunden.txt"  
set "cnt=0"  
echo Bitte geben Sie die Nummer 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;  
)
pause
den Rest verarbeiten lassen ... (noch immer mit der Nummer als Eingabe, bis der TE sich mal wieder meldet ^__^)

Dazu einfach die .xls auf die .bat (bzw. cmd) ziehen
Underdog81
Underdog81 25.05.2012 um 12:08:48 Uhr
Goto Top
Ja die .xls des Kunden hat nur als Inhalt die Zahlen der Artikelnummer und Menge

Ich werde gleich mal probieren, aber leider schnalle ich nicht
was du mir da geschrieben hast face-sad ich will aus einer .xls eine .txt machen.
ich würde dir ja gerne die Dateien hochladen aber ich finde die Funktion hier nirgends.
schön wäre ein .vbs das es alles macht, wenn man es ausführt.
Skyemugen
Skyemugen 25.05.2012 aktualisiert um 14:16:24 Uhr
Goto Top
Zitat von @Underdog81:
Ja die .xls des Kunden hat nur als Inhalt die Zahlen der Artikelnummer und Menge
Gut, meine Frage war zwar anders und es würde jetzt nein heißen aber ...
Ich werde gleich mal probieren, aber leider schnalle ich nicht
was du mir da geschrieben hast face-sad ich will aus einer .xls eine .txt machen.
Super und ich will Haarshampoo ... Dass du die Skripte nicht verstehst, OK aber dass du die Nachfragen auf deine Vorgaben nicht verstehst ... nunja ... was genau verstehst du denn nicht?
ich würde dir ja gerne die Dateien hochladen aber ich finde die Funktion hier nirgends.
Gibt es nicht, wozu auch.
schön wäre ein .vbs das es alles macht, wenn man es ausführt.
Ja, schön wäre so einiges, allerdings beschränkt sich zumindest mein Wissen eher auf batch als auf visualbasic-Zeugs

Ich kann die vbs auch in bat einbuttern, macht keinen Unterschied ... zumal momentan außer c&p nicht viel zu tun ist

greetz André
Underdog81
Underdog81 25.05.2012 um 14:38:35 Uhr
Goto Top
Hi André,

Ich bin jetzt erst dazu gekommen es auszuprobieren.
Ich tüftel noch etwas rum, aber deine Dateien sind bestimmt das richtige.
Ich merkte eben erst, daß bei mir das .vbs die csv leer lässt. wieso kann ich dir noch nicht sagen aber ich bekomme schon mal die Kopfzeile in der Endtatei :D
Was ich super finde ist deine Abfrage nach der Nummer (Kundennummer)
ich danke dir schon mal für die Hilfe.

ich versteh eher batch als vbs....wenn ich das convert_xls_csv.vbs sehe sagt mir das alles so gut wie nichts face-sad
Skyemugen
Skyemugen 25.05.2012 aktualisiert um 15:43:19 Uhr
Goto Top
Zitat von @Underdog81:
ich versteh eher batch als vbs....wenn ich das convert_xls_csv.vbs sehe sagt mir das alles so gut wie nichts face-sad

Mir auch nicht ok, das Meiste erklärt sich von selbst, google war mein Freund und getestet habe ich's auch wie alles, was ich fabriziere face-wink daher ist sogar noch die erste Pause nach der Konvertierung enthalten.

Wenn ich 'ne .xls erstelle (frisch) und Zahlen in A1, A2, A3, B1, B2, B3 reinhaue und speichere - diese dann auf die .bat ziehe, dann bekomme ich eine .csv die (wahrscheinlich Einstellungssache?) bei mir Excel 2007 defaultmäßig so aussieht: A1+B1=A1(A1,B1) A2+B2=A2(A2,B2) etc.
452,2
564,3
21,1
also erst einmal nicht das, was ich erwartet hatte A1;B1 A2;B2 etc. aber deswegen habe ich auch die delims=, gesetzt, ist ja nun egal, ob da nun als reiner Text mit , oder ; ausgelesen wird.

Tja und am Schluss sieht dann die Kunden.txt so aus wie gewollt.

Wenn du nicht weißt, wo es klemmt, ändere Zeile 1 der batch in echo on.

greetz André
Underdog81
Underdog81 25.05.2012 um 15:45:02 Uhr
Goto Top
Ich hab es hinbekommen.... face-smile
Hab alles nochmal von Anfan an gemacht und siehe da es geht....
Was mir jetzt aufgefallen ist, daß der Couter nicht zählt.
Hier steht immer 1 und das ist die Anganbe der Position im Auftrag.
Skyemugen
Skyemugen 25.05.2012 um 15:54:38 Uhr
Goto Top
Stimmt, kurios, naja gut, dann flog das setlocal und endlocal wieder aus der Schleife und landete in Zeile 1 ... bei meinem ersten Skript heute hatte das lustigerweise in der Schleife funktioniert aber irgendwie ... Freitag eben ;D
Underdog81
Underdog81 25.05.2012 um 16:22:34 Uhr
Goto Top
Yeaaaaa Perfeeekt face-smile

Ich danke dir und wünsche ein schönes sonniges Wochenende und schöne Pfingsten!!
Underdog81
Underdog81 05.06.2012 um 14:27:51 Uhr
Goto Top
Hallo ich hab noch einen weiteren Happen, den ich nur duch google nicht lösen kann face-sad

Im grunde ist es die gleiche Geschichte wie ich sie schon geschrieben habe.
Doch der Aufbau der Exel Datei ist komplexer und es werden hier schon einige Daten angegeben.

Die Exel beinhaltet die Nummer schon in 3B und somit ist die Abfrage überflüssig.
Ausserdem fängt die Auflistung der Artikelnummern in Zeile 31 erst an.
dazu kommt hinzu, daß der Produktname mit aufgeführt wird an zweiter stelle.
Beispiel:
Artikelnummer| Produktname | Menge
32 | Hundehalsband | 3
441 | Hundeleine | 17

In den anderen Zeilen sind Infos die mit in der Datei stehen müssen für die Arcivierung.

Mein Wunschtraum ist es...... wie erkläre ich es am besten?
Die datei landet im Ordner und das Script erkennt es und fängt an zu arbeiten.
Legt einmal die Kunden.txt an und verschiebt die originale (schon bearbeitete Exel) in einen unterordner (Archiv).
Aber ich glaube das ist zuviel ....
Ich würde es nie hinbekommen.... oder erst nach laaaaaanger zeit.

Vielen Dank für eure Antworten.

Gruß Underdog81