Access kann Modul nicht finden

08/11/2007 - 13:48 von Björn Benatzky | Report spam
Hallo zusammen,

ich habe folgendes Problem:
Ich wollte das Errorhandling meiner A2003 Datenbank verbessern und das Error
Handling in Access Anwendungen von Henry Habermacher (siehe Downloadbereich
von www.dbdev.org) einbinden. Leider klappt das Nummerieren der VBA
Codezeilen bei mir nicht so gut bzw. nicht zuverlàssig.

Über die folgende Zeile lese ich alle Module der aktuellen Datenbank aus.
For i = 0 To j
sModule(i) = Modules(i)
Next

Anschließend möchte ich alle Module der Reihe nach nummerieren

For i = 0 to UBound(sModule())
DoCmd.OpenModule sModule(i)
Set mdl = Modules(strModule)
...
Next

Jedoch erhalte ich die Fehlermeldung, daß Access das Modul xy nicht finden
kann, obwohl die Schreibweise korrekt ist und das Modul (Form_xy) auch
vorhanden ist. Dieser Fehler tritt komischerweise auch nicht bei allen
Modulen auf.
Kann mir jemand einen Tipp geben, woran das liegt?

Gruß
Björn
 

Lesen sie die antworten

#1 Henry Habermacher
08/11/2007 - 14:40 | Warnen spam
Hallo Björn

Björn Benatzky wrote:
Anschließend möchte ich alle Module der Reihe nach nummerieren

For i = 0 to UBound(sModule())
DoCmd.OpenModule sModule(i)
Set mdl = Modules(strModule)
...
Next

Jedoch erhalte ich die Fehlermeldung, daß Access das Modul xy nicht finden
kann, obwohl die Schreibweise korrekt ist und das Modul (Form_xy) auch
vorhanden ist. Dieser Fehler tritt komischerweise auch nicht bei allen
Modulen auf.
Kann mir jemand einen Tipp geben, woran das liegt?



Form_xy Module sind Objektgebundene Module, die kannst Du so nicht öffnen.
So wie Du das machen willst, geht das nur für Standardmodule und ungebundene
Klassenmodule. Bei Formularen musst Du zuerst das Objekt selber öffnen.
Gleiches gilt für gebundene Module in Reports. Ist aber auch bei mir im Code
so drin. Musst da halt mal ein bisschen reinschauen.

Ohne jetzt nachgeschaut zu haben, also rein aus der Luft gegriffen, etwa so:

Dim frm As From
docmd.openform "DeinFormular", acdesign
set frm = Forms("DeinFormular")
if frm.hasmodule then
set mdl = frm.Module
'hier nur dein Code
...
set mdl = nothing
docmd.close acform, frm.name, acsaveyes
set frm = nothing
else
Msgbox "Formular hat kein Modul"
docmd.close acform, frm.name, acsaveno
endif

Das ist auch der Grund, wieso ich die Documents Collection des Forms,
Reports und Modules Containers durchlaufe. Details findest Du in der OH.

Gruss
Henry


Microsoft MVP Office Access
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com

Ähnliche fragen