Ich habe eine Makro-fähige Excel-Arbeitsmappe, die mehrere benannte Arbeitsblätter enthält. Eines der Arbeitsblätter heißt "Panel" und ein zweites Arbeitsblatt heißt "Data". Das Blatt mit der Bezeichnung "Panel" hat eine Schaltfläche, der ein Makro zugewiesen ist. Ich möchte die Schaltfläche auf dem Arbeitsblatt mit dem Namen "Panel" auswählen und ein Fenster zum Suchen nach Dateien anzeigen lassen. Sobald der Benutzer die CSV-Datei auf ihrer Festplatte auswählt, möchte ich, dass der Inhalt der CSV-Datei in das Arbeitsblatt "Daten" beginnend in Zelle A1 importiert wird.Makro zum Importieren von CSV-Datei in ein Excel nicht aktives Arbeitsblatt
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 (das Arbeitsblatt "Arbeitsfläche") platziert wird. Ich möchte, dass der Inhalt der CSV-Datei auf dem "Daten" -Blatt platziert wird.
PROBLEM 2: Außerdem gibt es eine Reihe von Code, der auf meine Festplatte und eine Datei namens "capture.csv" verweist. Also, wenn Makro aktiviert Excel-Datei auf einem anderen Computer ist, stürzt die Datei ab. Gibt es eine Möglichkeit, die Pfadzeichenfolge zu entfernen, sodass jeder Computer die Datei verwenden kann?
Jede Hilfe zur Behebung dieses Problems wird sehr geschätzt. 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
Genau das, was ich sagen wollte. Das sollte funktionieren – Rick
Danke, dass Sie sich die Zeit genommen haben, mir zu helfen. Ich habe der Taste den Code zugewiesen, den du geschrieben hast. Wenn ich die CSV-Datei lade, erscheint ein Meldungsfenster: "Laufzeitfehler '-2147024809 (80070057) Der Zielbereich befindet sich nicht auf demselben Arbeitsblatt, auf dem die Abfragetabelle erstellt wird." – George
Change 'Destination: = Bereich (" $ A $ 1 "))' to 'Ziel: = ThisWorkbook.Sheets (" Data "). Range (" $ A $ 1 "))' –