Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung

GELÖST

CSV Daten in Excel umwandeln per VBS Script

Mitglied: Quercus

Quercus (Level 1) - Jetzt verbinden

05.05.2012, aktualisiert 17:18 Uhr, 4812 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 ..
Ähnliche Inhalte
Batch & Shell
XML in CSV umwandeln
gelöst Frage von jochengBatch & Shell2 Kommentare

Hallo Leute Ich habe folgende XML Datei die ich mit einem Batch in eine CSV umwandeln will. Mein Problem ...

VB for Applications
Csv in xml umwandeln mit VBA
Frage von 130771VB for Applications8 Kommentare

Hallo zusammen, ich bin neu in der Commuity und auch neu im Bereich der Programmierung mit VBA. Ich habe ...

Batch & Shell
CSV mit Powershell umwandeln
gelöst Frage von mayli01Batch & Shell3 Kommentare

Hallo, in einer spalte einer CSV Datei habe ich zahlen von 0-100. Die spalte enthält eine Kopfzeile (Stk.). Nun ...

XML
Csv in Xml umwandeln
Frage von tester23XML12 Kommentare

Hallo, nach langer Zeit habe ich wieder eine Frage. Ich bekomme eine csv-Datei, und um die weiter verarbeiten zu ...

Neue Wissensbeiträge
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 12 StundenRouter & Routing2 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 19 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 23 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...

Sonstige Systeme
7-zip: Programm frägt nach Passwort erst bei einzelnen Dateien
Frage von freeskierchrisSonstige Systeme7 Kommentare

Guten Morgen, ich habe ein Problem beim Arbeiten mit 7-zip: Wenn ich die einzelnen Dateien zu einem Archiv verpacke ...