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