Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
400to404
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
400to404
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

datenimport von access nach excel

datenimport von access nach excel
access
Hallo zusammen,
ich möchte aus Access ein Datenblatt/Tabelle in ein Excel-Tabellenblatt einlesen. Der Datenimport soll automatisiert werden. Z.B. über einen Button "Aktualisieren" möchte ich, dass das Datenblatt aus Access eingelesen wird, dessen Name in einer definierten Excelzelle steht.
Ich freue mich auf Tipps.
Gruß
Thomas

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: datenimport von access nach excel
access
Hallo
Starte den Makrorekorder
Daten - Externe Daten - Neue Abfrage
und dem Assistenten folgen
Wenn du die Daten hast, die Aufzeichnung beenden und eine Schaltfläche aus der Symbolleiste Formular auf das Tabellenblatt zeichnen.
Anschliessend der Schaltfläche das gerade aufgezeichnete Makro zuweisen.
Nun sollte es künftig automatisch gehen.
Gruss Rainer
Problem: dynamischer Import über KomboBox
Thomas
Hallo Rainer,
vielen Dank für Deine Bemühungen. Das große Problem, dass ich beim Datenimport habe, sind die unterschiedlichen Namen der Access-Tabellen.
Vielleicht sollte ich mein Problem etwas ausführlicher schildern:
1. Ich habe eine Access-Datenbank aus der ich bedarfsweise Daten (Tabellenblätter) in meine Exceldatei überführen möchte.
2. Der Name des benötigten Access-Tabellenblattes wird in Excel über eine Kombo-Box ausgewählt (=und in eine Hilfszelle geschrieben).
3. Gesteuert über eine Schaltfläche (Button) in meiner Excel-Datei möchte ich nun das Access-Tabellenblatt, dessen Namen in der Hilfszelle abgelegt ist, in ein definiertes Tabellenblatt in meiner Exceldatei importieren.
Ich scheitere allerdings auch schon seit Tagen und habe immernoch keine Idee. Deshalb bedanke ich mich in jedem Fall ganz herzlich für Deine Bemühungen. Vielleicht gehe ich die Sache auch komplett falsch an. Alternative Lösungsvorschläge nehme ich dankend an.
Beste Grüße
Thomas
Anzeige
AW: Problem: dynamischer Import über KomboBox
Ramses
Hallo
das ganze ist zu komplex um es im Forum zu lösen.
Was ich nicht verstehe, wenn du die Daten ( Namen der Tabellen aus der DB ) auslesen kannst, warum dann keine Abfrage ?
Zeichne mal so ein Abfragemakro auf, und stell es hier herein mit dem Namen einer Tabelle, dann kann man sicher was machen.
Aber ins Blaue programmieren ...., nö. Lieber nicht ;-)
Gruss Rainer
Beispieldatei
Thomas
Vielen Dank, dass Du Dir meine Sache nochmals angeschaut hast. Ich komme an diesem Problem nicht weiter und habe keine Ahnung, wie soetwas zu lösen ist.
Ich habe einmal ein sehr stark abstrahiertes Beispiel hochgeladen. Vielleicht wird meine Mission damit deutlicher. Ist soetwas grundsätzlich möglich oder bin ich total auf dem Holzweg? Wie auch immer. Ich bedanke mich jedenfalls ganz herzlich für alle Bemühungen und jede Unterstützung.
Gruß
Thomas
https://www.herber.de/bbs/user/4492.xls
Anzeige
AW: Beispieldatei
Dieter
Hallo Thomas,
ich habe ein bestehendes Programm VBA-Programm etwas angepasst und denke, dass es bei deinem Problem weiterhelfen könnte:
Das folgende Programm übernimmst du in einen normalen Modul deiner Arbeitsmappe:
Sub ADO_Recordset_komplett_übernehmen()
' Ein Recordset wird mit sämtlichen Feldern
' in eine Tabelle übernommen
Dim con As ADODB.Connection
Dim datei As String
Dim fld As Field
Dim rs As ADODB.Recordset
Dim spalte As Long
Dim accTab As String
Dim ws As Worksheet
Dim zeile As Long

accTab = "Tbl-" & ThisWorkbook.Worksheets("Auswertung").Range("E3")

' (1) Verbindung zur Datenbank herstellen

datei = ThisWorkbook.Path & "\Datenbank.mdb"

Set con = New ADODB.Connection
con.Open ConnectionString:= _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & datei

' (2) Recordset erstellen

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer
rs.Open Source:=accTab, _
ActiveConnection:=con, _
CursorType:=adOpenKeyset, _
LockType:=adLockReadOnly, _
Options:=adCmdTableDirect
' (3) Recordset auflisten

' (3a) Tabellenblatt vorbereiten

Set ws = ThisWorkbook.Worksheets("Daten")
ws.UsedRange.ClearContents

' (3b) Spaltenüberschriften schreiben

spalte = 1
For Each fld In rs.Fields
ws.Cells(1, spalte) = fld.Name
spalte = spalte + 1
Next fld

' (3c) Sätze des Recordsets auflisten

ws.Range("A2").CopyFromRecordset _
Data:=rs, _
MaxRows:=ws.Rows.Count - 1, _
MaxColumns:=ws.Columns.Count

' (3d) Tabellenblatt formatieren

ws.UsedRange.Columns.AutoFit

' (4) Recordset und Verbindung schließen

rs.Close
con.Close
Set rs = Nothing
Set con = Nothing
End Sub
Im VBA-Editor setzt du unter Extras | Verweise... einen Verweis auf Microsoft ActiveX Data Objects 2.x Library.
Deinen CommandButton verbindest du mit der obigen Prozedur. Rechter Mausklick auf das Blattregister von "Auswertung" und dann "Code anzeigen". In den sich öffnenden Klassenmodul der Tabelle schreibst du die folgende Prozedur:

Private Sub CommandButton1_Click()
ADO_Recordset_komplett_übernehmen
End Sub

Du könntest diesem Button noch die Eigenschaft "TakeFocusOnClick" = False spendieren (ist aber nicht lebensnotwendig).
MfG
Dieter
Anzeige
Klasse unterstützt keine Automatisierung
Thomas
Hallo Dieter,
zunächst einmal vielen Dank für Deine Bemühungen und Deinen VBA-Code.
Leider habe ich es nicht geschafft, die Routine in meine Datei einzubinden.
Für den Teil3c "Sätze des Recordets auflisten" erhalte ich den Laufzeitfehler 430, Klasse unterstützt keine Automatisierung. Das macht mich ziemlich ratlos. Ist mit Klasse die ADODB.Connection gemeint? Die Spaltennahmen der Tabelle werden bereits korrekt in Excel dargestellt.
Solltest Du dazu eine Idee haben, wäre es toll, wenn Du Dich nochmal melden könntest. Allerdings möchte ich anmerken, dass ich ungeduldigerweise mein Problem zweimal ins Portal gestellt habe. Der andere Eintrag ist unter "Datenimport über Kombo-Box" zu finden. Dort versucht Oberschlumpf beharrlich mich ins Ziel zu lotsen. Es ist wird mir langsam unangenehm, mehrere Personen mit meinen Schwierigkeiten zu terrorisieren.
Also, wäre toll wenn Dir etwas einfällt. Aber Eile mit Weile.
Beste Grüße
Thomas
Anzeige
AW: Klasse unterstützt keine Automatisierung
22.03.2004 19:55:45
Dieter
Hallo Thomas,
ich habe leider übersehen, dass du Excel 97 verwendest. Excel 97 geht bei der Methode CopyFromRecordset davon aus, dass es sich um ein DAO-Recordset handelt (DAO ist die ältere Datenbankzugriffstechnik von Microsoft). Ich denke, dass daher die Fehlermeldung stammt. Wenn du den gesamten Teil 3 (c) duch den folgenden Abschnitt ersetzst, sollte es klappen.
' (3c) Sätze des Recordsets auflisten

If Not (rs.BOF And rs.EOF) Then
' Recordset ist nicht leer
rs.MoveFirst
zeile = 2
Do Until rs.EOF
spalte = 1
For Each fld In rs.Fields
ws.Cells(zeile, spalte) = fld
spalte = spalte + 1
Next fld
rs.MoveNext
zeile = zeile + 1
Loop
End If
MfG
Dieter
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige