Computer Hardware Forum - TweakPC

Computer Hardware Forum - TweakPC (https://www.tweakpc.de/forum/)
-   Programmiersprachen (https://www.tweakpc.de/forum/programmiersprachen/)
-   -   CSV-Dateien kombinieren (https://www.tweakpc.de/forum/programmiersprachen/64645-csv-dateien-kombinieren.html)

Fabian 17.11.2008 11:08

CSV-Dateien kombinieren
 
Hi,

ihr seid doch immer fit und habt gute Ideen.

Ich möchte rund 100 CSV-Dateien kombinieren. Ich mache es jetzt mal als Beispiel mit zwei Dateien:

1,A
2,B
3,C
4,D

1,E
2,F
3,G
4,H

Und das soll zu

1,A,E
2,B,F
3,C,G
4,D,H

kombiniert werden.

Kurze Frage: Wie und womit?

Danke schon mal an alle für die guten Ideen!

io.sys 17.11.2008 12:45

AW: CSV-Dateien kombinieren
 
Kannst Du das nicht über Excel machen?

Die CSV-Datei einlesen und dann eben die "Source-Spalten" kombinieren nach Formel in die "Ziel-Spalte".

[EID]-Mr.GiZMO 17.11.2008 16:14

AW: CSV-Dateien kombinieren
 
Hallo,

ich hab dir mal ein Makro geschrieben. :nerd:

Vorgehensweise:
- neue Datei "result.csv" erstellen
- VB-Editor Starten (ALT+F11)
- neues Modul erstellen (Symbolleiste, zweites Icon, Modul)
- Makro einfügen
- STRG + S
- ALT + F4
- Menüeintrag Makros wählen
- Makro "import" starten
- Dateien wählen
- warten
- freuen
- Danke sagen :)


Vorraussetzung:
Die zu kopierenden Daten liegen, wie von dir beschrieben alle in der ersten Spalte der Quelldateien.



Und hier der Übeltäter:
[code]Sub import()


Dim actualLine As Integer ' aktuelle Zeile
Dim actualRow As Integer ' aktuelle Spalte
Dim Spaltefrei As Boolean ' Prüfbool

actualLine = 1
actualRow = 1
Spaltefrei = False


' Testrutine für aktuelle Einfügepostion
While Spaltefrei = False
If Cells(actualLine, actualRow).Value <> \\"\\" Then
actualRow = actualRow + 1
Else
Spaltefrei = True
End If
Wend



' Dateien wählen
Dim Dateien As Variant
Dim Dateizaehler As Integer
Range(\\"X998\\").Value = \\"\\"
Range(\\"X999\\").Value = \\"\\"
Range(\\"X998\\").Select
Dateien = Application.GetOpenFilename(\\"Alle-Dateien (*.*),*.*,\\", MultiSelect:=True)
On Error GoTo ERRORHANDLER

For Dateizaehler = 1 To UBound(Dateien)
Wert = Dateien(Dateizaehler)

Range(\\"X998\\").Value = Wert
Wertlänge = Len(Wert)

For k = 1 To Wertlänge
Wertrechts = Right(Wert, k)
Slash = Left(Wertrechts, 1)
Select Case Slash
Case Is = \\"\\\"
Wertname = Right(Wert, k - 1)
Range(\\"X999\\").Value = Wertname
GoTo weiter
End Select
Next k
weiter:
Range(\\"X998\\").Select

' Voller Dateiname mit Pfad zum öffnen benötigt
Dim FullFileName As String
FullFileName = Range(\\"X998\\").Value

' Nur Dateiname ohne Pfad zum Wechseln der Dateien in Excel benötigt
Dim JustFileName As String
JustFileName = Range(\\"X999\\").Value



' Kopiervorgang Start
If FullFileName <> \\"\\" And JustFileName <> \\"\\" Then

' Original öffnen
Workbooks.Open Filename:=FullFileName

' erste Spalte markieren und kopieren
Range(\\"A1:A999\\").Select
Selection.Copy

' Zieldatei öffnen
Windows(\\"result.csv\\").Activate

' oberste Zelle in nächster leerer Spalte wählen
Cells(actualLine, actualRow).Select

' Einfügen
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

' Zwischenablage leeren
Application.CutCopyMode = False

' Reihenzähler + 1
actualRow = actualRow + 1

' Quelldatei aktivieren und schließen
Windows(JustFileName).Activate
Windows(JustFileName).Close


End If
' Kopiervorgang Ende '


' Nächste Datei
Next Dateizaehler


ERRORHANDLER:
Exit Sub




End Sub

[/code]
:gizmo:

Fabian 17.11.2008 19:51

AW: CSV-Dateien kombinieren
 
[quote=io.sys;586339]Kannst Du das nicht über Excel machen?

Die CSV-Datei einlesen und dann eben die \"Source-Spalten\" kombinieren nach Formel in die \"Ziel-Spalte\".[/quote]

Ne das geht leider nicht, ich muss dies des öfteren machen, das soll also vollkommen automatisch funktionieren.

Fabian 17.11.2008 19:54

AW: CSV-Dateien kombinieren
 
Danke [EID]-Mr.GiZMO, das sieht doch schon sehr gut aus. Ich habs heute Nachmittag dann mit Matlab auch eben (6 Zeilen) gelöst, da sieht der VB-Code ja reudig aus :D
Aber ich probiers morgen mal mit deinem Code.

[EID]-Mr.GiZMO 17.11.2008 20:00

AW: CSV-Dateien kombinieren
 
Der Hauptteil ist ja auch das automatisierte Öffnen der Dateien.

Im Übrigen seh ich und verfluche grad die schei$$ Doppelbackslashes vor jedem "
Das nervt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 Uhr.

Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.