Autoexec-Makro dauerhaft ausschalten

Ich m÷chte Access 7.0 als OLE-Automations-Server verwenden, um aus anderen Anwendungen heraus automatisch auf eine Access-Datenbank zugreifen zu k÷nnen. Leider verfⁿgt die ben÷tigte Datenbank-Anwendung ⁿber ein Autoexec-Makro, das sie beim Start selbstΣndig ausfⁿhrt. Nun m÷chte ich nicht jedesmal beim Start die [Shift]-Taste drⁿcken mⁿssen, die jaAutoexec-Makros unterdrⁿckt. Gibt es eine M÷glichkeit, das Starten des Makros dauerhaft ävon au▀enô zu verhindern?

Ja, es gibt diese M÷glichkeit. Sie k÷nnen mit Hilfe einer SendKeys-Anweisung vor dem Start der Datenbank-Anwendung das Drⁿcken der Taste [Shift] simulieren. Das Drⁿcken dieser Taste wΣhrend des Starts veranla▀tAccess, generell die Einstellungen im Menⁿpunkt Extras û Start und damit auch das Autostart-Makro zu ignorieren. Sie k÷nnen dazu etwa den Code aus dem Listing-Kasten unten auf der Seite in Ihrer Anwendung benutzen. Die ersten beiden Zeilen definieren ein Objekt, auf das die neue Access-Instanz verweist. Die Anweisungen in der dritten Zeile blenden den Container in der Vollbild-Darstellung ein. Die vierte Zeile bereitet die Pfadangabe fⁿr die sechste Zeile vor. Das ist notwendig, weil die Methode OpenCurrentDatabase sofort hinter dem Befehl SendKeys stehen mu▀ und keine unn÷tigen Berechnungen durchfⁿhren darf. Aus dieser Bedingung ergeben sich auch die folgenden zwei Zeilen: Der Befehl Sendkeys simuliert die Taste [Shift], und die letzteZeile ÷ffnet die gewⁿnschte Datenbank. Sie k÷nnen die Pfadangabe Ihren Wⁿnschen entsprechend anpassen. Der erste Teil der Pfad-angabe bestimmt den Access-Ordner; der zweite Teil benennt den Ordner Ihrer Anwendung. Um sicherzugehen, da▀ die Mausposition stimmt und das Einblenden des Fensters richtig funktioniert, sollten Sie bei der Defi-nition des Objekts auf das spΣte Binden achten. Verwenden Sie dazu die folgende Syntax:

Dim objAccess as object
Bei der folgenden, tΣuschend Σhnlichen Variante kann es leicht zu Problemen bei der Mausbenutzung kommen:
Dim objAccess as Access.Application
Weiter ist es bei dieser L÷sung notwendig, da▀ Sie fⁿr die andere Anwendung die Eigenschaft AllowBypassKey aktiviert haben. Andernfalls hat das Simulieren der [Shift]-Taste keine Auswirkung. WennSie alle diese Punkte berⁿcksichtigen, steht dem Access-OLE-Server nichts mehr im Wege.
Dim objAccess as object╢
Set objAccess = CreateObject (äAccess.Applicationô)╢
ShowAccess instance:=objAccess, size:=SW_MAXIMIZE╢
path:= objAccess.SysCmd (Access.acSysCmdAccessDir) & ôC:\MSOffice\Access\Samples\Northwind.mdbô╢
SendKeys  ä+ô ╢
objAccess.OpenCurrentDatabase filepath:=path╢