Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Access Daten in Excel schreiben

Access Daten in Excel schreiben
30.04.2015 10:30:19
Sonja
Hallo,
nachdem mir hier schon super geholfen wurde, zwecks Verweise um eine Verbindung von Excel und Access zu bekommen, hoffe ich weiterhin gute Tipps zu bekommen.
Ich versuche Daten aus einer Access Datenbank in meine Excel Datei zu bekommen.
Jetzt habe ich das Problem, das mein SQL in der Datenbank funktioniert wenn ich abfrage, aber wenn ich versuche die Daten in mein Excel zu bekommen, kommt der Fehler: Laufzeitfehler 3061, 1 parameter wurden erwartet, aber es wurden zu wenige Parameter übergeben.
Hier mein Code in der Excel Datei:
Option Explicit
' benötigt im VBA einen Verweis auf M$ DAO x.y Object Library !!!
Const dbfile As String = "T:\vertrieb_zae\FRG_ARTIKEL.mdb"
Private Sub cmdRead_Click()
Dim dbs As Database ' Datenbank
Dim qdf As QueryDef ' Datenbankabfrage
Dim rec As Recordset ' Ergebnis der Datenbankabfrage
Dim mysql As String ' ein SQL-Befehl
Dim mynum As Long ' die aktuelle Artikelnummer
Dim i As Long ' Zeilennummer
Set dbs = OpenDatabase(dbfile)
With dbs
'for schleife um alle fag nummern zu durchlaufen
For i = 2 To Cells(2, 1).End(xlDown).Row
'hier wird die nummer gespeichert
mynum = CLng(Val(Cells(i, 1).Value))
'sql mit dem auf die db abgefragt wird
mysql = "SELECT ARTBEZ FROM sql_Tab_ges_FEK WHERE FAGNummer=" & mynum & ";"
'daten abfragen
Set qdf = .CreateQueryDef("", mysql)
' Ergebnis der Abfrage holen
Set rec = qdf.OpenRecordset(dbOpenSnapshot)
If Not rec.EOF Then
'zurückgegebene felder in die zellen speichern
Cells(i, 4).Value = rec.Fields(0).Value
Cells(i, 3).Value = rec.Fields(1).Value
Cells(i, 2).Value = rec.Fields(2).Value
End If
Next
End With
dbs.Close
End Sub

Mein SQL-Code dazu funktioniert in Access:

SELECT ARTBEZ, FLD900, FLD050
FROM sql_Tab_ges_FEK
WHERE FAGNummer=108386;

Jetzt verzweifel ich ein bisschen dabei, das auch in Excel laufen zu bekommen.
Komischerweiße hatte ich es heute schonmal so weit, das er mir in Excel nur die Artikelbezeichnung geschrieben hat. Aber noch nicht mal das bekomme ich wieder hin.
Übrigens funktioniert genau der selbe Sql code, also ohne die Variable auch nicht in Excel:
mysql = "SELECT ARTBEZ FROM sql_Tab_ges_FEK WHERE FAGNummer=108386;"
Schonmal vielen Dank im Vorraus demjenigen, der Lust hat sich das anzuschauen ;)
Mit freundlichen Grüßen
Sonja E.

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Access Daten in Excel schreiben
30.04.2015 11:02:44
Luschi
Hallo Sonja,
ich glaube, Du bist da ein bischen neben der Spur.
Du mußt Dich entscheiden, ob Du das mit:
- Excel.QueryDef (braucht keine DAO-Objekt-Definitionen)
- DAO oder
- ADODB
machen möchtest.
Wahrscheinlich ist es besser, wenn Du eine kleine Access-DB bereitstellst und erklärst, welche Daten Du in der Exceldatei haben willst. Sollte auch noch dazukommen, daß die 'FAGNummer' variabel ist, dann ist DAO oder ADODB/ADOX ist bessere Wahl.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Access Daten in Excel schreiben
06.05.2015 09:46:20
Luschi
Hallo Sonja,
machst Du Urlaub auf Ballermann 6 oder schläfst Du wie Dornröschen 100 Jahr',
fragt sich Luschi
aus klein-Paris
;
Anzeige
Anzeige

Infobox / Tutorial

Access Daten in Excel schreiben: Schritt-für-Schritt-Anleitung


Schritt-für-Schritt-Anleitung

Um Daten aus einer Access-Datenbank in eine Excel-Tabelle zu schreiben, kannst Du den folgenden VBA-Code verwenden. Stelle sicher, dass Du einen Verweis auf die Microsoft DAO x.y Object Library in Deinem Excel VBA-Projekt setzt.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere und füge den folgenden Code in das Modul ein:
Option Explicit
Const dbfile As String = "T:\vertrieb_zae\FRG_ARTIKEL.mdb"

Private Sub cmdRead_Click()
    Dim dbs As Database
    Dim qdf As QueryDef
    Dim rec As Recordset
    Dim mysql As String
    Dim mynum As Long
    Dim i As Long

    Set dbs = OpenDatabase(dbfile)
    With dbs
        For i = 2 To Cells(2, 1).End(xlDown).Row
            mynum = CLng(Val(Cells(i, 1).Value))
            mysql = "SELECT ARTBEZ FROM sql_Tab_ges_FEK WHERE FAGNummer=" & mynum & ";"
            Set qdf = .CreateQueryDef("", mysql)
            Set rec = qdf.OpenRecordset(dbOpenSnapshot)
            If Not rec.EOF Then
                Cells(i, 4).Value = rec.Fields(0).Value
                Cells(i, 3).Value = rec.Fields(1).Value
                Cells(i, 2).Value = rec.Fields(2).Value
            End If
        Next
    End With
    dbs.Close
End Sub
  1. Ändere den dbfile-Pfad entsprechend Deiner Datenbank.
  2. Führe das Makro aus, um die gewünschten Daten in Deine Excel-Tabelle zu schreiben.

Häufige Fehler und Lösungen

  • Laufzeitfehler 3061: Dieser Fehler tritt auf, wenn nicht genügend Parameter übergeben werden. Überprüfe Deinen SQL-Befehl und stelle sicher, dass die FAGNummer in der Excel-Datei korrekt eingegeben ist.

  • Kein Ergebnis in Excel: Stelle sicher, dass die Daten in der Access-Datenbank vorhanden sind und dass die SQL-Abfrage korrekt formuliert ist.


Alternative Methoden

Neben der Verwendung von DAO kannst Du auch ADODB verwenden, um Daten aus Access in Excel zu importieren. Hier ein Beispiel:

Dim conn As Object
Dim rs As Object
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=T:\vertrieb_zae\FRG_ARTIKEL.mdb;"
rs.Open "SELECT ARTBEZ FROM sql_Tab_ges_FEK WHERE FAGNummer=108386;", conn

If Not rs.EOF Then
    Cells(2, 1).Value = rs.Fields(0).Value
End If

rs.Close
conn.Close

Mit dieser Methode kannst Du ebenfalls Access-Daten in Excel schreiben.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du verschiedene Artikelbezeichnungen aus Access in Excel importieren kannst:

Angenommen, Du hast eine Tabelle mit verschiedenen FAGNummer und möchtest die zugehörigen Artikelbezeichnungen abrufen. Der oben gezeigte Code kann in einer Schleife verwendet werden, um eine Liste aller Artikel zu importieren.


Tipps für Profis

  • Nutze fehlerbehandlungsmechanismen in Deinem VBA-Code, um unerwartete Fehler zu vermeiden.
  • Halte den Code modular, indem Du wiederverwendbare Funktionen erstellst.
  • Dokumentiere Deinen Code, um die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich eine QDF-Datei in Excel öffnen?
Du kannst QDF-Dateien in Excel öffnen, indem Du den VBA-Befehl CreateQueryDef verwendest, um eine Abfrage zu erstellen.

2. Funktioniert dieser Code auch in Excel 365?
Ja, der Code sollte in Excel 365 sowie in anderen Versionen von Excel funktionieren, solange der Verweis auf die DAO-Bibliothek korrekt gesetzt ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige