none
Makro-Problem in MS Access 2016 x64 RRS feed

  • Frage

  • Hallo zusammen,

    anlässlich einer Neuinstallation unseres HomeOffice-PC's habe ich mich aus unterschiedlichen Gründen entschlossen, unser MS Office 2016 Professional ab sofort und erstmals in der 64-bit Variante zu nutzen.

    Dabei tritt in Microsoft Access ein Fehler auf - allerdings nicht immer. Und zwar habe ich für mich persönlich eine Reihe von Datenbanken (im Registerkarten-Format) am Start, deren FrontEnd alle den gleichen Stil verwenden - und den möchte ich gern beibehalten. Dazu gehört es, dass beim Start des FrontEnds per AutoExec-Makro mehrere Formulare geöffnet werden und das zuerst geöffnete mit dem Befehl AuswählenObjekt den Fokus bekommt.

    Bei den Datenbanken, die ich komplett in der 32-bit-Version entwickelt habe, klappt das auch nach wie vor.

    Bei einem FrontEnd, von dem ich gerade eine neue Version entwickle, gibt es jedoch ein Problem. Im BackEnd ist eine Tabelle neu hinzugekommen und für die soll es ein zusätzliches Formular geben. Also habe ich ein solches angefertigt und in das AutoExec-Makro der Datenbank aufgenommen. Dort werden alle Formulare inkl. dem neuen zwar geöffnet aber der AuswählenObjekt-Befehl am Ende des Makros bewirkt - nichts, d.h., das letzte geöffnete Formular hat den Fokus.

    Als nächstes habe ich mit einer neu in der 64-bit-Version angelegten Datenbank mit leeren Formularen experimentiert, da klappt es.

    Dann hatte ich die Idee, ein neues ForntEnd aus dem alten zu erzeugen, indem ich eine neue Datei anlege und möglichst viel aus dem alten FrontEnd importiere. Gesagt getan, die alten Formulare importiert und umbenannt, die neuen eingerichtet und das Makro: funktioniert ordnungsgemäß.

    Kaum kopiere ich jetzt aus einem der alten Formulare auch nur ein einziges Element in das entsprechende neue, dann tritt der Fehler wieder auf.

    Ist das ein Programmfehler oder wie kann man sich das erklären bzw. gibt es eine Möglichkeit, diesen Fehler irgendwie abzustellen?

    Vielen Dank im Voraus für jede Antwort.

    Mit freundlichen Grüßen,

    J. Dessecker


    Mittwoch, 24. Juni 2020 10:52

Alle Antworten

  • Es ist schon schwierig dies festzustellen.
    Die Frage ist z.B. ob du irgendwelche Steuerelemente auf den Forms hast, die nicht aus der Formslibrary von Office stammen.
    Häufig werden Z.B. Datepicker o.ä. aus CommonControls verwendet. Diese gibt es jedoch ausschließlich nur für 32-Bit. Das Laden des Formulars klappt zwar, die Ausführung scheitert aber.

    Desweiteren gibt es Anpassung in der Verwendung von DLL's: declare myfunction lib "xxx.dll" ....

    Einige Aufrufe, vor allem Kernel, User, ..., System.dll's benötigen "longlong"-Variablen, also 64-Bit-Integer.
    Diese sind in 64-Bit VBA dazugekommen.

    Du kannst ja die Access-DB mal mit Shift-Taste öffnen, dann wird kein Makro ausgeführt.
    In der IDE stellst du unter "Extras->Optionen->Allgemen" die Option "Bei jedem Fehler" unterbrechen ein.

    Dann rufe das Makro auf. Access sollte dann bei dem Fehler anhalten.

    Mittwoch, 24. Juni 2020 11:25
  • Hallo Der Suchende,

    zunächst vielen Dank für die Antwort. Also an Steuerlementen kommt nur das zum Einsatz, was Access von Haus aus mitbringt. Ich habe auch nie irgendwelche AddIns nachinstalliert.

    Eine Option "Allgemein/Bei jedem Fehler unterbechen" gibt es in Access 2016 offensichtlich nicht.

    Von daher bin ich jetzt ein wenig ratlos.

    Beste Grüße,

    J. Dessecker

    Mittwoch, 24. Juni 2020 11:51
  • Du musst die VBA-IDE aufmachen (Datenbanktools->Visual Basic) in der du VBA-Code entwickelst.
    Um VBA-Code debuggen zu können gibt es dann im Menü Extras->Optionen->Regiser Allgemein diverse Einstellungen.
    Mittwoch, 24. Juni 2020 12:41
  • Hallo Der Suchende,

    ok, vielen Dank, das habe ich gerade gemacht. Hat Null Effekt, das Verhalten bleibt gleich. Es sind aber noch viel gravierendere Probleme aufgetreten. Es lassen sich bspw. keine Bitmap-Bilder mehr in dafür vorgesehene Steuerelemente einfügen. Tut man das, kann man den Datensatz nicht mehr speichern.

    Ich gklaube, man kann diese Version von Access vergessen und werde vermutlich das Experiment 64-Bit ganz schnell wieder beenden.

    Daher schließe ich hier ab. Dennoch vielen Dank für die Antworten.

    Mit freundlichen Grüßen,

    J. Dessecker

    Mittwoch, 24. Juni 2020 12:51
  • Ich denke nicht, dass du ganz ohne VBA-Code auskommst.
    In 64-Bit gibt es schon in der Kommunikation mit der Datenbank so einge Änderungen insbesonders bei der Verwendung von Integer-Variablen. Es ist daher etwas mühsam, genau festzustellen wo die Unterschiede sind.

    Wenn du für deine App wirklich nicht auf große Speicher angewiesen bist, reicht 32-Bit allemal.

    Wichtig zu wissen ist jedoch:
    Server-Core hat standarmäßig keine 32-Bit-Unterstützung mehr.
    Ein Mischinstallation von Access in 32-Bit und den Rest von Office in 64-Bit ist unmöglich, entweder alles 32- oder 64-Bit.

    Mittwoch, 24. Juni 2020 13:29