Da ich sehr viel mit CSV-Dateien zu tun habe, möchte ich ein Excel-Makro schreiben, um die Tätigkeit zu vereinfachen. Da meine VBA-Kenntnisse sehr gering sind, wäre ich sehr dankbar, wenn mir jemand helfen könnte.
Mit einem DateiÖffnenDialog sollte man die csv-Dateien auswählen können um diese dann in Excel zu öffnen. Normalerweise sind es mehrere Dateien, sie sollen alle in einem Workbook als Worksheets geöffnet werden.
Mit einem DateiÖffnenDialog sollte man die csv-Dateien
auswählen können um diese dann in Excel zu öffnen.
Normalerweise sind es mehrere Dateien, sie sollen alle in
einem Workbook als Worksheets geöffnet werden.
Hi Maria,
Option Explicit
Sub tt()
Dim oeffnen, n As Integer
Application.ScreenUpdating = False
oeffnen = Application \_
.GetOpenFilename(filefilter:="Text Files (\*.csv), \*.csv", MultiSelect:=True)
If IsArray(oeffnen) = False Then GoTo ende
For n = 1 To UBound(oeffnen)
Workbooks.OpenText oeffnen(n)
ActiveWorkbook.Sheets(1).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Workbooks(Mid(oeffnen(n), InStrRev(oeffnen(n), "\") + 1)).Close False
Next n
ende:
Application.ScreenUpdating = True
End Sub
ich habe eine ähnliche Lösung wie Reinhard,
bei mir werden die CSV-Dateien einzeln abgefragt und in die Arbeitsmappe eingefügt.
Zusätzlich kann der Name der Tabelle für die einzufügende CSV-DAtei geändert werden.
Sub CSV()
' Erstellt unter EXCEL97
' Import mehrerer CSV-Dateien in eine EXCEL-Arbeitsmappe
Dim CSV\_Datei As Variant, DateiNeu As Variant, PfadCSV As String, Blattname As String
' Öffnen der 1. CSV-Datei
CSV\_Datei = Application.GetOpenFilename( \_
fileFilter:="CSV Datei (\*.csv), \*.csv")
If CSV\_Datei False Then
Application.Workbooks.OpenText CSV\_Datei, , , , , , , Semicolon, Comma
PfadCSV = ActiveWorkbook.Path 'Pfad der CSV-Dateien
Else
MsgBox "Vorgang wurde abgebrochen!"
Exit Sub
End If
' Speichern der Datei als EXCEL-Arbeitsmappe
DateiNeu = Application.GetSaveAsFilename( \_
fileFilter:="Excel Arbeitsmappe (\*.xls), \*.xls")
If DateiNeu False Then
ActiveWorkbook.SaveAs DateiNeu, xlWorkbookNormal
Else
MsgBox "Vorgang wurde abgebrochen!"
Exit Sub
End If
DateiNeu = ActiveWorkbook.Name
' Laden der weiteren CSV-Dateien
ChDir PfadCSV
Do
If MsgBox("Weitere CSV-Datei öffnen?", vbYesNo, "CSV importieren") = vbNo Then Exit Do
CSV\_Datei = Application.GetOpenFilename( \_
fileFilter:="CSV Datei (\*.csv), \*.csv")
If CSV\_Datei False Then
Application.Workbooks.OpenText CSV\_Datei, , , , , , , Semicolon, Comma
Else
MsgBox "Vorgang wurde abgebrochen!"
Exit Do
End If
Blattname:
'Falls gewünscht Name des Tabellenblatts ändern
'Standardmäßig wird Name der CSV\_Datei genommen
Blattname = InputBox("Name für Tabellenblatt der importierten CSV-Datei", "CSV importieren", \_
Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4))
If Blattname = "" Then
MsgBox "Leerer Blattname ist nicht zulässig!"
GoTo Blattname:
End If
Sheets(1).Name = Blattname
' CSV-Datei als letzte Tabelle in neue Excel-Datei verschieben
Sheets(1).Move After:=Workbooks(DateiNeu).Sheets(Workbooks(DateiNeu).Sheets.Count)
Loop
ActiveWorkbook.Save
End Sub
Gruß
Franz
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]