Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2014.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

VBA unter Access mit 64 Bit

Die 64bit-Version von Access sollten Sie schon deshalb nicht nutzen, weil diese ActiveX-Steuerelemente wie das TreeView-, das ListView- oder das ImageList-Steuerelement nicht unterstützt. Aber es gibt noch weitere Gründe: Zum Beispiel könnte es Probleme bei der Verwendung von API-Funktionen geben. Manchmal bleibt einem Entwickler allerdings keine anderen Möglichkeit, weil etwa am Arbeitsplatz nur die 64bit-Version vorliegt oder aber der Kunde mit dieser Version arbeiten muss. Der vorliegende Beitrag liefert Informationen, wie Sie nicht kompatible VBA-Anweisungen für die Zielversion anpassen müssen und wie Sie programmieren müssen, um die 32bit- und die 64bit-Version gleichermaßen zu bedienen.

Unterschiede zwischen 32bit- und 64bit-Version

Warum entsteht das in der Einleitung beschriebene Dilemma überhaupt und was ist mit 32bit-Version und 64bit-Version überhaupt gemeint?

Hierbei beziehen wir uns zunächst auf das Betriebssystem. Wenn Sie ein 32bit-Betriebssystem nutzen, kann dieses maximal 2 hoch 32 Bytes Arbeitsspeicher adressieren, also ca. 4.096 Megabyte. Bei einem 64bit-Betriebssystem kann ein Arbeitsspeicher von 2 hoch 64 Byte adressiert werden – dies wird noch eine Weile ausreichen.

Wer also mehr als vier Gigabyte Arbeitsspeicher in seinem Rechner verbaut hat und sich wundert, dass davon nur vier angezeigt werden, fährt also vermutlich noch ein 32bit-Betriebssystem.

Möchten Sie herausfinden, wie viel Arbeitsspeicher Sie nutzen und ob Sie ein 32bit- oder ein 64bit-Betriebssystem nutzen, können Sie dies über die Systemsteuerung ermitteln. Unter Windows 7 etwa klicken Sie dazu auf Start|Systemsteuerung und dann auf System. Es erscheint der Dialog aus Bild 1, dem Sie die notwendigen Informationen entnehmen können. In diesem Fall handelt es sich um ein 64bit-System mit acht Gigabyte Arbeitsspeicher.

Hinweise auf Arbeitsspeicher und Betriebssystem in den Systemeinstellungen von Windows

Bild 1: Hinweise auf Arbeitsspeicher und Betriebssystem in den Systemeinstellungen von Windows

Office mit 32bit und 64bit

Damit kommen wir zum Thema Office und somit auch zu Access. Access 2010 etwa wird standardmäßig in der 32bit-Variante installiert.

Wer die 64bit-Variante wünscht, muss dies explizit bei der Installation angeben. Warum das? Weil es sehr viele externe Tools und Steuerelemente für Access in der 32bit-Version gibt. Würden Sie Access in der 64bit-Version installieren und versuchen, ein mit der 32bit-Version etwa von VB6 entwickeltes Add-In zu starten, führt dies zu einem Fehler.

Das Gleiche gilt, wenn Sie etwa ein 32bit-ActiveX-Steuerelement wie das TreeView-Steuer­element verwenden möchten – mehr dazu weiter unten.

Einfache Lösung

Wenn Sie eine neue Office-Version in­stallieren, können Sie diese und anderen Probleme auf einfache Art und Weise umschiffen: Installieren Sie einfach die 32bit-Variante. Windows in der 64bit-Variante bietet eine Kompatibilitätsumgebung namens WOW64, mit der Sie 32bit-Anwendungen wie in diesem Fall Office und Access ganz normal ausführen können.

In diesem Fall wird Office nicht in dem dafür vorgesehenen Verzeichnis C:\Program Files\Microsoft Office\Office15 installiert, sondern etwa unter C:\Program Files (x86)\Microsoft Office\Office15.

Probleme mit ActiveX-Steuerelementen

Das vermutlich kritisch­ste Problem, das bei der Nutzung von Access in der 64bit-Version auftaucht, sind ActiveX-Steuerelemente, die nur in der 32bit-Version verfügbar sind.

Wir haben testweise eine frische Datenbank unter der 32bit-Version mit einem TreeView-Steuerelement versehen. Wenn Sie diese Datenbank unter Access in der 64bit-Version öffnen, löst dies zunächst die Meldung aus Bild 2 aus.

Der Verweis auf die Datei MSCOMCTL.ocx kann unter Access in der 64bit-Version nicht gefunden werden.

Bild 2: Der Verweis auf die Datei MSCOMCTL.ocx kann unter Access in der 64bit-Version nicht gefunden werden.

Wenn Sie diese Meldung ignorieren und dann das Formular mit dem TreeView-Steuerelement öffnen, erhalten Sie die Meldung aus Bild 3.

Der Container mit dem TreeView-Steuerelement ist leer.

Bild 3: Der Container mit dem TreeView-Steuerelement ist leer.

Was tun? Nun: Es gibt keine 64bit-Version dieses Steuerelements, also können Sie nur zur 32bit-Version von Access wechseln oder eine Alternative für das TreeView-Steuerelement suchen.

Probleme mit mde/accde

Wenn Sie eine .mde- oder .accde-Datei unter Access in der 32bit-Version erzeugt haben, können Sie diese nur mit der entsprechenden Access-Version öffnen. Wenn Sie etwa eine 32bit-accde-Datei unter Access in der 64bit-Version öffnen, erhalten Sie die Fehlermeldung aus Bild 4. In diesem Fall besteht Hoffnung: Wenn Sie Zugriff auf die unkompilierte Version der Datenbankdatei haben, können Sie diese unter der 64bit-Version von Access kompilieren und die .mde/.accde-Datei dann unter Access in der 64bit-Version nutzen.

Fehler beim Öffnen einer .mde- oder .accde-Datei, die mit Access in der 32bit-Version erstellt wurde

Bild 4: Fehler beim Öffnen einer .mde- oder .accde-Datei, die mit Access in der 32bit-Version erstellt wurde

Probleme mit API-Deklarationen

Ein weiteres Problem tritt auf, wenn Sie API-Funktionen, die mit der 32bit-Version von Access funktionieren, unter der 64bit-Version einsetzen möchten. Wir schauen uns dazu die GDI-/OGL-Bibliothek von Sascha Trowitzsch an, die eine Menge API-Funktionen verwendet, und wollen diese für die 64bit-Version lauffähig machen.

Wenn Sie das Modul mdlOGL0710 unter Access 2013 in der 64bit-Version öffnen, erhalten Sie einige rot markierte Zeilen wie in Bild 5. Der erste Schritt, um die API-Deklarationen für die 64bit-Version nutzbar zu machen, liegt im Hinzufügen eines einfachen Schlüsselworts, und zwar PtrSafe. Dieses Schlüsselwort fügen Sie unmittelbar hinter der Declare-Anweisung der API-Funktion ein, sodass etwa die erste in der Abbildung sichtbare Funktion wie in Bild 6 aussieht.

Fehlerhafte API-Deklarationen

Bild 5: Fehlerhafte API-Deklarationen

Hinzufügen des Schlüsselworts PtrSafe

Bild 6: Hinzufügen des Schlüsselworts PtrSafe

Auf diese Weise statten Sie nun alle API-Funktionen mit diesem Schlüsselwort aus. Die Suchen/Ersetzen-Funktion des VBA-Editors ist dabei eine willkommene Erleichterung: Ersetzen Sie zunächst Declare Function durch Declare PtrSafe Function und dann Declare Sub durch Declare PtrSafe Sub – klicken Sie dabei jeweils auf Alle ersetzen (siehe Bild 7).

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.