Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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
GELÖST

3 CSV Dateien automatisch einlesen und strukturiert in eine CSV integrieren

Frage Microsoft Microsoft Office

Mitglied: Jay0603

Jay0603 (Level 1) - Jetzt verbinden

21.08.2013 um 13:15 Uhr, 3349 Aufrufe, 4 Kommentare, 1 Danke

Hallo Zusammen,

ich habe leider keine Erfahrung mit VBA und versuche jetzt schon seit mehreren Tagen vergeblich eine Lösung für mein Problem zu finden. Da ich in diesem Forum viele gute, verwandte Beiträge gefunden habe, hoffe ich mich an euch wenden zu dürfen. Ich versuche aus 3 CSV Dateien die im Minutentakt aktualisiert werden immer die letzte (aktuellste) Zeile in einer gemeinsamen CSV Datei, transponiert in Spaltenform, darzustellen. Zudem sollte die erste Zeile der 3 CSV Dateien auch in Spaltenform in diese gemeinsamen CSV Datei übernommen werden.
Ich versuche das hier mal anhand eines Beispiels zu verdeutlichen:

Datei1.csv
Zeile 1 Text1;Text2;Text3;Text4
Zeile 2 Wert;Wert;Wert;Wert
Zeile 3 ..............................
Zeile 4 Wert;Wert;Wert;Wert (aktuelle Werte)

Datei2.csv
Zeile 1 Text5;Text6;Text7
Zeile 2 Wert;Wert;Wert
Zeile 3 ..............................
Zeile 4 Wert;Wert;Wert (aktuelle Werte)

Datei3.csv
Zeile 1 Text8;Text9;Text10
Zeile 2 Wert;Wert;Wert
Zeile 3 ..............................
Zeile 4 Wert;Wert;Wert (aktuelle Werte)

Die gemeinsame CSV sollte wie folgt aussehen:

Gemeinsam.csv
Text 1;Wert
Text 2;Wert
.
.
Text10;Wert

Dabei sollten die Werte in Spalte 2 automatisch immer durch die neusten Werte der 3 CSV Dateien ersetzt werden.
Die gemeinsame CSV wird dann für eine andere Anwendung benötigt. Ich verwende MS Excel 2007.

Es wäre sehr schön wenn mir jemand weiter helfen könnte. Vielen Dank schon mal im vorraus!

MfG Jay

Mitglied: bastla
21.08.2013, aktualisiert um 14:49 Uhr
Hallo Jay0603 und willkommen im Forum!

Könnte etwa so gehen:
01.
Ein = Array("D:\Datei1.csv", "D:\Datei2.csv", "D:\Datei3.csv") 'Liste der zu verarbeitenden Dateien als Array 
02.
Aus = "D:\Gemeinsam.csv" 'Ausgabedatei 
03.
Delim = ";" 'Trennzeichen 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
 
07.
For Each Datei In Ein 'alle "Eingabe"-Dateien durchgehen 
08.
    T = Split(fso.OpenTextFile(Datei).ReadAll, vbNewline) 'Dateiinhalt in Zeilenarray einlesen 
09.
    F = Split(T(0), Delim) 'Feldnamen-Array aus Zeile 1 (= Index 0) erstellen 
10.
    W = Split(T(UBound(T)), Delim) 'Werte-Array aus letzter Zeile erstellen 
11.
     
12.
    For i = 0 To UBound(F) 'alle Felder durchgehen 
13.
        'Ausgabe zusammensetzen: Zeilenschaltung + Feldname + Trennzeichen + Wert 
14.
        A = A & vbNewline & F(i) & Delim & W(i) 
15.
    Next 
16.
Next 
17.
 
18.
fso.CreateTextFile(Aus).Write Mid(A, 3) 'ohne erste Zeilenschaltung in Ausgabedatei schreiben
Vorausgesetzt (da nicht überprüft / abgesichert) wird, dass es in der letzten Zeile zumindest so viele Werte gibt, wie die erste Zeile Feldnamen enthält (und daher insbes nicht eine Zeilenschaltung am Dateiende vorkommt) ...

Grüße
bastla
Bitte warten ..
Mitglied: Jay0603
22.08.2013 um 11:32 Uhr
Hallo bastla,

vielen Dank für die schnelle Antwort und deine Bemühungen. Ich konnte die Funktion erst gerade eben testen. Leider bringt mir VB einen Laufzeitfehler mit der Fehlermeldung "Index außerhalb des gültigen Bereichs" bei folgender Zeile:

A = A & vbNewLine & F(i) & Delim & W(i)

Ich kenne mich leider viel zu wenig mit VB aus, werde aber versuche mich ein bisschen einzuarbeiten.

Grüße
Jay
Bitte warten ..
Mitglied: bastla
22.08.2013 um 14:29 Uhr
Hallo Jay0603!
Fehlermeldung "Index außerhalb des gültigen Bereichs"
wäre dann genau der Fall, den ich oben erwähnt hatte: Vermutlich enthält mindestens eine der CSV-Dateien am Ende eine Leerzeile ...

Falls ja, sollte es so gehen:
01.
Ein = Array("D:\Datei1.csv", "D:\Datei2.csv", "D:\Datei3.csv") 'Liste der zu verarbeitenden Dateien als Array 
02.
Aus = "D:\Gemeinsam.csv" 'Ausgabedatei 
03.
Delim = ";" 'Trennzeichen 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
 
07.
For Each Datei In Ein 'alle "Eingabe"-Dateien durchgehen 
08.
    T = Split(fso.OpenTextFile(Datei).ReadAll, vbNewline) 'Dateiinhalt in Zeilenarray einlesen 
09.
    F = Split(T(0), Delim) 'Feldnamen-Array aus Zeile 1 (= Index 0) erstellen 
10.
    L = UBound(T) 'letzte Zeile ermitteln 
11.
    'letzte nicht leere Zeile suchen 
12.
    Do While Trim(T(L)) = "" 
13.
        L = L -1 
14.
    Loop 
15.
    W = Split(T(L), Delim) 'Werte-Array aus letzter Zeile erstellen 
16.
     
17.
    For i = 0 To UBound(F) 'alle Felder durchgehen 
18.
        'Ausgabe zusammensetzen: Zeilenschaltung + Feldname + Trennzeichen + Wert 
19.
        A = A & vbNewline & F(i) & Delim & W(i) 
20.
    Next 
21.
Next 
22.
 
23.
fso.CreateTextFile(Aus).Write Mid(A, 3) 'ohne erste Zeilenschaltung in Ausgabedatei schreiben
Grüße
bastla
Bitte warten ..
Mitglied: Jay0603
22.08.2013 um 14:41 Uhr
Hallo bastla,

funktioniert genau wie beschrieben. Tausend Dank für deine Hilfe. Super Forum mit super Leuten hier!
Echt klasse!

Gruß
Jay
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Skript für: Automatisch generierte CSV Datei (3)

Frage von janelsaesser zum Thema Batch & Shell ...

VB for Applications
gelöst CSV Datei automatisch bearbeiten und abspeichern (6)

Frage von klaus1985 zum Thema VB for Applications ...

VB for Applications
gelöst Feld mit CSV-Daten aus MySQL-Datenbank einlesen (3)

Frage von Andreas.HH1 zum Thema VB for Applications ...

Microsoft Office
Automatischer Datenimport aus csv Datei in Access DB - Wo zu ändern? (2)

Frage von Mejestic12 zum Thema Microsoft Office ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Monitoring
Netzwerk-Monitoring Software (18)

Frage von Ghost108 zum Thema Monitoring ...

Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Windows 10
Windows 10 Fall Creators Update Fehler (13)

Frage von ZeroCool23 zum Thema Windows 10 ...