CSV-Dateien Import Makro

Hallo,

da mir hier im Forum schon ziemlich geholfen wurde, hoffe ich noch einmal (wahrscheinlich auch zum letzten Mal *fg*) auf eure Hilfe. Und zwar geht es um das leidige Thema „Importieren von CSV Dateien in Excel“. Ich bräuchte ein Makro, dass Folgendes kann:

  1. Erst Mal nach Namen und dem Pfad fragen.
  2. Es werden alle CSV-Dateien, die mit dem Namen anfangen, geöffnet, jede Datei wird in einem Workbook als Worksheet geöffnet.
  3. Die neuen Worksheets sollen vor allen anderen Worksheets im Workbook stehen, sollten die Worksheets mit dem gleichen Namen vorhanden sein, werden diese überschrieben.
  4. Formatierung: Text Arial, 10p. Zahlen sollen recht eingeordnet werden, der normale Text links. Headline soll zentiert und fett sein, außerdem einen farbigen Hintergrund haben.

Ich wäre wirklich für jede Hilfe und jeden Hinweis sehr sehr sehr dankbar. Dieses Makro könnte mir das Leben im Umgang mit den CSV-Dateien um Einiges erleichtern, da ich aber wirklich sehr wenig Ahnung von VB habe, bin ich auf eure Hilfe angewiesen. Wenn das Ganze nicht realisierbar ist, wäre ich für Teilmakros ebenfalls sehr dankbar.

Viele liebe Grüße,
eure Maria

Hallo,

Und zwar geht es um das leidige Thema "Importieren

von CSV Dateien in Excel". Ich bräuchte ein Makro, dass
Folgendes kann:

  1. Erst Mal nach Namen und dem Pfad fragen.
  2. Es werden alle CSV-Dateien, die mit dem Namen anfangen,
    geöffnet, jede Datei wird in einem Workbook als Worksheet
    geöffnet.
  3. Die neuen Worksheets sollen vor allen anderen Worksheets im
    Workbook stehen, sollten die Worksheets mit dem gleichen Namen
    vorhanden sein, werden diese überschrieben.
  4. Formatierung: Text Arial, 10p. Zahlen sollen recht
    eingeordnet werden, der normale Text links. Headline soll
    zentiert und fett sein, außerdem einen farbigen Hintergrund
    haben.

Hallo Maria,

zum Glück konnte ich auf die Lösung für zwei ähnliche Probleme zugreifen und mußte „nur“ ein wenig umbauen und deine Sonderwünsche bezüglich der Formatierungen einbauen. Das nachfolgende Makro speicherst du in einem Modul einer neuen Arbeitsmappe.

Ich hoffe, dass das mit den CSV-Dateien sauber klappt, EXCEL ist da gelegentlich etwas eigenwillig und legt die Spalten nicht korrekt an. Bei mir hat es jedenfalss mit EXCEL97 funkioniert.

Sub CSV()
' Erstellt unter EXCEL97
' Import mehrerer CSV-Dateien in eine EXCEL-Arbeitsmappe
 Dim wbCSV As Workbook, wbDatei As Workbook, Blattname As String
 Dim strPath As String, BoxTitel As String, BoxPrompt As String
 Dim strFilename As String, NameAnfang As String

 BoxTitel = "CSV-Dateien laden"
 strPath = InputBox("Pfad der CSV-Dateien", BoxTitel, "C:\Test\Untertest")
 If strPath = "" Then Exit Sub

 NameAnfang = InputBox("Anfang der gesuchten CSV-Dateinamen:", BoxTitel)
 If NameAnfang = "" Then Exit Sub

 BoxPrompt = "CSV-Dateien in neue Mappe laden?" & vbLf & vbLf
 BoxPrompt = BoxPrompt & " Bei 'Nein' kann eine vorhandene Datei geöffnet werden."
 If MsgBox(BoxPrompt, vbYesNo + vbQuestion, BoxTitel) = vbYes Then
 Workbooks.Add Template:="Arbeitsmappe"
 Else
 'Vorhandene Datei öffnen
 If Application.Dialogs(xlDialogOpen).Show = False Then Exit Sub
 End If
 Set wbDatei = ActiveWorkbook

 'CSV-Dateien laden
 strFilename = Dir(strPath & "\" & NameAnfang & "\*.csv", vbNormal)
 Do Until strFilename = ""
 Application.Workbooks.OpenText strFilename, , , , , , , Semicolon, Comma
 Set wbCSV = ActiveWorkbook
 Blattname = wbCSV.Sheets(1).Name

 'Formatieren der CSV-Datei
 With wbCSV.Sheets(1)
 .Cells.Font.FontStyle = "Arial"
 .Cells.Font.Size = 10
 'Tabelle unter Titelzeile fixieren
 .Range("A2").Select
 ActiveWindow.FreezePanes = True

 'Titelzeile Formatieren
 Farbe = 8 ' Hellblau für Hintergrund-Farbe der Zellen
 With .Range(Cells(1, 1), Cells(1, .UsedRange.Column + .UsedRange.Columns.Count - 1))
 .Font.Bold = True
 .HorizontalAlignment = xlCenter
 .Interior.ColorIndex = Farbe
 End With
 End With

 'Prüfen ob gleicher Blattname schon vorhanden und ggf. ersetzen
 For I = 1 To wbDatei.Sheets.Count
 If wbDatei.Sheets(I).Name = Blattname Then
 wbDatei.Sheets(I).Delete
 wbCSV.Sheets(1).Copy before:=wbDatei.Sheets(I)
 GoTo weiter1
 End If
 Next
 ' CSV-Tabellenblatt an 1. Position einfügen
 wbCSV.Sheets(1).Copy before:=wbDatei.Sheets(1)
weiter1:
 wbCSV.Close False
 strFilename = Dir
 Loop
End Sub

Ich werde dir das Ganze auch noch als Datei per e-mail schicken.

Gruß
Franz

Hallo Franz
Sehr nützlich, danke!
Für Excel2003 habe ich folgendes geändert:

’ Import mehrerer CSV-Dateien in eine EXCEL-Arbeitsmappe
Dim wbCSV As Workbook, wbDatei As Workbook, Blattname As
String
Dim strPath As String, BoxTitel As String, BoxPrompt As
String
Dim strFilename As String, NameAnfang As String

Anfügen: Farbe As String, i as Integer

strFilename = Dir(strPath & „“ & NameAnfang & „*.csv“,
vbNormal)

Heisst bei mir:
strFilename = strPath & „“ & NameAnfang & „*.csv“

Und das:

Application.Workbooks.OpenText strFilename, , , , , , ,
Semicolon, Comma

heisst: Application.Workbooks.OpenText strFilename, , , , , , ,
Semicolon:=false, Comma:=false

Rest funzt. Viel Vergnügen
Erich