Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
948to952
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
948to952
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Daten aus Access
07.02.2008 12:42:00
Baronf
Habe ein Frage,
ich muss Daten aus einer Accessdatenbank - einer Abfrage- in Excel einlesen. Die Abfrage heisst Mengen und hat die Spalten (Artikel/Monat/Menge).
Ist das generell Möglich? In was für Schritten muss ich vorgehen?
Wie verweise ich auf eine Accessdatenbank?
Danke und Gruß
Frederieke

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

Betreff
Datum
Anwender
Anzeige
AW: Daten aus Access
07.02.2008 13:04:03
Peter
Hallo Frederieke
hier ist ein laufendes (funktionierendes) Muster einer Excel Anwendun, die aus Access ihre Daten holt:
Du musst natürlich den Pfad und den Dateinamen anpassen, ebenfalls das Tabellenblatt in das kopiert werden soll.

Option Explicit
'
'   Achtung der Verweis auf: Microsoft ActiveX Data Objects 2.0 Library
'   oder eine höhere Version (2.1, 2.5) muss aktiviert sein.
'
'   Hier soll eine Access-Datenbank, die passwortgeschützt ist gelesen werden.
'
'   Achtung: Die Namen in Access dürfen keinen Bindestrich, sondern immer
'            den Unterstrich als Text-Trennung enthalten - z. B. PSTLZ_Straße.
'
Sub DBZugriff()
Dim Connect    As Connection  ' die Verbindung zu Access
Dim RecSet     As Recordset   ' der Access RecordSet
Dim SQLString  As String      ' der SQL Befehl
Dim Ziel       As Worksheet   ' Excel-Tabellenblatt
Dim Zeile      As Integer     ' Zeile
Dim Spalte     As Integer     ' Spalte
Dim DBPfad     As String      ' Pfad der Access-Anwendung
Dim DBDatei    As String      ' Name der Access-Datei bzw. DB
Dim DBTab      As String      ' Name der Access-Tabelle
Dim Suchbegr   As String      ' String als Suchbegriff
   DBPfad = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Access-DBs\"
   DBDatei = "SUMPF-MIS.mdb"
   DBTab = "adressen"
   Set Ziel = Worksheets("Tabelle8")   ' Ziel Tabellenblatt in Excel
'  Die Datenbank öffnen
   Set Connect = New ADODB.Connection
   With Connect  ' für Access 2000 und höhere                     '~~~~~~~~~~~~~~~~
      .Provider = "Microsoft.Jet.OLEDB.4.0" + ";Jet OLEDB:Database Password=welcome"
      .ConnectionString = "Data Source=" & DBPfad & DBDatei       '~~~~~~~~~~~~~~~~
      .Open
   End With
'
'  ******************************************************************************
'  im SQL-String definieren was geholt werden soll => hier verschiedene Varianten
'  ******************************************************************************
'
'    hier alles - die komplette Access-Tabelle
   'SQLString = "SELECT Adressen.* FROM Adressen" ' <-- Hier die Datenbanktabelle
   SQLString = "SELECT " & DBTab & _
                ".* FROM " & DBTab & "" ' <-- Hier die Datenbanktabelle
   If SQLString = "" Then
      MsgBox "hier ist der Wurm drin, der SQLString ist leer - Abbruch.", _
         16, "   der SQLString wurde nicht gefüllt."
      Exit Sub
    Else
      'MsgBox SQLString      ' den SQL-String anzeigen
   End If
   Set RecSet = New ADODB.Recordset
   RecSet.Open SQLString, Connect, adOpenDynamic, adLockReadOnly
   Cells.ClearContents    ' den alten Inhalt löschen
   Call Kopf_entfaerben   ' die alten Kopfzeilen entfernen
   Application.ScreenUpdating = False
'  Die Feldnamen der Datenbanktabelle in die erste Zeile des
'           Excel Ziel-Tabellenblattes schreiben
   For Spalte = 0 To RecSet.Fields.Count - 1
      Ziel.Cells(1, Spalte + 1) = RecSet.Fields.Item(Spalte).Name
   Next Spalte
   Call Kopf_farbig(RecSet.Fields.Count) ' die neuen Kopfzeilen farbig, fett
'  Jetzt alle selektierten Sätze holen und in das Excel-Tabellenblatt schreiben
   Zeile = 1
   If RecSet.EOF = False Then  ' kein EOF => es gibt also Daten !
      RecSet.MoveFirst         ' auf dem ersten Datensatz aufsetzen
    Else
      MsgBox "es konnte nichts selektiert werden => Abbruch.", _
         16, "    fehlerhafte Selektion ?"
      Exit Sub
   End If
   Do While RecSet.EOF = False
      Zeile = Zeile + 1
      For Spalte = 0 To RecSet.Fields.Count - 1
         If IsNull(RecSet.Fields.Item(Spalte).Value) = False Then
            Ziel.Cells(Zeile, Spalte + 1) = RecSet.Fields.Item(Spalte).Value
            Ziel.Rows(Zeile & ":" & Zeile).RowHeight = 13.2
         End If
      Next Spalte
      RecSet.MoveNext
   Loop
   Cells.EntireColumn.AutoFit
   [A1].Select
   Application.ScreenUpdating = True
   RecSet.Close
   Connect.Close
End Sub


Gruß Peter

Anzeige
AW: Daten aus Access
07.02.2008 16:06:00
Yal
Hallo Frederieke, hallo Peter,
Schönes Coding, Peter! Aber muss Frederiekes Lösung unbedingt mit VBA erfolgen? Das könnte ich aus der Frage nicht herauslesen.
ODBC-Datenbanken lassen sich unter "Daten >> Externe Daten importieren >> Daten importieren..." in Excel einbinden. Dann den Assistent folgen, um den Access und die passende Abfrage zu finden. Da werden nicht nur die Daten importiert sondern auch die Abfrage-Definition, was für eine spätere Aktualisierung oder Anpassung Sinn macht.
Viel Erfolg
Yal

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige