Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1708to1712
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

Zugriff auf Accessdaten von Excel

Zugriff auf Accessdaten von Excel
23.08.2019 17:09:37
Excel
Hallo zusammen,
ich möchte gern auf einem Excelblatt einen Aktionsnamen eingeben und mir aus einer _
Accessdatenbank ein Anfangs- und ein Enddatum ausgeben lassen. Meine bisherige Recherche resultierte in dieser VBA
Private Sub Abfragen_Click()
Dim strDB As String
Dim StrTAB As String
Dim objcon As ADODB.Connection
Dim rst As ADODB.Recordset
Dim Zeile As Long
strDB = ThisWorkbook.Path & "\Aktionen.accdb"
StrTAB = "Daten"
Set objcon = New ADODB.Connection
objcon.Open "Provider.ACE.OLEDB.12.0;Data Scource=" & strDB
Set rst = New ADODB.Recordset
rst.Open " Select Ak_Datum_Start, AK_Datum_Ende from tblAktionen where Ak_Titel ='"Range("B4")"' _
End Sub
Das Schreiben in andere Zellen habe ich noch weggelassen um nicht noch mehr Fehlerquellen zu produzieren.
Leider springt er mir direkt mit der Fehlermeldung raus: "Fehler beim Kompilieren: Benutzerdefinierter Typ nicht definiert und markiert "objcon As ADODB.Connection"
Was ist zu tun?
(Bitte entschuldigt meine holprige Formulierung, bisher musste ich nur direkt auf der Datenbank abfragen und beginne grad erst mit einem Zusammenspiel)
Vielen Dank euch!

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

Betreff
Datum
Anwender
Anzeige
AW: Zugriff auf Accessdaten von Excel
23.08.2019 17:55:37
Excel
Hallo,
Offensichtlich hast die die ADODB Library nicht geladen.
Schreib als erste Zeile im Code (vor allem anderen!)
Option Explicit

dann wirst du schon beim Kompilieren auf fehlende Definitionen hingewiesen.
Die ADODB Library findest du unter Extras - Verweise und aktivierst die Library durch das anhaken. Dann nochmals kompilieren.
Gruess Hansueli
AW: Zugriff auf Accessdaten von Excel
23.08.2019 19:25:58
Excel
Hallo Stefan,
da hast Du aber doch Einiges durcheinandergewürfelt:

- Dim objcon As ADODB.Connection
und
Set objcon = New ADODB.Connection
gehören zur Zugriffs-Methode 'early binding' und erwartet einen gesetzen  Verweis,
wie von Hansueli erwähnt (Vba-Editor: Extras - Verweise)
- objcon.Open "Provider.ACE.OLEDB.12.0;Data Scource=" & strDB
wird bei der Methode 'late binding' benutzt - Beides gleichzeitig ist immer ungesund
- ... ='"Range("B4")"'"
muß so  geschrieben werden:
... = '" & Range("B4").Value & "';"
das Semikolon ist dabei das Kennzeichen, daß der SQL-String zu Ende ist und gehöhrt da auch hin
Wenn Du nicht zurecht kommst, mache ein kleines Musterprojekt mit ein paar Demo!-Daten in der Accessdatei sowie der xlsm-Datei; zippe beide und stelle sie hier ins Forum.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Zugriff auf Accessdaten von Excel
26.08.2019 10:30:59
Excel
Hallo Stefan,
schon interessant, erst jammern & jetzt großes Schweigen im Walde.
Gruß von Luschi
aus klein-Paris
AW: Zugriff auf Accessdaten von Excel
26.08.2019 15:04:27
Excel
Hallo Luschi,
ich bitte um Entschuldigung für die fehlende Rückmeldung. Leider konnte ich entgegen meiner Planung am Wochenende nicht weiterbasteln. Ich gelobe Besserung für die Zukunft!
Es würde mich freuen, wenn du mir trotzdessen weiterhelfen würdest:
Die angegebenen Sachen, habe ich bereits versucht einzubauen, aber es bewegt sich nach wie vor nichts.
(Beim Verweis sind die Verweise: Microsoft ADO Ext. 2.8 for DDL and Security bzw. 6.0 gemeint?)
hier die Zip:
https://www.herber.de/bbs/user/131628.zip
Vielen Dank für die Hilfe!
Stefan
Anzeige
AW: Zugriff auf Accessdaten von Excel
26.08.2019 19:09:22
Excel
Hallo Stefan,
bei mir läuft das so:

Sub Abfragen_Click()
Dim strDB As String, strTAB As String, strCon As String, strSQL As String
Dim objCon As Object, objRst As Object
strDB = ThisWorkbook.Path & "\Aktionen.accdb"
strTAB = "tblAktionen"
'late binding --> keine gesetzten Vba-Verweise erforderlich
Set objCon = CreateObject("ADODB.CONNECTION")
Set objRst = CreateObject("ADODB.Recordset")
'den Treiber bekanntgeben
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strDB & _
";Persist Security Info=False;"
objCon.Open strCon
strSQL = "Select Ak_Datum_Start, Ak_Datum_Ende From  " & strTAB & _
" Where Ak_Titel ='" & Tabelle1.Range("B3").Value & "';"
With objRst
.ActiveConnection = objCon
.CursorLocation = 3  'adUseClient
.CursorType = 3      'adOpenStatic
.LockType = 1        'adLockReadOnly
.Open strSQL
End With
If (Not objRst.EOF) Or (Not objRst.bof) Then
objRst.MoveLast
If objRst.RecordCount > 1 Then
MsgBox "Sorry..., aber es gibt mehr als 1 Datensatz mit dem Aktionsnamen '" & _
Tabelle1.Range("B3").Value & "'!", 48 + vbMsgBoxSetForeground, "Hinweis..."
Else
Tabelle1.Range("B5:B6").ClearContents
Tabelle1.Range("B5").Value = objRst!Ak_Datum_Start.Value
Tabelle1.Range("B6").Value = objRst!Ak_Datum_Ende.Value
End If
Else
MsgBox "Sorry, aber der Aktionsname '" & Tabelle1.Range("B3").Value & _
"' existiert nicht in der DB!", 16 + vbMsgBoxSetForeground, "Hinweis..."
End If
objRst.Close: objCon.Close
Set objRst = Nothing: Set objCon = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Zugriff auf Accessdaten von Excel
26.08.2019 19:28:11
Excel
Hallo Stefan,
Frage: Warum gehst Du über den Zwischenweg 'Access mit eingebundener Exceltabelle'?
AdoDB kann auch gleich auf Exceltabellen zugreifen, also auf Aktionen.xlsx!
Gruß von Luschi
aus klein-Paris
AW: Zugriff auf Accessdaten von Excel
27.08.2019 08:24:35
Excel
Hallo Luschi,
das funktioniert bestens! Ich danke dir vielmals!
Ich habe noch ein bisschen was vor mit diesem Projekt, deswegen wollte ich direkt Access dazwischen setzen um flexibel zu bleiben und etwas tiefer dort reinzukommen. Jetzt habe ich erstmal ein Grundgerüst, an dem ich mich langhangeln kann und vor allem weiterlernen.
Danke dir und viele Grüße!
Stefan
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige