Makro zum Importieren einer CSV-Datei in ein nicht aktives Excel-Arbeitsblatt

Ich habe eine Excel-Arbeitsmappe mit aktiviertem Makro, die mehrere benannte Arbeitsblätter enthält. Eines der Arbeitsblätter heißt "panel" und ein zweites Arbeitsblatt heißt "data". Das Blatt "Panel" hat eine Schaltfläche, der ein Makro zugeordnet ist. Ich möchte die Schaltfläche im Arbeitsblatt mit dem Namen "Bedienfeld" auswählen und ein Fenster zum Suchen nach Dateien anzeigen. Sobald der Benutzer die CSV-Datei auf seiner Festplatte auswählt, möchte ich, dass der Inhalt der CSV-Datei in das Arbeitsblatt mit dem Namen "data" importiert wird, beginnend in Zelle A1.

PROBLEM 1: Die vba, die ich der Schaltfläche zugewiesen habe, bewirkt, dass der Inhalt der CSV-Datei auf demselben Arbeitsblatt wie die Schaltfläche abgelegt wird (das Arbeitsblatt "Panel"). Ich möchte, dass der Inhalt der CSV-Datei auf dem Datenblatt steht.

PROBLEM 2: Außerdem gibt es eine Code-Zeichenfolge, die auf meine Festplatte verweist, und eine Datei mit dem Namen "capture.csv". Wenn sich die Excel-Datei mit aktivierten Makros auf einem anderen Computer befindet, stürzt die Datei ab. Gibt es eine Möglichkeit, die Pfadzeichenfolge zu entfernen, damit jeder Computer die Datei verwenden kann?

Jede Hilfe zur Behebung dieses Problems wäre sehr dankbar. Das der Schaltfläche zugewiesene Makro lautet wie folgt:

Sub load_csv()
Dim fStr As String
With Application.FileDialog(msoFileDialogFilePicker)
.Show
If .SelectedItems.Count = 0 Then
MsgBox "Cancel Selected"
End
End If
'fStr is the file path and name of the file you selected.
fStr = .SelectedItems(1)
End With
Range("A1").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Users\laptop\Desktop\CAPTURE.csv", Destination:=Range("$A$1"))
.Name = "CAPTURE"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
MsgBox fStr
End With
End Sub

Antworten auf die Frage(2)

Ihre Antwort auf die Frage