Variabler Pfad im Query
19.01.2021 12:31:33
V.Mendez
ich benötige Hilfe bei der VBA basierten Imports einer CSV Datei.
Leider streikt der Import immer mit dem Hinweis, dass ein absoluter Pfad angegeben werden muss.
Ich bin am Ende meines Lateins und würde daher eure Hilfe erbitten:
Folgenden Code habe ich erstellt:
Sub Import()
Dim Importdatei As String
Dim path As String
Dim file As Office.FileDialog
Dim objQr
For Each objQr In ThisWorkbook.Queries
objQr.Delete
Next
Set file = Application.FileDialog(msoFileDialogFilePicker)
With file
.Title = "Dateiauswahl"
.Filters.Clear
.Filters.Add "csv", "*.csv"
.Filters.Add "All Files", "*.*"
If .Show = True Then
path = .SelectedItems(1)
Else
Exit Sub
End If
End With
Sheets("Report").Select
Cells.Select
Selection.Delete
ActiveWorkbook.Queries.Add Name:="Report", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Csv.Document(File.Contents(""path""),[ _
Delimiter="","", Columns=32, Encoding=65001, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & _
Chr(10) & " #""Höher gestufte Header"" = Table.PromoteHeaders(Quelle, [PromoteAllScalars= _
true])," & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"" = Table.TransformColumnTypes(#""Hö" & _
"her gestufte Header"",{{"""", type text}, {""Serial Number"", Int64.Type}, {""Owner _
Company Name"", type text}, {""Agreement Number"", Int64.Type}, {""Status"", type text}, {"" _
Agreement Type"", type text}, {""Package"", type text}, {""Service Level"", type text}, {"" _
Services"", type text}, {""Start Date"", type date}, {""End Date"", type date}, {""Installed At Site " & _
"Name"", type text}, {""Group"", type text}, {""Product Number"", type text}, {""System _
_
_
Name"", type text}, {""Os"", type text}, {""# Of Shelves"", Int64.Type}, {""# Of Disks"", Int64. _
_
Type}, {""Nvram"", Int64.Type}, {""Nvmem"", Int64.Type}, {""Motherboard Memory"", Int64.Type}, { _
""Autosupport Status"", type text}, {""Installed At Address"", type text}, {""City"", typ" & _
"e text}, {""State"", Int64.Type}, {""Postal Code"", Int64.Type}, {""Country"", type _
text}, {""Contact First Name"", type text}, {""Contact Last Name"", type text}, {""Contact _
Email"", type text}, {""Agreement Company"", type text}, {""Reseller Company _
""," & _
" type text}})," & Chr(13) & "" & Chr(10) & " #""Entfernte Spalten"" = Table. _
RemoveColumns(#""Geänderter Typ"",{"""", ""Agreement Type"", ""Package"", ""Services"", "" _
Installed At Site Name"", ""Group"", ""System Name"", ""Os"", ""Nvram"", ""Nvmem"", "" _
Motherboard Memory"", ""Autosupport Status"", ""State"", ""Contact First Name"", ""Contact Last Name"", ""Contact Email"", ""Reseller Company" & _
" _
_
_
"", ""Service Level"", ""Status""})," & Chr(13) & "" & Chr(10) & " _
_
#""Neu angeordnete Spalten"" = Table.ReorderColumns(#""Entfernte Spalten"",{""Owner Company _
Name"", ""Agreement Number"", ""Serial Number"", ""Start Date"", ""End Date"", ""Product Number"", ""# Of Shelves"", ""#" & _
" Of Disks"", ""Installed At Address"", ""City"", ""Postal Code"", ""Country"", "" _
Agreement Company""})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Neu _
_
angeordnete Spalten"""
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Report; _
Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Report]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Report"
.Refresh BackgroundQuery:=False
End With
End Sub