CSV Daten in Excel umwandeln per VBS Script
Moin,
unten aufgeführtes script habe ich hier aus dem Forum gefunden welches dann mit hilfe von Bastla noch verfeinert wurde ;)
funktionierte auch soweit mit meinen alten csv Daten einwandfrei, nun hat sich die ausgabe Datei in der CSV Datei leider in Spalte 3 geändert (der Matchcode ist in der Ausgabe weggefallen, dieser war mit den Daten in Anführungszeichen "blabla" formatiert.)
um konstruktive Hilfe wäre ich sehr Dankbar ;)
Hier das VBS Script welches ich momentan in verwendung habe:
dazu noch die Aufruf bat in die ich dann die csv Datei ziehe:
bei dieser CSV Datei funktioniert das Script wie gewünscht mit der Ausgabe:
Zeile 1 beinhaltet die Namen der Spalten hier leider mit Zeilenumbruch dargestellt da sonst im Forum nicht ganz angezeigt.
mit meiner neuen CSV Datei leider nicht mehr: Einzige änderung ist das der "matchcode" nicht mehr vorhanden ist
Zeile 1 beinhaltet die Namen der Spalten hier leider mit Zeilenumbruch dargestellt da sonst im Forum nicht ganz angezeigt.
[Edit Biber] Codeformatierung nachgetragen [/Edit]
unten aufgeführtes script habe ich hier aus dem Forum gefunden welches dann mit hilfe von Bastla noch verfeinert wurde ;)
funktionierte auch soweit mit meinen alten csv Daten einwandfrei, nun hat sich die ausgabe Datei in der CSV Datei leider in Spalte 3 geändert (der Matchcode ist in der Ausgabe weggefallen, dieser war mit den Daten in Anführungszeichen "blabla" formatiert.)
um konstruktive Hilfe wäre ich sehr Dankbar ;)
Hier das VBS Script welches ich momentan in verwendung habe:
'CSV2XLS.vbs
sOutPathDefault = "C:\test\KonvertierteCSV" 'Angabe des Default-Zielpfades ohne abschließenden "\"
Set fso = CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.Count = 0 Then
WScript.Echo "Keine Quelldatei angegeben!"
WScript.Quit(1)
End If
sInFile = WScript.Arguments(0)
If Not fso.FileExists(sInFile) Then
WScript.Echo sInFile & " nicht gefunden!"
WScript.Quit(1)
Else 'Pfad der Quelldatei zerlegen
Set oInFile = fso.GetFile(sInFile) 'für vollständige Dateiangaben aus Dateisystem
sInPath = oInFile.Path 'voller Quelldateipfad - wird zum Einlesen verwendet
sInFileName = Left(oInFile.Name, InstrRev(oInFile.Name, ".") - 1) 'Dateiname ohne Pfad und Typ
sInFileType = Mid(oInFile.Name, InstrRev(oInFile.Name, ".")) 'für Überprüfung auf CSV
Set oInFile = Nothing
End If
If WScript.Arguments.Count > 1 Then
sOutFilePath = WScript.Arguments(1) 'angegebenen Zielpfad verwenden
Else
sOutFilePath = sOutPathDefault 'kein Zielpfad angegeben - Default verwenden
End If
If Not fso.FolderExists(sOutFilePath) Then 'Zielpfad nicht vorhanden, daher ...
On Error Resume Next
fso.CreateFolder(sOutFilePath) '... zu erstellen versuchen
If Err.Number > 0 Then
WScript.Echo "Ungueltiger Zielpfad: " & sOutFilePath
WScript.Quit(1)
Else
On Error Goto 0 'Standardfehlerbehandlung wieder einschalten
End If
End If
If LCase(sInFileType) = ".csv" Then 'bei Typ ".csv" für Import in Temp-File kopieren
sInPathTemp = sOutFilePath & "\" & sInFileName & ".tmp" 'Temp-File im Zielverzeichnis anlegen (Annahme: dort Schreibrechte)
fso.CopyFile sInPath, sInPathTemp
sInPath = sInPathTemp 'Daten aus Temp-File lesen
End If
sOutPath = sOutFilePath & "\" & sInFileName & ".xls" 'Zieldateipfad erstellen
Do While InStr(sOutPath, "\\") 'vermeiden doppelter (mehfacher) "\" im Zieldateipfad (stört Excel offensichtlich nur beim Speichern)
sOutPath = Replace(sOutPath, "\\", "\")
Loop
Set oXL = CreateObject("Excel.Application")
With oXL
.Workbooks.OpenText sInPath, , , , , , , True, , , , ,Array(Array(1, 1),Array(2, 2))
On Error Resume Next
.ActiveWorkbook.ActiveSheet.Cells.EntireColumn.AutoFit 'Optimale Spaltenbreite für alle Spalten setzen
.DisplayAlerts = False 'Keine Rückfrage beim Überschreiben schon vorhandener Zieldatei
.ActiveWorkbook.SaveAs sOutPath, -4143 'Speichern als .xls
If Err.Number > 0 Then
CleanUp
WScript.Echo sOutPath & " konnte nicht gespeichert werden!"
WScript.Quit(1)
End If
End With
CleanUp
Sub CleanUp
oXL.Quit
Set oXL = Nothing
If LCase(sInFileType) = ".csv" Then
On Error Resume Next
fso.DeleteFile sInPathTemp 'temporäre Import-Datei zu löschen versuchen
End If
End Sub
dazu noch die Aufruf bat in die ich dann die csv Datei ziehe:
@echo off & setlocal
set "Quelle=C:\test\ZuKonvertierendeCSV"
set "Ablage=C:\test\KonvertierteCSV"
set "Ziel=C:\test\AusCSVKonvertierteXLS"
set "Log=C:\test\Konvertierungsfehler.txt"
if not exist "%Ablage%" md "%Ablage%"
for %%i in (%Quelle%\*.csv) do call :ProcessFile "%%i"
goto :eof
:ProcessFile
cscript //nologo C:\test\Scripts\CSV2XLS.vbs %1 "%Ziel%">>"%Log%" || goto :eof
move %1 "%Ablage%"
goto :eof
bei dieser CSV Datei funktioniert das Script wie gewünscht mit der Ausgabe:
Zeile 1 beinhaltet die Namen der Spalten hier leider mit Zeilenumbruch dargestellt da sonst im Forum nicht ganz angezeigt.
Mandant;Artikelnummer;Matchcode;USER_DEL;USER_RV;USER_Zollnummer;USER_EClass;USER_nnnWay;USER_aaaaKat;USER_bbbKatalog;USER_ccKat;USER_TDM;USER_dddKatalog;USER_fff;USER_PDF;USER_ggggg512;USER_hhhhhheinsatzgewicht;USER_PRICAT;
USER_QUANTITYMIN;USER_Gewichtaktuell;USER_iiiiiiiSachnr;USER_Lieferzeitkkkkkkk;USER_lllllllLager;USER_Druckunterbinden;USER_ArtikelnummerExtern;USER_ArtikelVarianteExtern;USER_IstPackstueck;USER_ColliUmrechnung;USER_IstExportiert2MDE;USER_PickPlatzID;
USER_MengenvorschlagMDE;USER_Etikett;USER_EtikettDrucker;USER_EtikettBericht;USER_EtikettEK;USER_EtikettVK;USER_EtikettPreis;USER_AnzahlEtikettenDef;USER_MDEKeineFreigabe;USER_mmmmmmmmm
1;"000001";"10/25mm/1:10=8,9/plan";0;;;;0;0;0;0;0;0;0;;;0,00;;0,00;0;;;0;0;;;0;0,00;0;;0,00;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0
mit meiner neuen CSV Datei leider nicht mehr: Einzige änderung ist das der "matchcode" nicht mehr vorhanden ist
Zeile 1 beinhaltet die Namen der Spalten hier leider mit Zeilenumbruch dargestellt da sonst im Forum nicht ganz angezeigt.
Mandant;Artikelnummer;USER_DEL;USER_RV;USER_Zollnummer;USER_EClass;USER_nnnWay;USER_aaaaKat;USER_bbbKatalog;USER_ccKat;USER_TDM;USER_dddKatalog;USER_fff;USER_PDF;USER_ggggg512;USER_hhhhhheinsatzgewicht;USER_PRICAT;
USER_QUANTITYMIN;USER_Gewichtaktuell;USER_iiiiiiiSachnr;USER_Lieferzeitkkkkkkk;USER_lllllllLager;USER_Druckunterbinden;USER_ArtikelnummerExtern;USER_ArtikelVarianteExtern;USER_IstPackstueck;USER_ColliUmrechnung;USER_IstExportiert2MDE;USER_PickPlatzID;
USER_MengenvorschlagMDE;USER_Etikett;USER_EtikettDrucker;USER_EtikettBericht;USER_EtikettEK;USER_EtikettVK;USER_EtikettPreis;USER_AnzahlEtikettenDef;USER_MDEKeineFreigabe;USER_mmmmmmmmm
1;"000001";0;;;;-1;;;;;;;;;0,00;;;;;;;;;;0;;0;;;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0;
1;"000274";0;;;;0;0;0;0;0;0;0;;;0,60;;0,00;0;"F365290521361";;0;0;;;0;0,00;0;;0,00;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0;
1;"000302";0;;;"27-06-04-04";0;0;0;0;0;0;0;;;0,00;;0,00;-1;"B883380534643";;0;0;;;0;0,00;0;;0,00;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0;
1;"100192";0;;;"27-06-20-08";-1;0;0;0;0;0;0;;;1,45;11.03.2011;5,00;0;"B883330527547";30;0;0;;;0;0,00;0;;0,00;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0;
1;"100214";0;;;;0;0;0;-1;0;0;0;;"21089190";0,30;01.02.2012;1,00;0;;;0;0;;;0;0,00;0;;0,00;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0;
[Edit Biber] Codeformatierung nachgetragen [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 184505
Url: https://administrator.de/contentid/184505
Ausgedruckt am: 25.11.2024 um 03:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Quercus!
Die Darstellung "am Stück" kannst Du mit "Code"- erreichen - das sähe dann so
bzw so
aus.
Mit Deinem geposteten Script und beiden Testdateien erhalte ich (mit Excel 2007) vernünftig aussehende Ergebnisse - daher kann ich das Problem nicht nachvollziehen ...
Grüße
bastla
Die Darstellung "am Stück" kannst Du mit "Code"- erreichen - das sähe dann so
Mandant;Artikelnummer;Matchcode;USER_DEL;USER_RV;USER_Zollnummer;USER_EClass;USER_nnnWay;USER_aaaaKat;USER_bbbKatalog;USER_ccKat;USER_TDM;USER_dddKatalog;USER_fff;USER_PDF;USER_ggggg512;USER_hhhhhheinsatzgewicht;USER_PRICAT;USER_QUANTITYMIN;USER_Gewichtaktuell;USER_iiiiiiiSachnr;USER_Lieferzeitkkkkkkk;USER_lllllllLager;USER_Druckunterbinden;USER_ArtikelnummerExtern;USER_ArtikelVarianteExtern;USER_IstPackstueck;USER_ColliUmrechnung;USER_IstExportiert2MDE;USER_PickPlatzID;USER_MengenvorschlagMDE;USER_Etikett;USER_EtikettDrucker;USER_EtikettBericht;USER_EtikettEK;USER_EtikettVK;USER_EtikettPreis;USER_AnzahlEtikettenDef;USER_MDEKeineFreigabe;USER_mmmmmmmmm
1;"000001";"10/25mm/1:10=8,9/plan";0;;;;0;0;0;0;0;0;0;;;0,00;;0,00;0;;;0;0;;;0;0,00;0;;0,00;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0
Mandant;Artikelnummer;USER_DEL;USER_RV;USER_Zollnummer;USER_EClass;USER_nnnWay;USER_aaaaKat;USER_bbbKatalog;USER_ccKat;USER_TDM;USER_dddKatalog;USER_fff;USER_PDF;USER_ggggg512;USER_hhhhhheinsatzgewicht;USER_PRICAT;USER_QUANTITYMIN;USER_Gewichtaktuell;USER_iiiiiiiSachnr;USER_Lieferzeitkkkkkkk;USER_lllllllLager;USER_Druckunterbinden;USER_ArtikelnummerExtern;USER_ArtikelVarianteExtern;USER_IstPackstueck;USER_ColliUmrechnung;USER_IstExportiert2MDE;USER_PickPlatzID;USER_MengenvorschlagMDE;USER_Etikett;USER_EtikettDrucker;USER_EtikettBericht;USER_EtikettEK;USER_EtikettVK;USER_EtikettPreis;USER_AnzahlEtikettenDef;USER_MDEKeineFreigabe;USER_mmmmmmmmm
1;"000001";0;;;;-1;;;;;;;;;0,00;;;;;;;;;;0;;0;;;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0;
1;"000274";0;;;;0;0;0;0;0;0;0;;;0,60;;0,00;0;"F365290521361";;0;0;;;0;0,00;0;;0,00;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0;
1;"000302";0;;;"27-06-04-04";0;0;0;0;0;0;0;;;0,00;;0,00;-1;"B883380534643";;0;0;;;0;0,00;0;;0,00;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0;
1;"100192";0;;;"27-06-20-08";-1;0;0;0;0;0;0;;;1,45;11.03.2011;5,00;0;"B883330527547";30;0;0;;;0;0,00;0;;0,00;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0;
1;"100214";0;;;;0;0;0;-1;0;0;0;;"21089190";0,30;01.02.2012;1,00;0;;;0;0;;;0;0,00;0;;0,00;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0;
Mit Deinem geposteten Script und beiden Testdateien erhalte ich (mit Excel 2007) vernünftig aussehende Ergebnisse - daher kann ich das Problem nicht nachvollziehen ...
Grüße
bastla