ich möchte eine CSV Datei in mein bestehendes Blatt importieren. Dafür habe ich mir mit Hilfe des Recorders folgenden Code (Sub CSV_Import_Fix) aufgezeichnet, dieser funktioniert auch einwandfrei und bringt mir das gewünschte Format.
Nun möchte ich den Pfad der zu importierenden Datei auswählen können und nicht fix im Quellcode festlegen. Das habe ich mit der Erweiterung versucht (Sub CSV_Import_GOF) - beim Versuch ist es aber leider auch geblieben.
Laufzeitfehler 1004: Excel kann die Textdatei für die Aktualisierung des externen Datenbereichs nicht finden. Letzte Zeile (.Refresh BackgroundQuery:=False) wird gelb markiert.
Da der Code ohne FileDialog funktioniert kann ich mir das im Moment nicht erklären.
Meine Fragen:
1. Warum tritt dieser Fehler auf und wie behebe ich ihn?
2. Warum muss ich bei beiden Codes ".CommandType = 0" auskommentieren? (Sonst LFZ 5)
Vielen Dank für die Unterstützung
Schönen Abend und Gruss, Henner
Sub CSV_Import_Fix()
ActiveSheet.Cells.ClearContents
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Users\MaxMuster\Desktop\ImportMe.csv", _
_
Destination:=Range("$A$1"))
'.CommandType = 0
.Name = "CSV Import"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
_
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileDecimalSeparator = "."
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Sub CSV_Import_GOF()
ChDir (ThisWorkbook.Path & "\")
strDatei = Application.GetOpenFilename(FileFilter:="CSV-Dateien (*.csv), *.csv", Title:="Bitte _
_
Datei auswählen")
If strDatei False Then
ActiveSheet.Cells.ClearContents
With ActiveSheet.QueryTables.Add(Connection:="TEXT;strDatei", Destination:=Range("$A$1"))
'.CommandType = 0
.Name = "CSV Import"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
_
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileDecimalSeparator = "."
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End If
End Sub