Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1144to1148
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

Codeprobleme zum Auslesen einer Accessdatenbank

Codeprobleme zum Auslesen einer Accessdatenbank
Kasimir
Hallo Leute,
ich benötige Eure Hilfe. Mit nachfolgenden Makro, das ich hier im Archiv mal gefunden habe, lese ich eine Accessdatenbank aus.


    Sub ImportFromACCESS_Mandantendaten_Teil()
    Dim intDBColumn As Integer
    
183 db_Path = "C:\DB\"
    
185 If FileExists(db_Path & db_MDB) = False Then
186     MsgBox "In dem ausgewählten Pfad wurde keine Datenbank mit Mandantendaten gefunden. " _
        & "Vorgang wird abgebrochen", vbInformation, "Immorente - Abbruch..."
188     Exit Sub
189 End If
    
191 Modulname = "ImportFromACCESS_Mandantendaten_Teil"
    
199 xTyp = True
200 LgLastRow = Mandantendaten.Range("A65536").End(xlUp).Row
    
208 Mandantendaten.Range("A2:IV65536").ClearContents
    
    
     ''Verbindung zur DB
219 Set Verbindung_DB = New ADODB.Connection
220 With Verbindung_DB
221     .Provider = "Microsoft.Jet.OLEDB.4.0" + ";Jet OLEDB:Database Password=123"
222     .ConnectionString = "Data Source = " & db_Path & db_MDB
223     .Open
224 End With
     ''Abfrage1 mit geändertem Quelltext öffnen
226 s5 = "Select * From " & db_View_dummy & ";"
227 rs.Open s5, Verbindung_DB, CursorType:=adOpenForwardOnly, LockType:=adLockReadOnly
    
229 If (rs.EOF Or (Err.Number > 0)) Then
230     If Err.Number > 0 Then
            MsgBox "Es ist ein Fehler aufgetreten" & vbCrLf & vbCrLf & _
                Err.Description, 16, "Fehler-Nr. " & Err.Number
237     End If
238 Else
239     j = 2 ' in Zeile 2 beginnen
        'Blatt "Mandantendaten"
241     With Mandantendaten
242         .Range("A2:A" & LgLastRow).Font.ColorIndex = 0
    
            'Alles aus dem Recordset schreiben
252         .Cells(j, 188).CopyFromRecordset rs
254     End With
255 End If
    
     ''alle Objekte-Variablen schließen bzw. Zeiger entfernen
258 rs.Close
259 Set rs = Nothing
    
261 Set cmd = Nothing
262 Set catDB = Nothing
263 Verbindung_DB.Close
264 Set Verbindung_DB = Nothing
    
     'Tabelle nach Nummer sortieren
267 Mandantendaten.Cells.Sort Key1:=Mandantendaten.Range("GF2"), Order1:=xlAscending, Header:=xlYes, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom ', _
    DataOption1:=xlSortNormal
    
     '----------------------------------------------------------------------------------
     'Prozedur beenden
275 Exit Sub
    
     '----------------------------------------------------------------------------------
     'Dieser Bereich wird abgearbeitet, sollte ein Fehler in Code auftretetn. Dann erscheint eine Bildschirmmeldung
ERRORHANDLER:
    
281 rs.Close
282 Set rs = Nothing
    
284 Set cmd = Nothing
285 Set catDB = Nothing
286 Verbindung_DB.Close
287 Set Verbindung_DB = Nothing
    
291 Fehlerzeile = Erl
292 Fehlertext = Err.Description & " - " & Err.Number
293 Fehlerort = "Modul_Im_und_Export_Access"
294 Fehlerereignis = Modulname
    
    End Sub


In der Datei sind die Verweise “Microsoft ActiveX Data Object 2.x Library” und “Microsoft ADO Ext. 2.x for DDL and Security” gesetzt. Das funktionierte bis jetzt immer ohne Probleme. Nun hat aber jemand aus der Fa. versucht diese Datei auf seinem Laptop zu öffnen und erhält beim Öffnen den Fehler 429, „Objekterstellung durch ActiveX-Komponente nicht möglich” und im Makro wird die Zeile 107 „Set Verbindung_DB = New ADODB.Connection“ gelb markiert. Nun habe ich in der Hilfe nachgesehen und dort gelesen, dass es daran liegen kann, dass die ActiveX-Komponente eventuell nicht registriert oder erst gar nicht vorhanden ist.
Ich habe also bei dem Kollegen in Excel unter Verweise nachgesehen, dort werden aber beide Verweise aufgeführt. Es gibt zwar Unterschiede zum Ort, wo die Komponenten liegen sollen, zwischen meinem und dem PC des Kollegen, aber ich weiß nicht, ob das ein Problem ist. Bei mir liegt die Komponente “msadox.dll” für ''''Microsoft ADO Ext. 2.x for DDL and Security“ unter “C:\Program Files\Common Files\System\ado\“, beim Kollegen liegt diese unter „C:\WINXP\system32\“. Versuche, ich diese zu registrieren, erhalt ich die Fehlermeldung „LoadLibrary("C:\WINXP\system32\msadox.dll") fehlgeschlagen - Die angegebene Prozedur wurde nicht gefunden.
Die 2 Komponente „msadox28.tlb“ für „Microsoft ActiveX Data Object 2.x Library” liegt bei mir ebenfalls unter “C:\Program Files\Common Files\System\ado\“. Bei dem Kollegen soll diese unter „C:\Programme\Gemeinsamme Dokumente\System\“. Allerdings heißt die Datei bei ihm „msado15.dll“. In dem Pfad lag diese Datei nicht, aber ich habe diese dort hineinkopiert und konnte diese auch ohne Probleme registrieren. Allerdings liegt die gleiche Datei bei dem Kollegen auch noch im Pfad “C:\Program Files\Common Files\System\ado\“.
Falls das noch wichtig ist, bei dem Kollegen ist das Betriebssystem Windows XP 2002 SP3 und Office 2007 installiert.
So, nun habe ich eine ganze Menge geschrieben und hoffe, das man daraus schlau wird. Wie kann ich denn nun das Problem lösen, dass bei dem Kollegen die Datei auch ohne Probleme läuft? Muss ich alle Verwiese erst mal deregistrieren und dann die Dateien an den gleichen Ort kopieren wie bei mir und dann nochmal versuchen alles zu registrieren oder liegt das Problem woanders?
Danke für alle Tipps von Euch,
Kasimir

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

Betreff
Benutzer
Anzeige
AW: Codeprobleme zum Auslesen einer Accessdatenbank
22.03.2010 20:46:13
dan
Hallo Kasimir,
versuch die einzelnen Bibliotheken auf dem PC des Kollegen neu registrieren, aber in den Verzeichnis: 'C:\Program Files\Common Files\System\ado\'. Hat das geholfen? Gruss dan, cz.
Tipps hier:
http://allenbrowne.com/ser-38.html
AW: Codeprobleme zum Auslesen einer Accessdatenbank
22.03.2010 20:52:23
Kasimir
Hallo dan,
danke Dir für Deine Antwort. Muss ich denn erst die alten deregistrieren?
Muss ich diese Dateien danach vom PC löschen und die von meinem PC in das Verzeichnis ":\Program Files\Common Files\System\ado\" kopieren?
Wie werde ich in Excel denn den alten Pfad zu den Verweisen los? Hatte nämlich die eine Datei im Pfad ":\Program Files\Common Files\System\ado\" neu registriert und dann in Excel ausgewählt. Der alte Pfad blieb aber bestehen.
Danke nochmal und Gruß,
Kasimir
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige