Man müsste näheres zum Aufbau der Datei kennen, allgemein könnte man es so angehen.
Option Explicit
Public Sub Test()
On Error GoTo ErrHandler
Call ImportFromCSV( _
Filename:="R:\Präp-Listen Temp\NGS\Rohdaten\0123456789.summary.csv", _
Target:=Worksheets("Makro-Sheet").Range("C1"), _
Columns:=6)
Exit Sub
ErrHandler:
Call MsgBox(Err.Description, vbCritical, Err.Source & " - Fehler " & Err.Number)
End Sub
Private Sub ImportFromCSV(Filename As String, Target As Excel.Range, Optional Delimiter = ",", Optional Columns)
If Dir$(Filename) = "" Then
Call Err.Raise(53, Source:="ImportFromCSV()") 'file not found
End If
If Target Is Nothing Then
GoTo ErrInvalidArg
End If
Dim objQueryTbl As Excel.QueryTable
Dim objQuery As Excel.WorkbookQuery
Dim strQuery As String
On Error GoTo ErrInvalidArg
strQuery = "let Source = Csv.Document(File.Contents(""" & Filename & """), " & _
"[Delimiter=""" & Delimiter & """" & IIf(IsMissing(Columns), "", ",Columns=" & Int(Columns)) & "]) in Source"
On Error GoTo 0
With Target.Worksheet.Parent.Queries
Set objQuery = .Add(Name:="__tempFileQuery", Formula:=strQuery)
End With
Dim strSource As String
strSource = "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=" & objQuery.Name & ";"
Set objQueryTbl = ActiveSheet.ListObjects.Add(SourceType:=0, Source:=strSource, Destination:=Target).QueryTable
With objQueryTbl
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [" & objQuery.Name & "]")
.RefreshStyle = xlInsertDeleteCells
.AdjustColumnWidth = True
.BackgroundQuery = False
End With
Call objQueryTbl.Refresh
Call objQueryTbl.ListObject.Unlist
Call objQuery.Delete
Exit Sub
ErrInvalidArg:
Call Err.Clear
Call Err.Raise(5, "ImportFromCSV()") 'invalid arg or call
End Sub
Beachte bitte, dass das Trennzeichen auf das Komma voreingestellt ist - dem englischen Dateinamen nach ist das vermutlich auch der Fall.
Das Suchen nach der Datei (einschl. in Unterverzeichnissen) bleibe ich schuldig. Das Thema wurde schon über die Kotzgrenze hinaus oft genug behandelt - in diesem und anderen Foren ...
Grüße
|