Das folgende Verfahren kann verwendet werden, um ein ADO-Recordset aus einer Textdatei abzurufen und das Ergebnis in ein Arbeitsblatt einzutragen.
Sub GetTextFileData(strSQL As String, strFolder As String, rngTargetCell As Range) ' Beispiel: GetTextFileData "SELECT * FROM filename.txt", _ "C:\FolderName", Range("A3") ' Beispiel: GetTextFileData "SELECT * FROM filename.txt WHERE fieldname = 'criteria'", _ "C:\FolderName", Range("A3") Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer Wenn rngTargetCell nichts ist Then Exit Sub Set cn = Neue ADODB.Connection On Error Resume Next cn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _ "Dbq=" & strOrdner & ";" & _ "Erweiterungen=asc,csv,tab,txt;" Bei Fehler GoTo 0 Wenn cn.State adStateOpen Then Exit Sub Set rs = New ADODB.Recordset On Error Resume Next rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText Bei Fehler GoTo 0 Wenn rs.State adStateOpen Then cn.Close Set cn = Nothing Exit Sub End If ' die Feldüberschriften For f = 0 To rs.Fields.Count - 1 rngTargetCell.Offset(0, f).Formula = rs.Fields(f).Name Next f rngTargetCell.Offset(1, 0 ).CopyFromRecordset rs ' funktioniert in Excel 2000 oder höher 'RS2WS rs, rngTargetCell ' funktioniert in Excel 97 oder früher rs.Close Set rs = Nichts cn.Close Set cn = Nothing End Sub
Das Verfahren kann wie folgt verwendet werden:
Sub TestGetTextFileData() Application.ScreenUpdating = False Workbooks.Add GetTextFileData "SELECT * FROM filename.txt", "C:\FolderName", Range("A3") ' GetTextFileData "SELECT * FROM filename.txt WHERE fieldname = 'criteria' ", _ "C:\Ordnername", Range("A3") Columns("A:IV").AutoFit ActiveWorkbook.Saved = True End Sub
Ersetzen Sie filename.txt durch den Namen der Textdatei, aus der Sie Daten abrufen möchten.
Ersetzen Sie C:\FolderName durch den Namen des Ordners, in dem die Textdatei gespeichert ist.
Die erste Zeile in der Textdatei wird als Spaltenüberschriften/Feldnamen verwendet.
Jede Spalte mit datwa muss mit dem Listentrennzeichen getrennt werden, das im regionalen . verwendet wird
Einstellungen in der Systemsteuerung. In Norwegen ist dies normalerweise ein Semikolon (;), in anderen Ländern kann dies ein Komma (,) sein.
Das Verfahren RS2WS finden Sie unter diesem Link.
Im Makrobeispiel wird davon ausgegangen, dass Ihr VBA-Projekt einen Verweis auf die ADO-Objektbibliothek hinzugefügt hat.
Sie können dies innerhalb der VBE tun, indem Sie das Menü Extras, Referenzen auswählen und Microsoft . auswählen
ActiveX-Datenobjekte x.x-Objektbibliothek.