Language: Deutsch English















Last Update: 2017 - 07 - 09





Download VBA and Access samples

Inhalt

  • Rot 13 Wandler
  • Access-SystraySample
  • Access-SyncScrollBarsSample
  • Sleep
  • Monitor Settings Demo
  • Tastatur Status Demo
  • MS Office Automation - VBA-Module der Konstanten



  • Rot 13 Wandler

    Der ROT13Wandler ist ein kleines Programm, das ich geschrieben habe um ein wenig Delphi zu lernen. Er dient dazu, einen Text mit dem 'Verschlüsselungsverfahren' ROT13 zu codieren.

    ROT13 wird dazu verwendet um z.B. in Newsbeiträgen Texte unterzubringen, die jeder lesen kann, aber nur dann wenn er wirklich will. Z.B. die Lösung eines Rätsels das man im gleichen Artikel veröffentlicht hat, oder Informationen über ein Buch, einen Film o.ä., der der breiten Öffentlichkeit noch nicht zugänglich ist. Um durch die Veröffentlichung dieser Infomationen niemanden den Spaß zu verderben, kann der Absender sie mit ROT13 verschlüsseln. Der Empfänger muss sie entschlüsseln um sie lesen zu können.

    ROT13 ist natürlich kein echtes Verschlüsselungsverfahren. Ein Text wird mit ROT13 verschlüsselt indem jeder Buchstabe um 13 Stellen im Alphabet verschoben wird. Also aus 'A' wird 'N', aus 'B' wird 'O' usw.

    Jeder mir bekannter Newsreader kann ROT13-codierten Text entschlüsseln, allerdings gibt es einige Programme, die nicht in der Lage sind, Text mit ROT13 zu verschlüsseln. Für alle, die ein solches Programm verwenden, kann der ROT13Wandler nützlich sein, denn er ermöglicht es Text mit ROT13 zu verschlüsseln und dann über Copy&Paste in ein anderes Programm einfügen.

    Ursprünglich gab es hier nur das kompilierte Binary zum Download, da ich nicht damit gerechent hatte, dass sich tatsächlich jemand für meine ersten Gehversuche in Delphi interessieren könnte. Da ich aber inzwischen einige Anfragen erhalten habe, in denen ich um den Quellcode dieser Anwendung gebeten wurde, habe ich diesen jetzt auch hier veröffentlicht. Der Quellcode der Anwendung ist trivial, daher gestatte ich es ausdrücklich den Quellcode ohne Einschränkungen zu verändern, in eingenen Anwendungen weiterzuverwenden, oder an anderer Stelle bzw. in anderen Medien zu veröffentlichen. - Dennoch würde ich mich darüber freuen, wenn ich über eine Veröffentlichung an einem anderen Ort kurz per Email informiert werden würde.

    Download Binary Für Win9x/WinNT (166KB) - [aktuelle Version: 0.1.1.2 vom 28.12.2000]
    Download Sourcecode (10KB) - [aktuelle Version: 0.1.1.2 vom 28.12.2000]



    Zurück zur Übersicht

    Access-SystraySample

    Dieses Sample zeigt, wie man ein Icon für eine AccessDB, unter Verwendung von API-Funktionen, im Systray (die korrekte Bezeichnung ist "Notification Area") unterbringen kann. Außerdem werden gängige Zusatzfunktionen (Ausblenden des Anwendungsfensters, Wiederherstellen des Fensters durch Doppelklick auf das Systray-Icon, Kontextmenü für Systray-Icon) demonstriert.

    Das SystraySample ist eine MS-Access-Datenbank mit offenem Code. Um Zugriff auf den Quellcode der Anwendung zu erhalten, muss beim Öffnen die [SHIFT]-Taste gedrückt werden.

    Das Sample wurde von mir erstellt und ist frei von den Rechten Dritter. Der Quellcode (oder Teile davon) darf als Teil einer eigenen Anwendung weitergegeben werden. Eine Veröffentlichung dieses Beispiels ist, unabhängig von der Art und dem Medium der Veröffentlichung, nur mit der schriftlichen Genehmigung des Autors gestattet.

    Falls du Erweiterungen und/oder Verbesserungen an dem Sample vornimmst, würde ich mich sehr darüber freuen, wenn du diese Änderungen auch der Öffentlichkeit zur Verfügung stellen würdest.

    Download Für MS Access 2000 (42KB) - [Version: 0.8.2 vom 24.11.2001]
    Download Für MS Access 97 (55KB) - [Version: 0.8.2.1 vom 24.12.2001]

    Erweiterung für Balloon Tool Tips

    Auf Anfrage eines Besuchers dieser Seite habe ich das Beispiel kurzfristig erweitert, um zu demonstrieren wie man in Kombination mit dem Icon im Systray (Notification Area) die Funktionalität der Balloon Tool Tips (die "Sprechblasen" der Icons) nutzen kann.

    Achtung: Diese Version des Beispiels funktioniert nur auf Rechnern mit Version 5.0 (oder höher) der Shell32.DLL. (d.h. ab Windows 2000 oder mit Internet Exporer 5.0)

    Diese Version ist mit Access XP, Access 2003 und Access 2016 getestet, sollte aber auch bereits mit Access 2000 funktionieren.

    Download Systray-Balloon (ca. 40KB) - [Version: 0.9.0.1 vom 05.03.2006]

    Ein Hinweis bzgl. neuerer Windows Versionen

    Dieses Beispiel funktioniert auch auf neueren Windows Versionen (7-10). Allerdings gibt es ein Problem, wenn das Icon in dem Überlaufbereich (overflow section) der Notification Area angezeigt wird. Es wird dann nicht auf Mausereignisse reagieren und deshalb das Kontextmenü nicht anzeigen und das Formular bei einem Doppelklick nicht einblenden.

    Die Ursache dafür ist, dass diese Funktionen im Detailbereich-MouseMove-Ereignis aufgerufen werden, aber nur dann, wenn sich der Mauszeiger über der Notification Area in der Taskbar befindet. – Das tut er aber nicht, wenn das Icon im Überlaufbereich angezeigt wird.

    Es könnte eine Lösung sein, wenn man in Access ein weiteres, unsichtbares Formular erstellt (und öffnet), dass nur die Mausereignisse des Icons in der Notification Area behandelt.  Du musst dann das Window Handle (hWnd) dieses Forms in der NOTIFYICONDATA Struktur verwenden.

    Dies ist vorerst nur eine ungetestete Idee. Ich werde versuchen das zu implementieren, wenn ich die Zeit dazu finde.



    Zurück zur Übersicht

    Access-SyncScrollBarsSample

    In dieser Beispiel-Anwendung zeige ich, wie man die ScrollBars in zwei verschiedenen Access-Formularen mit Hilfe von API-Funktionen synchronisieren kann. D.h. wenn die ScrollBar in dem einem Formular manuell mit der Maus bewegt wird, wird die ScrollBar in dem zweiten Formular automatisch an die entsprechende Position bewegt.

    Dieses Beispiel ist als kurze "Machbarkeitsstudie" auf eine Anfrage in den Access-Newsgroups entstanden. Bisher hatte ich nicht die Zeit und die Lust, den Quellcode zu kommentieren. Wer dieses Beispiel an seine Bedürfnisse anpassen möchte, wird sich also selbst ein wenig in den Code einarbeiten müssen.

    Die Beispielanwendung steht nur im Access-2000-Format zur Verfügung, da im Code der AddressOf-Operator für Callback-API-Funktionen verwendet wird, der in Access 97 und früheren Versionen noch nicht vorhanden ist. Wer den Code dieses Beispiels in Access97 verwenden möchte kann dazu die CallBack-Funktionalität über undokumentierte Funktionen der Office97-DLLs erreichen. Michael Kaplan hat auf seiner Website ein Beispiel veröffentlicht, dass diesen Ansatz illustriert.

    Das SyncScrollSample ist eine MS-Access-Datenbank mit offenem Code. Das Sample wurde von mir erstellt und ist frei von den Rechten Dritter. Der Quellcode (oder Teile davon) darf als Teil einer eigenen Anwendung weitergegeben werden. Eine Veröffentlichung dieses Beispiels ist, unabhängig von der Art und dem Medium der Veröffentlichung, nur mit der schriftlichen Genehmigung des Autors gestattet.

    Falls du Erweiterungen und/oder Verbesserungen an dem Sample vornimmst, würde ich mich sehr darüber freuen, wenn du diese Änderungen auch der Öffentlichkeit zur Verfügung stellen würdest.

    Download Für MS Access 2000 (43KB) - [Version vom 21.08.2003]

    Update für Access 2007+

    I habe kürzlich festgestellt, dass dieser Demo-Download mit Access 2007 und neueren Version nicht mehr funktioniert. Hier ist nun eine angepasste Version für Access 2007 und später. Diese neue Version sollte mit älteren Access-Versionen ebenfalls funktionieren, aber ich habe keine mehr installiert, um das zu testen. Daher lasse ich die alte Version weiterhin für den Download online.

    Download für Mircosoft Access 2007 and neuer - [veröffentlicht 2016-03-30]



    Zurück zur Übersicht

    Sleep

    Du kennst sicherlich die Sleep-Funktion von Radioweckern, Stereoanlagen, etc., die nach einer gewissen Zeit das Gerät ausschalten. Genau diese Funktionalität stellt diese kleine Anwedung für zur Verfügung. Nach der eingestellten Zeitspanne wird der Rechner heruntergehfahren und, wenn die Hardware das unterstüzt, ausgeschaltet.

    Diese Beispielanwendung ist in Visual Basic geschrieben, die wesentliche Funktionalität wird jedoch über API-Funktionen umgesetzt, daher kann der Code ohne wesentliche Änderungen auch nach Microsoft Access übernommen werden.
    Die Anwendung habe ich auf einem Rechner mit Microsoft Windows XP entwickelt und bisher nur auf einem solchen System getestet. Daher kann ich nicht gewährleisten, dass die Anwendung auch unter andern Windows-Betriebssystemen funktioniert.

    Technische Infos: Der Beispielcode verwendet die ExitWindowsEx-API-Funktion für den System-Shutdown. In diesem Zusammenhang ist natürlich auch der notwendige Code enthalten, um mit der AdjustTokenPrivileges-API-Funktion für den Prozess das "SE_SHUTDOWN_NAME privilege" zu erlangen, das auf Rechnern mit NT-basierenden Betriebssystem erforderlich ist, um das System herunterzufahren.

    Das Archiv enthält die kompilierte Visual-Basic-EXE, sowie den kompletten Quellcode der Anwendung. Die Anwendung wurde von mir erstellt und ist frei von den Rechten Dritter. Der Quellcode (oder Teile davon) darf als Teil einer eigenen Anwendung weitergegeben werden, sofern deren wesentlicher Zweck nicht eine Reproduktion dieses Beispiels ist. Eine Veröffentlichung dieses Beispiels ist, unabhängig von der Art und dem Medium der Veröffentlichung, nur mit der schriftlichen Genehmigung des Autors gestattet.

    Falls du Erweiterungen und/oder Verbesserungen an dem Sample vornimmst, würde ich mich sehr darüber freuen, wenn du diese Änderungen auch der Öffentlichkeit zur Verfügung stellen würdest.

    Download (12KB) - [Version 1.0.10 vom 22.08.2003]



    Zurück zur Übersicht

    Monitor Settings Demo

    Dies ist ein VBA-Code-Demo, das zeigt, wie du die High-Level Monitor Configuration Functions der Windows API verwenden kannst. Diese Funktionen sind ab Windows Vista verfügbar.

    Bisher zeigt diese Beispiel nur wie man die Helligkeits- (SetMonitorBrightness) und den Kontrast-Einstellungen (SetMonitorContrast) des Monitors auslesen und setzen kann. Wenn du andere Monitoreinstellungen über die Windows API bearbeiten willst, kann dieses Beispiel ein guter Ausgangspunkt für eine eigene Implementierung sein.

    Diese Beispieldatenbank ist mit Microsoft Access 2010 und 2013 getestet worden. Sie funktioniert wahrscheinlich ebenfalls mit anderen aktuellen Version von Microsoft Access. Die Kernfunktionalität ist in einem einzelnen VBA Klassenmodul enthalten, das auch in anderen VBA-fähigen Anwendungen funktionieren sollte.

    Die meisten modernen Monitore unterstützen diese Funktionen der Windows API. Einige etwas ältere Monitore tun dies allerdings nicht. Von meinem Samsung SyncMaster P2770HD werden die API-Funktionen problemlos unterstützt, aber nicht von einem älteren LG Flatron L2000CE.

    Du darfst den Code aus diesem Demo in deiner eigenen Anwendung verwenden und mit ihr vertreiben, solange der enthaltene Copyright-Hinweis unverändert erhalten bleibt. Es ist jedoch nur mit meiner ausdrücklichen Genehmigung gestattet, dieses Beispiel selbst weiter zu verteilen oder an anderer Stelle zu veröffentlichen.

    Monitor Settings Demo herunterladen (AccDB-Format, 31 KB).



    Zurück zur Übersicht

    Tastatur Status Demo

    Hier ist ein sehr einfaches Demo, um zu zeigen wie man den aktuellen Zustand der Tastatur auslesen und setzen kann (Umschalttaste, Num-Lock und Scroll-Lock („Rollen“)). Seine Kernfunktionalität ist eine Wrapper-Klasse um die Windows API Funktionen GetKeyboardState, SetKeyboardState and keybd_event.

    Dieses Beispiel basiert auf Beispielcode der von Microsoft als KB177674 veröffentlicht wurden. (zuvor veröffentlicht als Q177674).

    Meiner Meinung nach ist das o.g. Beispiel in der MSKB für Anfänger ein bisschen schwer zu verstehen. Alle drei Tastatur-Lock-Zustände werden in einer einzigen Prozedur behandelt und es ist nicht intuitiv zu erkennen, welcher Code für das Lesen der aktuellen Werte und welcher für das Setzen der neuen Werte verantwortlich ist.

    Solange du das Beispiel nicht vollständig verstanden hast, ist der Originalcode nur schwer anzupassen und in deine eigene Anwendung zu integrieren. Also habe ich den ursprünglichen Beispielcode vereinfacht und ihn in eine wiederverwendbare Klasse gekapselt. Diese Klasse kannst du in dein eigenes Projekt importieren und dort direkt verwenden, ohne die innere Logik der Klasse anzupassen.

    Wenn du diese Klasse in dein Projekt übernehmen willst, solltest du nicht einfach den Code Kopieren&Einfügen, sondern das ganze Klassenmodul Keyboardstate in deine Datenbank importieren, entweder über den Button Externe Daten im Access Ribbon, oder über den Menüpunkt  "Datei" -> "Datei exportieren"  / "Datei" -> "Datei importieren"  im VBA-Editor. 

    Das Keyboardstate Klassenmodul hat das Attribut VB_PredeclaredId=True gesetzt. Dieses Attribut würdest du verlieren, wenn du einfach nur den im VBA-Editor sichtbaren Code kopierst.

    Dieses Beispiel ist in einer Microsoft Access 2003 MDB Date verfügbar. Das einfache Demo-Formular, das zeigt wie man die Klasse verwendet, ist ein Access-Formular, aber das Klassenmodul selbst, sollte in jeder beliebigen VBA-fähigen Anwendung ohne irgendwelche Änderungen direkt verwendbar sein.

    Ich stelle meine Arbeit an diesem Beispiel hier der Öffentlichkeit ohne irgendwelche Einschränkungen unter der CC0-Lizenz zur freien Verfügung.

    Keyboardstate Sample herunterladen



    Zurück zur Übersicht

    MS Office Automation - VBA-Module der Konstanten

    Microsoft Office Automation – Konstanten als VBA-Modul

    Wenn du in deiner VBA-Programmierung andere Office-Programme (z.B. Outlook, Word, Excel, PowerPoint) per Code automatisiert hast und Late Binding verwendest, solltest du die benötigten Enums bzw. Konstanten aus der jeweiligen Office-Objektbibliothek in deinem eigenen Projekt selbst erneut deklarieren. Wenn du die Konstanten verwendest, lässt sich wesentlich besser lesbarer Code schreiben, als wenn du die Konstanten direkt durch ihre jeweiligen Werte ersetzt.

    Die benötigten Enums, ihre Konstanten und deren Werte sind über den Objekt Browser der VBA-Umgebung sichtbar und können in die eigene Anwendung kopiert werden. Dies ist kein Hexenwerk, sondern nur reine Fleißarbeit.

    Solange du nur wenige Konstanten verwendest, ist das in wenigen Minuten erledigt. Bei einer umfangreichen Automationslösung wird das aber ziemlich mühsam und zeitraubend.

    Um dir diese Mühe zu sparen, habe ich die Enums der Microsoft Office 2013 Objektbibliotheken extrahiert und in VBA-Modulen zusammengefasst. Diese Module kannst du als Ganzes in dein VBA-Projekt importieren und hast sofort alle Konstanten der jeweiligen Bibliothek zur Verfügung.

    Microsoft Outlook

    Die Steuerung von Microsoft Outlook ist sicherlich ein naheliegender Anwendungsbereich für Automatisierung. Emails senden und empfangene Emails aus dem Posteingang in die Datenbank einzulesen wird in vielen Anwendungen benötigt. Auch die Synchronisierung von Kontakten, Terminen aus dem Kalender und Aufgaben ist durchaus nicht ungewöhnlich. Für all diese Zwecke wird die Outlook Objektbibliothek verwendet.

    Das Modul mit den Konstanten/Enums der Microsoft Outlook 15 Object Library (für Outlook 2013) kannst du hier herunterladen: modMSOutlook15_Enums

    Microsoft Word

    Access-Berichte decken bereits ein großes Spektrum an Anforderungen bei der Ausgabe von Daten auf einem Drucker oder als PDF ab. Dennoch gibt es darüber hinaus Fälle in denen explizit ein Word-Dokument erstellt werden muss oder in dem die Gestaltungsmöglichkeiten einen Access-Berichts zu limitiert sind. In diesen Fällen ist meistens eine Word Automatisierung über die Word-Objektbibliothek (im Gegensatz zu einem Word Seriendruck) das Mittel der Wahl.

    Das Modul mit den Konstanten/Enums der Microsoft Word 15 Object Library (für Word 2013) kannst du hier herunterladen: modMSWord15_Enums

    Microsoft Access

    Microsoft Access selbst ist nicht unbedingt ein naheliegender Kandidat für eine Automatisierung, egal ob mit oder ohne Late Binding. Allerdings schreibe ich im Moment häufiger VB-Scripte, die Access fernsteuern um gewissen Hilfsaufgaben bei der Entwicklung zu erledigten. Dafür ist es in der Tat hilfreich die Access Konstanten direkt verfügbar zu haben. VB-Script unterstützt allerdings nicht direkt die Enums des folgenden VBA-Moduls. Dafür kopiere ich mir die einzelnen Konstanten der Enums ohne den jeweiligen Enum/End-Enum-Teil.

    Das Modul mit den Konstanten für die Microsoft Access 15 Objektbibliothek (Access 2013) kannst du hier herunterladen: modMSAccess15_Enums

    Microsoft PowerPoint

    Ein anderer, nicht besonders naheliegender Kandidat für Automatisierung ist Microsoft PowerPoint. Ob du es glaubst, oder nicht, vor ein paar Jahren hat einer meiner Kunden tatsächlich die Anforderungen gehabt, eine PowerPoint Präsentation aus Access heraus zu automatisieren. Auch wenn dies sicherlich eher selten verwendet wird, kann es durchaus ein mächtiges Konzept sein, Daten aus einer Access Anwendung in visuell ansprechenden und einfach aufzunehmenden PowerPoint Folien darzustellen.

    Hier ist das VBA Modul mit allen Automatisierungskonstanten/Enums der Microsoft PowerPoint 15 (PowerPoint 2013) Objekt Bibliothek. modMSPowerpoint15_Enums

    Microsoft Office (Object Library)

    Alle Microsoft Office Anwendungen verwenden einige gemeinsame Klassen, Enums und Konstanten die in der Microsoft Office Objekt Bibliothek definiert sind. Die am häufigsten genutzten Objekte und Konstanten aus dieser Bibliothek sind mit Sicherheit diejenigen der CommandBar- und der Ribbon-Objekte (Streng genommen sind die letzteren eigentlich Interfaces.) Du kannst diese verwenden, um die Benutzeroberfläche von Microsoft Office Anwendungen zu erweitern.

    Hier ist das VBA Modul mit allen Automatisierungskonstanten/Enums der Microsoft Office 15 (Office 2013) Objekt Bibliothek: modMSOffice15_Enums

    Microsoft Excel

    Die naheliegendste Bibliothek aus der Microsoft Office Familie ist natürlich die Excel-Automation-Objekt-Bibliothek. Wenn du nur Daten im Excel-Dateiformat zum Datenaustausch mit anderen Anwendungen exportieren willst, brauchst du Excel nicht zu automatisieren. Allerdings habe ich Excel-Automation in zahllosen Projekten verwendet, wenn Daten für die weitere Analyse in Excel selbst exportiert werden sollten. In diesem Anwendungsfall wirst du wahrscheinlich noch einige hübsche Formatierungen und Anpassungen des Layouts in dem exportierten Excel-Arbeitsblatt vornehmen wollen. - Willkommen zur Excel-Automatisierung.

    Hier ist das VBA Modul mit allen Automatisierungskonstanten/Enums der Microsoft Excel 15 (Excel 2013) Objekt Bibliothek: modMSExcel15_Enums

    Andere Office Versionen

    Du kannst diese Module auch verwenden, wenn du eine frühere Version einer Microsoft Office Anwendung in deinem Projekt verwendest. Natürlich solltest du dann keine Konstanten in deiner Programmierung verwenden, die erst mit Office 2013 neu eingeführt wurden.

    Das gilt analog für Office 2016. Du kannst die Module verwenden, aber wenn du eine Konstante benötigst, die in Office 2016 neu hinzugefügt wurde, musst du diese selbst per Hand deklarieren/kopieren.

    Ich werde wahrscheinlich zukünftig auch entsprechende Module für Office 2016 bereitstellen.

    Andere Anwendungen

    Mit der Veröffentlichung des Modules der Konstanten für die Excel-Automatisierung sind die geplanten Module jetzt vollständig.

    Wenn du eine Idee hast für andere, häufig verwendete Bibliotheken, die auch für andere nützlich sein könnten, dann schreib mir doch eine Email mit deinem Vorschlag an phil@codekabinett.com und ich werde sehen, was ich tun kann.

    Auch wenn im Moment keine konkreten weiteren Module geplant sind, kannst du natürlich trotzdem gerne meinen Newsletter abonnieren, um bei eventuellen weiteren Veröffentlichungen informiert zu werden.



    Zurück zur Übersicht

    Abonniere meinen Newsletter

    *

    Ich werde Deine Email-Addresse niemals weitergeben. Du kannst den Newsletter jederzeit abbestellen.



    © 1999 - 2017 by Philipp Stiefel