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¶