Datenimport aus CSV ohne Datenverbindung
Schritt-für-Schritt-Anleitung
- Öffne Excel und erstelle ein neues Makro.
- Füge den folgenden VBA-Code ein, um die CSV-Dateien zu importieren, ohne eine Datenverbindung aufzubauen:
'Import anhand Datum
For i = tage To 0 Step -1
EndDatum = EndDatum - i
'Enddatum umwandeln für Import
endjahr = Right(EndDatum, 4)
endmonat = Mid(EndDatum, 4, 2)
endtag = Left(EndDatum, 2)
'umgewandeltes Enddatum zusammen setzen
enddatum2 = endjahr & endmonat & endtag
'Linien 1-4
For k = 1 To linien
'Import einer leeren Datei
If FileLen(rehmpfad & k & "'_'" & enddatum2 & "'.csv") = 0 Then
'Import einer nicht leeren Datei
Else
Set wsroh = ActiveWorkbook.Sheets("R" & k)
'Zeilen zählen
Zeilenzahl = ActiveWorkbook.Sheets("R" & k).Cells(1, rohmbc).CurrentRegion.Rows.Count
'Dateipfad und Ziel für Import
With wsroh.QueryTables.Add(Connection:="TEXT;" & rehmpfad & k & "'_'" & enddatum2 & "'.csv", Destination:=wsroh.Cells(Zeilenzahl + 1, rohmbc))
'Import als Textformatierung
.TextFileParseType = xlDelimited
'Spaltentrennung in Quelldatei per Komma
.TextFileCommaDelimiter = True
'Aktualisieren der externen Datenverbindung
.Refresh
End With
End If
Next k
'Nächster Tag
EndDatum = EndDatum + i
Next i
- Füge am Ende des Codes den folgenden Abschnitt hinzu, um alle Datenverbindungen zu entfernen:
Dim qt As QueryTable
Dim ws As Worksheet
For each ws in ActiveWorkbook.worksheets
For Each qt In ws.QueryTables
If qt.Refreshing Then qt.CancelRefresh
qt.Delete
Next
Next
Häufige Fehler und Lösungen
-
Fehler: "Typen unverträglich"
Dies kann auftreten, wenn die Variable astrLinks leer ist. Stelle sicher, dass mindestens eine Datenverbindung vorhanden ist, bevor du die Schleife startest.
-
Fehler: "astrLinks = Leer"
Wenn du diese Fehlermeldung erhältst, überprüfe unter "Daten - Verbindungen", ob tatsächlich Verbindungen existieren. Möglicherweise musst du auch den Typ der Datenverbindungen überprüfen.
Alternative Methoden
Eine andere Möglichkeit, CSV-Daten zu importieren ohne eine Datenverbindung zu erstellen, besteht darin, die Daten direkt in ein Array zu laden und anschließend in die Excel-Tabelle zu übertragen. Hier ist ein einfacher Ansatz:
Dim csvData As Variant
Dim filePath As String
filePath = rehmpfad & "deinedatei.csv"
Open filePath For Input As #1
csvData = Split(Input$(LOF(1), 1), vbCrLf)
Close #1
Dim ws As Worksheet
Set ws = ActiveWorkbook.Sheets("DeinBlatt")
For i = LBound(csvData) To UBound(csvData)
ws.Cells(i + 1, 1).Value = csvData(i)
Next i
Diese Methode importiert die CSV-Daten ohne eine Tabelle und ohne Verbindungen.
Praktische Beispiele
Wenn du beispielsweise Daten von mehreren CSV-Dateien importieren möchtest, kannst du das Skript so anpassen, dass es in einer Schleife durch verschiedene Dateien iteriert. Hier ist ein Beispiel, das die oben genannten Konzepte kombiniert:
For k = 1 To 5 'Angenommen, du hast 5 CSV-Dateien
Call ImportCSV(rehmpfad & k & ".csv", "R" & k)
Next k
Sub ImportCSV(filePath As String, sheetName As String)
Dim ws As Worksheet
Set ws = ActiveWorkbook.Sheets(sheetName)
'Hier den Import-Code einfügen
End Sub
Tipps für Profis
- Verwende die
BreakLink-Methode, um alle Links in der Arbeitsmappe zu entfernen, bevor du den Import durchführst. Dies kann die Leistung verbessern.
- Achte darauf, dass du die Dateipfade anpassen kannst, indem du die Variablen
rehmpfad und rohmbc entsprechend setzt.
- Teste den Import mit einer kleinen Datei, um sicherzustellen, dass alles wie gewünscht funktioniert, bevor du größere Datenmengen importierst.
FAQ: Häufige Fragen
1. Warum sollte ich Datenverbindungen vermeiden?
Datenverbindungen können die Leistung deiner Excel-Datei verlangsamen, insbesondere wenn viele Verbindungen bestehen. Durch das Vermeiden von Verbindungen wird die Datei schneller und einfacher zu handhaben.
2. Was mache ich, wenn der Import nicht funktioniert?
Stelle sicher, dass der Dateipfad korrekt ist und die CSV-Datei im richtigen Format vorliegt. Überprüfe auch, ob die Datei tatsächlich Daten enthält und nicht leer ist.