Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1224to1228
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

dBase-Datei einlesen

dBase-Datei einlesen
Peter/Berlin
Hi Excel-Freunde,
ich habe eine dBase-Datei (.*dbf) mit ca. 100 000 Zeilen.
Ein Excel-Blatt hat jedoch nur 65536 Zeilen. Wie kann ich trotzdem alle Zeilen der dbf-Datei einlesen?
Vielleicht mit VBA?
Mit
Open ImportFile For Input As #1
Do While Not EOF(1)
Line Input #1, FileRow
Loop
Close #1
funktioniert es bei mir leider nicht, habe schon getestet.
Wer kann mir weiterhelfen?
Gruß aus Berlin
Peter

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: dBase-Datei einlesen
08.08.2011 16:53:17
ChrisL
Hi Peter
Würde nach Access importieren und wenn du es dann noch in Excel brauchst einfach in zwei Schritten mit Copy/Paste.
cu
Chris
AW: dBase-Datei einlesen
10.08.2011 09:46:29
bst
Morgen,
Du könntest das auch mit ADO machen.
HTH, Bernd
--
Option Explicit

Sub ReadDBaseFile()
    ' Connection siehe: http://www.activevb.de/rubriken/faq/faq0091.html
    
    ' Datenbank-Treiber
    Const JET_ENGINETYPE_DBASE3 = &H10
    Const JET_ENGINETYPE_DBASE4 = &H11
    Const JET_ENGINETYPE_DBASE5 = &H12
    
    ' Settings für die Connection
    Const cstrDatabase As String = "C:\TSR\INIT\" ' <--- Pfad anpassen
    ' Const cstrUsername As String = ""
    ' Const cstrPassword As String = ""
    
    Dim adoConnection As ADODB.Connection
    Dim adoRecordset As ADODB.Recordset
    Dim strSQL As String
    Dim i As Long
    
    Set adoConnection = New ADODB.Connection
    With adoConnection
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        ' .Properties("User ID").Value = cstrUsername
        ' .Properties("Password").Value = cstrPassword
        .Properties("Data Source").Value = cstrDatabase
        .Properties("Jet OLEDB:Engine Type").Value = JET_ENGINETYPE_DBASE5
        .Open
        Debug.Print .ConnectionString
        
        Set adoRecordset = New ADODB.Recordset
        strSQL = "SELECT * FROM FEHL1203.dbf" ' <--- SQL Befehl anpassen
        
        ' adOpenForwardOnly wäre schneller, liefert aber u.a. keinen Wert für RecordCount !
        adoRecordset.Open strSQL, adoConnection, adOpenStatic, adLockReadOnly, adCmdText
        
        ' Feldnamen anzeigen
        ' For i = 0 To adoRecordset.Fields.Count - 1
        ' Debug.Print i, adoRecordset.Fields(i).Name
        ' Next
        
        Debug.Print adoRecordset.GetString ' das liefert alle Datensätze als einen String zurück
        .Close
    End With
    
    ' Datenbank-Objekt entfernen
    Set adoConnection = Nothing
End Sub


Anzeige
AW: dBase-Datei einlesen
12.08.2011 10:18:07
Peter/Berlin
Hallo Bernd,
danke für Deinen ADO-Code.
Leider kommt die Fehlermeldung:
'Das Microsoft Jet-Datenbankmodul konnte das Objekt "xyz.dbf" (dbf-Dateiname) nicht finden.'
Ich habe über Extras-Verweise das
Microsoft ActiveX Data Objects 2.8 Library
und
Microsoft ActiveX Data Objects Recordset 2.8 Library
aktiviert.
Kannst Du mir noch einen Tip geben, wo der Fehler liegen könnte?
Gruß aus Berlin
Peter
AW: dBase-Datei einlesen
12.08.2011 10:47:37
bst
Morgen Peter,
hast Du den Pfad angepasst? Und auch den Backslash am Ende nicht vergessen?
cu, Bernd
AW: dBase-Datei einlesen
12.08.2011 11:15:16
Peter/Berlin
Hallo Bernd,
Pfad ist angepasst, Backslash am Ende vorhanden.
Hier der Inhalt des .ConnectionString:
.ConnectionString =
Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=H:\Daten\Daten-I-Lw\FREBOB\IFL\;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=17;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
Gruß Peter
Anzeige
AW: dBase-Datei einlesen
12.08.2011 11:24:46
Peter/Berlin
Bernd,
es klappt jetzt!!!
Fehlerursache war der Dateiname:
BERLIN220711.dbf
Mit BERLIN.dbf funktioniert es prima (warum auch immer?)
Gruß
Peter
AW: dBase-Datei einlesen
12.08.2011 11:26:18
bst
Hallo Peter,
dBase kann IIRC nur die 'alten' MS-DOS Namen mit max 8.3 Zeichen.
cu, Bernd
AW: dBase-Datei einlesen
15.08.2011 08:25:57
Peter/Berlin
Hallo Bernd,
meine dbf-Datei, die ich einlesen möchte, hat 13 Spalten und ca. 97 000 Zeilen.
Deren Inhalt soll in 2 Excel-Blätter eingelesen werden.
Mit adoRecordset.Fields(i).Name werden die 13 Spaltennamen eingelesen.
Mit adoRecordset.GetRows(-1,x,y) kann ich jedoch nur 1 oder max. 2 Zeilen einlesen.
Trotz aller Versuche am Wochenende gelingt es mir nicht, alle 97 000 Zeilen einzulesen.
Bei Verwendung von adoRecordset.GetString wird der String eingelesen, aber nur wenn ich die Zeilenzahl
der dbf-Datei zuvor auf z.B. 20 begrenzt habe. Sonst kommt die Fehlermeldung
'nicht genügend Speicherplatz vorhanden.'
Kannst Du mir einen Tipp geben, wie ich die 97 000 Zeilen in die beiden Excel-Blätter hereinbekomme?
Gruß aus Berlin
Peter
Anzeige
AW: dBase-Datei einlesen
16.08.2011 20:44:43
bst
Sorry Peter,
ich bin derzeit im Ausland mit 'beschränktem' Internetzugang und ohne MS Office unterwegs...
Wenn kein Anderer antwortet musst Du Dich bis Ende August/Anfang September gedulden :-(
cu, Bernd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige