Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

CSV Daten in Excel umwandeln per VBS Script

Frage Entwicklung

Mitglied: Quercus

Quercus (Level 1) - Jetzt verbinden

05.05.2012, aktualisiert 17:18 Uhr, 4646 Aufrufe, 4 Kommentare

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:

01.
'CSV2XLS.vbs 
02.
sOutPathDefault = "C:\test\KonvertierteCSV" 'Angabe des Default-Zielpfades ohne abschließenden "\" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
If WScript.Arguments.Count = 0 Then 
06.
	WScript.Echo "Keine Quelldatei angegeben!" 
07.
	WScript.Quit(1) 
08.
End If 
09.
 
10.
sInFile = WScript.Arguments(0) 
11.
If Not fso.FileExists(sInFile) Then 
12.
	WScript.Echo sInFile & " nicht gefunden!" 
13.
	WScript.Quit(1)	 
14.
Else 'Pfad der Quelldatei zerlegen 
15.
	Set oInFile = fso.GetFile(sInFile) 'für vollständige Dateiangaben aus Dateisystem 
16.
	sInPath = oInFile.Path 'voller Quelldateipfad - wird zum Einlesen verwendet 
17.
	sInFileName = Left(oInFile.Name, InstrRev(oInFile.Name, ".") - 1) 'Dateiname ohne Pfad und Typ 
18.
	sInFileType = Mid(oInFile.Name, InstrRev(oInFile.Name, ".")) 'für Überprüfung auf CSV 
19.
	Set oInFile = Nothing 
20.
End If 
21.
 
22.
If WScript.Arguments.Count > 1 Then 
23.
	sOutFilePath = WScript.Arguments(1) 'angegebenen Zielpfad verwenden 
24.
Else 
25.
	sOutFilePath = sOutPathDefault 'kein Zielpfad angegeben - Default verwenden 
26.
End If 
27.
 
28.
If Not fso.FolderExists(sOutFilePath) Then 'Zielpfad nicht vorhanden, daher ... 
29.
	On Error Resume Next 
30.
	fso.CreateFolder(sOutFilePath) '... zu erstellen versuchen 
31.
	If Err.Number > 0 Then 
32.
		WScript.Echo "Ungueltiger Zielpfad: " & sOutFilePath 
33.
		WScript.Quit(1) 
34.
	Else 
35.
		On Error Goto 0 'Standardfehlerbehandlung wieder einschalten 
36.
	End If 
37.
End If 
38.
 
39.
If LCase(sInFileType) = ".csv" Then 'bei Typ ".csv" für Import in Temp-File kopieren 
40.
	sInPathTemp = sOutFilePath & "\" & sInFileName & ".tmp" 'Temp-File im Zielverzeichnis anlegen (Annahme: dort Schreibrechte) 
41.
	fso.CopyFile sInPath, sInPathTemp 
42.
	sInPath = sInPathTemp 'Daten aus Temp-File lesen 
43.
End If 
44.
 
45.
sOutPath = sOutFilePath & "\" & sInFileName & ".xls" 'Zieldateipfad erstellen 
46.
Do While InStr(sOutPath, "\\") 'vermeiden doppelter (mehfacher) "\" im Zieldateipfad (stört Excel offensichtlich nur beim Speichern) 
47.
	sOutPath = Replace(sOutPath, "\\", "\") 
48.
Loop 
49.
 
50.
Set oXL = CreateObject("Excel.Application") 
51.
With oXL 
52.
	.Workbooks.OpenText sInPath, , , , , , , True, , , , ,Array(Array(1, 1),Array(2, 2))	 
53.
	On Error Resume Next 
54.
	.ActiveWorkbook.ActiveSheet.Cells.EntireColumn.AutoFit 'Optimale Spaltenbreite für alle Spalten setzen 
55.
	.DisplayAlerts = False 'Keine Rückfrage beim Überschreiben schon vorhandener Zieldatei 
56.
	.ActiveWorkbook.SaveAs sOutPath, -4143 'Speichern als .xls 
57.
If Err.Number > 0 Then 
58.
		CleanUp 
59.
		WScript.Echo sOutPath & " konnte nicht gespeichert werden!" 
60.
		WScript.Quit(1) 
61.
	End If 
62.
	 
63.
End With 
64.
CleanUp 
65.
 
66.
Sub CleanUp 
67.
oXL.Quit 
68.
Set oXL = Nothing 
69.
If LCase(sInFileType) = ".csv" Then 
70.
	On Error Resume Next 
71.
	fso.DeleteFile sInPathTemp 'temporäre Import-Datei zu löschen versuchen 
72.
End If 
73.
End Sub
dazu noch die Aufruf bat in die ich dann die csv Datei ziehe:
01.
@echo off & setlocal 
02.
set "Quelle=C:\test\ZuKonvertierendeCSV" 
03.
set "Ablage=C:\test\KonvertierteCSV" 
04.
set "Ziel=C:\test\AusCSVKonvertierteXLS" 
05.
set "Log=C:\test\Konvertierungsfehler.txt" 
06.
if not exist "%Ablage%" md "%Ablage%" 
07.
for %%i in (%Quelle%\*.csv) do call :ProcessFile "%%i" 
08.
goto :eof 
09.
:ProcessFile 
10.
cscript //nologo C:\test\Scripts\CSV2XLS.vbs %1 "%Ziel%">>"%Log%" || goto :eof 
11.
move %1 "%Ablage%" 
12.
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.
01.
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; 
02.
USER_QUANTITYMIN;USER_Gewichtaktuell;USER_iiiiiiiSachnr;USER_Lieferzeitkkkkkkk;USER_lllllllLager;USER_Druckunterbinden;USER_ArtikelnummerExtern;USER_ArtikelVarianteExtern;USER_IstPackstueck;USER_ColliUmrechnung;USER_IstExportiert2MDE;USER_PickPlatzID; 
03.
USER_MengenvorschlagMDE;USER_Etikett;USER_EtikettDrucker;USER_EtikettBericht;USER_EtikettEK;USER_EtikettVK;USER_EtikettPreis;USER_AnzahlEtikettenDef;USER_MDEKeineFreigabe;USER_mmmmmmmmm 
04.
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.

01.
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; 
02.
USER_QUANTITYMIN;USER_Gewichtaktuell;USER_iiiiiiiSachnr;USER_Lieferzeitkkkkkkk;USER_lllllllLager;USER_Druckunterbinden;USER_ArtikelnummerExtern;USER_ArtikelVarianteExtern;USER_IstPackstueck;USER_ColliUmrechnung;USER_IstExportiert2MDE;USER_PickPlatzID; 
03.
USER_MengenvorschlagMDE;USER_Etikett;USER_EtikettDrucker;USER_EtikettBericht;USER_EtikettEK;USER_EtikettVK;USER_EtikettPreis;USER_AnzahlEtikettenDef;USER_MDEKeineFreigabe;USER_mmmmmmmmm 
04.
1;"000001";0;;;;-1;;;;;;;;;0,00;;;;;;;;;;0;;0;;;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0; 
05.
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; 
06.
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; 
07.
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; 
08.
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]
Mitglied: bastla
05.05.2012 um 12:03 Uhr
Hallo Quercus!

Die Darstellung "am Stück" kannst Du mit "Code"-Formatierung erreichen - das sähe dann so
01.
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 
02.
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
bzw so
01.
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 
02.
1;"000001";0;;;;-1;;;;;;;;;0,00;;;;;;;;;;0;;0;;;0;"Zebra TLP2824 Plus - ZPL";"rptEtikett_ArtNr_REMA_5x3";;;-1;1;0; 
03.
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; 
04.
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; 
05.
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; 
06.
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;
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
Bitte warten ..
Mitglied: Quercus
05.05.2012 um 12:26 Uhr
Hallo Bastla,

hab es gerade mit dem hier geposteten testdaten als neu erstellte CSV datei probiert. hier komm ich auf gleiches ergebnis wie du.

nur mit der orginal erstellten csv Datei die aus einem Programm uns erstellt wird hab ich die probleme!

leider kann ich hier keine XLS Dateien anhängen sonst würdest du sehen das die Daten verschoben sind gegenüber dem orginal wenn ich die Csv über Ecxel importieren kann.


verwende Excel 2007 und 2010 bei beiden das darstellungsproblem...
Bitte warten ..
Mitglied: bastla
05.05.2012 um 13:35 Uhr
Hallo Quercus!

Aus mir unbekannten Gründen wird bei beim Import die neue CSV nicht automatisch als "Getrennt" zu zerlegen interpretiert - ändere daher im Script auf
	.Workbooks.OpenText sInPath, , , 1, , , , True, , , , ,Array(Array(1, 1),Array(2, 2))
Grüße
bastla
Bitte warten ..
Mitglied: Quercus
05.05.2012 um 13:44 Uhr
Hallo Bastla,


merci das ist die lösung


verbeug und noch ein schönes Wochenende wünsche


Gruß

Quercus
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

VB for Applications
gelöst Excel mit VBS bearbeiten und Speichern Unter (8)

Frage von Yannosch zum Thema VB for Applications ...

VB for Applications
Csv in xml umwandeln mit VBA (8)

Frage von 130771 zum Thema VB for Applications ...

Batch & Shell
gelöst VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen) (5)

Frage von Luuke257 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...