ERLANDSEN DATA CONSULTING Excel & VBA Tips   Information in English / Informasjon på engelsk

Disse websidene oppdateres ikke lengre og er kun tilgjengelig for historikken sin skyld.

Klikk her for å gå til den oppdaterte informasjonen.

Importer data fra en tekstfil (ADO)

Prosedyren nedenfor kan benyttes til å hente et ADO recordset fra en tekstfil og fylle inn resultatet i et regneark.

Sub GetTextFileData(strSQL As String, strFolder As String, rngTargetCell As Range)
' example: GetTextFileData "SELECT * FROM filename.txt", "C:\FolderName", Range("A3")
' example: GetTextFileData "SELECT * FROM filename.txt WHERE fieldname = 'criteria'", _
    "C:\FolderName", Range("A3")
Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer
    If rngTargetCell Is Nothing Then Exit Sub
    Set cn = New ADODB.Connection
    On Error Resume Next
    cn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
        "Dbq=" & strFolder & ";" & _
        "Extensions=asc,csv,tab,txt;"
    On Error GoTo 0
    If cn.State <> adStateOpen Then Exit Sub
    Set rs = New ADODB.Recordset
    On Error Resume Next
    rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
    On Error GoTo 0
    If rs.State <> adStateOpen Then
        cn.Close
        Set cn = Nothing
        Exit Sub
    End If
    ' overskriftene
    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 ' virker i Excel 2000 eller nyere
    'RS2WS rs, rngTargetCell ' alternativ metode for Excel 97 eller eldre
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub

Prosedyren kan eventuelt benyttes slik:

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:\FolderName", Range("A3")
    Columns("A:IV").AutoFit
    ActiveWorkbook.Saved = True
End Sub
Bytt ut filename.txt med navnet på den tekstfilen som du skal hente data fra.
Bytt ut C:\FolderName med navnet på den mappen som tekstfilen er lagret i.

Den første raden med data i tekstfilen blir benyttet som kolonneoverskrifter/feltnavn.
Den enkelte kolonne med data må være adskilt med det samme listeskilletegnet som er angitt i de regionale innstillingene i Kontrollpanelet. I Norge er dette vanligvis et semikolon (;), andre steder kan dette være et komma (,).

Prosedyren RS2WS finner du ved å klikke på denne linken.

Eksempelmakroene forutsetter at ditt VBA-prosjekt har en referanse til ADO objektbiblioteket.
Dette gjøres i VBE ved ved å velge menyvalget Verktøy, Referanser og krysse av for Microsoft ActiveX Data Objects x.x Object Library.

 

Dokumentet er sist oppdatert 2002-04-02 22:16:41      Utskriftsvennlig versjon

 

Erlandsen Data Consulting     http://www.erlandsendata.no/   
Excel & VBA Tips   Copyright ©1999-2017    Ole P. Erlandsen   All rights reserved
E-post kontaktadresse