Problem:
Wir haben eine Anwendung in Access 2003 entwickelt, die lange Zeit problemlos unter Windows 2000 und Windows XP lief. Wenn wir die Anwendung nun auf einem neuen Rechner mit Windows Vista einsetzen, bekommen wir bei der ersten SendKeys-Anweisung einen Laufzeitfehler 70, „Zugriff verweigert“. Wenn wir diesen einen SendKeys-Fehler umgehen, wird die Fehlermeldung beim nächsten SendKeys erneut angezeigt.
Lösung:
„SendKeys“ in VBA (und Visual Basic 6) ist den neuen Sicherheitsfunktionen von Windows Vista (und dem Internet Explorer 7.0) zum Opfer gefallen. Auf diese Weise soll verhindert werden, dass Viren, Würmer und Trojaner durch eine per „SendKeys“ realisierte „Fernbedienung“ von Windows oder unter Windows laufenden Anwendungen Schaden an richten.
Sie müssen also für die momentan per „SendKeys“ gelösten Probleme andere Lösungen finden. Als Alternative bieten sich beispielsweise API-Funktionen wie „SendInput()“, „SendMessage()“ oder „Keyb_Event()“ an, die allerdings recht komplex in der Umsetzung sind, weil z. B. per „Keyb_Event()“ Tastenzustände wie „KeyDown“ und „KeyUp“ einzeln und synchronisiert simuliert werden müssen. In Betracht käme eventuell noch eine kommerzielle Lösung, die per Modul oder DLL eingebunden wird.
Zum Beispiel: