VBA: Bedingte Kompilierung nutzen

In VBA-Projekten kann es vorkommen, dass Anweisungen nur in bestimmten Situationen kompiliert werden sollen. Das bekannteste Beispiel sind die Deklarationen von API-Funktionen, die je nach VBA-Version mal in der 32-Bit- und mal in der 64-Bit-Variante bereitgestellt werden sollen. Da die 64-Bit-Version bei Verwendung von 32-Bit-Access unter Umständen Datentypen mit sich bringt, die es in der 32-Bit-Version nicht gibt, würde dies beim Kompilieren zu Fehlern führen. Daher gibt es die sogenannte bedingte Kompilierung, bei der man mit speziellen If…Then-Bedingungen dafür sorgen kann, dass nur die für die aktuelle Version relevanten Codezeilen kompiliert werden können. In diesem Artikel zeigen wir, wie die bedingte Kompilierung funktioniert. Außerdem stellen wir ein weiteres Beispiel vor, in dem wir entweder die Early Binding- oder die Late Binding-Verwendung von Variablen nutzen wollen – abhängig von einer zur Laufzeit gesetzten Bedingung.

Weiterlesen

VBA: Datei-Icons einlesen und speichern

Symbole und Icons spielen in Microsoft-Access-Anwendungen eine oft unterschätzte Rolle. Dabei können sie die Bedienbarkeit und Verständlichkeit einer Datenbank erheblich verbessern – insbesondere dann, wenn Dateien, Ordner oder Dokumenttypen visuell unterschieden werden sollen. Während Access für viele Steuerelemente wie TreeView, ListView, Symbolleisten oder Ribbon-Schaltflächen grundsätzlich Icon-Unterstützung bietet, stellt sich in der Praxis häufig die Frage:Wie lassen sich die echten System-Icons von Dateien – so wie sie auch im Windows-Explorer angezeigt werden – in einer Access-Anwendung verwenden? Genau das zeigen wir in diesem Artikel und liefern auch noch das Know-how, um die eingelesenen Icons direkt in der Tabelle MSysResources zu speichern. Von dort können wir sie beispielsweise in ein ImageList-Steuerelement schreiben – um sie dann in TreeView- und ListView-Steuerelementen anzuzeigen.

Weiterlesen

Access-Datenbank zum SQL Server migrieren

Für die Migration der Tabellen einer Access-Datenbanken in eine SQL Server-Datenbank erledigt man am einfachsten mit einem von Microsoft bereitgestellten Tool namens SQL Server Migration Assistant. Diesem übergeben wir den Namen der zu migrierenden Datenbank, wählen die Tabellen und Abfragen aus, die zum SQL Server übertragen werden sollen und starten dann die Migration. Dies überträgt legt eine neue Datenbank im SQL Server an und überträgt die gewählten Tabellen und Abfragen von Access zum SQL Server. Mit dem SQL Server Migration Assistant können wir außerdem direkt Tabellenverknüpfungen zu den neu erstellten Tabellen in der Access-Datenbank anlegen, sodass wir grundsätzlich direkt mit der Access-Anwendung weiterarbeiten können – mit dem Unterschied, dass die Daten nun nicht mehr aus den Access-Tabellen kommen, sondern vom SQL Server. In diesem Artikel zeigen wir die grundlegende Verwendung des SQL Server Migration Assistants, wobei wir erst einmal eine Datenbank verwenden, deren Tabellen und Felder sich ohne größere Probleme zum SQL Server übertragen lassen.

Weiterlesen

Dateien im SQL Server speichern mit FileTables

In Access gibt es verschiedene Möglichkeiten, Dateien zu speichern. Diese kann man zum Beispiel in Anlagefeldern ablegen, oder man belässt die eigentlichen Dateien im Dateisystem und notiert in den Tabellen lediglich den Pfad zu den Dateien oder auch nur die Dateinamen. Welche Variante man wählt, hängt letztlich von der Menge und der Größe der Dateien ab, sprich: vom benötigten Speicherplatz. Der ist nämlich in Access-Datenbanken auf zwei Gigabytes begrenzt. In SQL Server-Datenbanken sieht dies ganz anders aus. Selbst bei Verwendung der kostenlosen Express-Edition dürfen die einzelnen Datenbank-Dateien bis zu zehn Gigabytes an Platz auf der Festplatte einnehmen. Auch hier gibt es verschiedene Varianten zum Speichern der Dateien. Die erste ist, die Dateien in varbinary(max)-Feldern zu hinterlegen. Oder man nutzt dazu sogenannte Filetables. Hier werden die Dateien in einem speziell dazu vorgesehenen Bereich der Festplatte abgelegt, aber unter die Kontrolle des SQL Servers gestellt – und gleichzeitig über einen speziellen Typ von Tabelle verwaltet. Wie das gelingt, zeigen wir in diesem Artikel.

Weiterlesen

Backstage-Bereich per COM-Add-In anpassen

Wenn man eine der Office-Anwendungen um ein selbst programmiertes COM-Add-In erweitern möchte, kann man den Backstage-Bereich nutzen, um eventuell notwendige Optionen für dieses COM-Add-In dort abzubilden. Wir würden dann einen eigenen Reiter auf der linken Seite des Backstage-Bereichs platzieren, über den wir einen eigenen Bereich anzeigen können. Diesem wiederum können wir verschiedene Steuerelemente für die Anzeige und Eingabe von Optionen hinzufügen. Dieser Artikel zeigt, wie wir ein einfaches COM-Add-In mit twinBASIC erstellen und dieses mit der Definition einer Backstage-Erweiterung ausstatten und wie diese Erweiterung beim Starten der Anwendung angezeigt wird.

Weiterlesen

Backstage-Bereich von Office erweitern

Die Office-Anwendungen zeigen seit der Version 2010 einen neuen Bereich namens Backstage an, der allgemeine Funktionen wie zum Verwalten von Dateien wie Erstellen, Öffnen und Speichern, aber auch allgemeine Informationen und Möglichkeiten zum Drucken von Dokumenten an. Außerdem finden wir hier einen Bereich zum Einsehen des verwendeten Microsoft-Kontos und eine Schaltfläche zum Anzeigen der Optionen der jeweiligen Anwendung. Aber auch dieser Bereich ist, genau wie das Ribbon selbst, anpassbar. Wie das gelingt, schauen wir uns in diesem Grundlagenartikel einmal im Detail an.

Weiterlesen

Outlook: Mails nach dem Senden per VBA verschieben

Für eingehende E-Mails gibt es unter Outlook die Regel-Funktion, mit der man einstellen kann, unter welchen Umständen eine E-Mail, die im Posteingang landet, in einen anderen Ordner verschoben werden soll. Das kann man beispielsweise nutzen, um immer wiederkehrende Rechnungen direkt in den entsprechenden Ordner zu verschieben. Wünschenswert wäre, wenn es eine solche Funktion auch für versendete E-Mails gäbe. Da Outlook hier aber keine eingebaute Funktion bereitstellt, schauen wir uns das Thema einmal genauer an und entwickeln VBA-Code, mit dem wir diese Aufgabe selbst steuern können. Dabei wollen wir sowohl über die Benutzeroberfläche gesendete E-Mails erfassen als auch E-Mails, die wir per VBA absenden.

Weiterlesen

Outlook: Gesendete Mails per COM-Add-In verschieben

In einem anderen Artikel namens “Outlook: Mails nach dem Senden per VBA verschieben” (www.vbentwickler.de/440) haben wir die grundlegenden Techniken gezeigt, mit denen wir E-Mails, die wir selbst versendet haben, nicht in den Ordner Gesendete Elemente verschieben, sondern in einen Ordner unserer Wahl. Damit können wir einfach E-Mails in bestimmten Kontexten direkt in einen Ordner verschieben, wo auch die übrigen E-Mails zu diesem Thema landen. Eigentlich läuft diese Funktion automatisch und bedarf keiner Benutzer-Interaktion, aber wir benötigen eine Möglichkeit, die Regeln für das Verschieben der E-Mails zu definieren. Dazu haben wir eine Textdatei benutzt, die wir für den Benutzer auf einfachem Wege zugänglich machen wollen, zum Beispiel durch das Anklicken eines Ribbonbuttons. Dazu verwenden wir ein COM-Add-In, dem wir auch noch die eigentliche Funktion hinzufügen – und noch ein paar Extras. In diesem Artikel beschreiben wir, wie Du ein solches COM-Add-In mit twinBASIC ganz einfach selbst bauen kannst.

Weiterlesen

Outlook: E-Mails erneut senden

Manchmal kommen E-Mails in Postfächern an, wo man diese nicht optimal weiterverarbeiten kann. Ein Beispiel sind E-Mails von Kunden, die Fragen zur Buchhaltung haben, aber ihre E-Mails an die allgemeine info@-Adresse geschickt haben. Dann können wir diese E-Mail zwar an die Buchhaltungs-Adresse weiterleiten, aber wenn die Buchhaltung dann auf diese E-Mail antworten soll, enthält diese bereits die beim Weiterleiten automatisch eingefügten Elemente – das wirkt auf den Kunden nicht besonders professionell. Oder wir haben eine der vielen “Software As A Service”-Anwendung, die ein eigenes Postfach haben, über das wir Informationen direkt dorthin schicken können. Ein Beispiel ist die Projektverwaltung Trello, der man E-Mails an eine spezielle E-Mail-Adresse zusenden kann, die dann dort automatisch als Aufgaben angelegt werden. In diesem Artikel zeigen wir, wie wir mit wenigen Anweisungen eine Kopie dieser E-Mail an eine weitere Adresse schicken können. Das erledigen wir zunächst durch den Aufruf einer VBA-Prozedur. Anschließend schauen wir uns an, wie wir das auch über die Benutzeroberfläche erledigen können.

Weiterlesen

Projekte verwalten mit Trello

Mittlerweile gibt es einige Online-Tools, mit denen man Projekte verwalten kann. Der Vorteil solcher Tools in der heutigen Zeit ist, dass wir diese von überall nutzen können. Egal, ob Mitarbeiter vor Ort arbeiten, beim Kunden sind oder auch im Homeoffice sitzen – die Projektdaten sind immer zugriffsbereit und können jederzeit aktualisiert werden. Das könnte auch für uns als Access-, Office- oder VBA-Entwickler interessant sein. Die Zeiten sollten vorbei sein, an denen man sich als Access- oder Excel-Entwickler in seiner Ehre verletzt fühlt, wenn man Projekte nicht mit seiner Liebings-Officeanwendung verwalten kann. Da diese Tools nur bedingt onlinetauglich sind, wir aber dennoch immer den Überblick über den Stand verschiedener Projekte haben wollen, sollten wir uns für alternative Möglichkeiten öffnen. Aber nicht nur deshalb schauen wir uns in diesem Artikel das Projektmanagement-Tool Trello an, sondern auch, weil es eine für uns sehr wichtige Eigenschaft erfüllt: Es liefert eine Rest-API-Schnittstelle, über die wir die Daten des Tools auslesen und auch bearbeiten können. Wie das gelingt, betrachten wir in einem weiteren Artikel.

Weiterlesen