/ / CSV-Datei mit VBA in Excel einlesen und die Ergebnisse in ein bestimmtes Arbeitsblatt ausgeben - Excel, VBA, CSV

CSV-Datei mit VBA in Excel einlesen und die Ergebnisse in einem bestimmten Arbeitsblatt ausgeben - Excel, VBA, CSV

Ich habe eine Weile gesucht und kann keine findeneinfache lösung. Ich habe eine CSV - Datei, die ich mit VBA in Excel einlesen und die Ergebnisse in einem bestimmten Zellbereich auf einem bestimmten Arbeitsblatt ausgeben möchte.

Ich habe den folgenden Code verwendet, aber wenn ich laufeDas Excel-Makro fügt die Daten zweimal in die nächste leere Spalte ein, anstatt sie zu kopieren. Es wird auch nur in das aktive Arbeitsblatt eingefügt, anstatt in mein spezielles Arbeitsblatt.

Irgendwelche Vorschläge, wie ich das machen kann?

Vielen Dank,

Public Sub Example()
Const csPath As String = "starting_positions.csv"
Dim ws As Excel.Worksheet
Set ws = Excel.ActiveSheet
With ws.QueryTables.Add("TEXT;" & csPath, ws.Cells(1, 1))
.FieldNames = True
.AdjustColumnWidth = True
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileCommaDelimiter = True
""// This array will need as many entries as there will be columns:
.TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat)
.Refresh
End With
End Sub

Antworten:

4 für die Antwort № 1

Angenommen, Sie führen den Code in derselben Arbeitsmappe aus, für die Sie CSV-Daten erfassen möchten, versuchen Sie Folgendes:

  1. Ersetzen Set ws = Excel.ActiveSheet mit Set ws = ThisWorkbook.Sheets(1) oder Set ws = ThisWorkbook.Sheets("Sheet1") um ein bestimmtes Blatt entweder anhand seines Index oder seines Namens zu definieren.
  2. ws.UsedRange.ClearContents Ort vorher With... Der Block löscht das gesamte Blatt, und daher werden neue Daten an derselben Stelle wie zuvor abgelegt.

Noch ein Hinweis: Falls Sie dieses Makro verwenden möchten viele Male - Erstellen Sie nicht jedes Mal eine neue Verbindung. Falls alle Optionen ähnlich sind - nur verwenden .Refresh Methode.

Wenn Sie mit dem Zusammenführen von Codeteilen nicht weiterkommen, versuchen Sie, einen Makrorecorder zu verwenden, indem Sie einen der Schritte manuell ausführen. In Ihrem Fall werden die meisten Probleme dadurch behoben. Viel Glück!