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:
Erst Mal nach Namen und dem Pfad fragen.
Es werden alle CSV-Dateien, die mit dem Namen anfangen, geöffnet, jede Datei wird in einem Workbook als Worksheet geöffnet.
Die neuen Worksheets sollen vor allen anderen Worksheets im Workbook stehen, sollten die Worksheets mit dem gleichen Namen vorhanden sein, werden diese überschrieben.
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.
Und zwar geht es um das leidige Thema "Importieren
von CSV Dateien in Excel". Ich bräuchte ein Makro, dass
Folgendes kann:
Erst Mal nach Namen und dem Pfad fragen.
Es werden alle CSV-Dateien, die mit dem Namen anfangen,
geöffnet, jede Datei wird in einem Workbook als Worksheet
geöffnet.
Die neuen Worksheets sollen vor allen anderen Worksheets im
Workbook stehen, sollten die Worksheets mit dem gleichen Namen
vorhanden sein, werden diese überschrieben.
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.
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