Word: Dokumente anonymisieren mit VBA

Verlassen in Ihrem Unternehmen oder Ihrer Behörde auch Office-Dokumente das Haus, die persönliche Daten über den Autor oder den zuletzt Ändernden enthalten? Besser wäre es, wenn diese Daten nicht nach außen bekannt werden, oder? Office liefert dazu eine Funktion (Auf Probleme prüfen-Dokumenteigenschaften und personenbezogene Informationen), die aber etwas versteckt ist.  

Mit den folgenden VBA-Befehlen können sie das Anonymisieren realisieren.

mehr lesen 0 Kommentare

Word: Ja-Nein Fragen in Formularen mit Inhaltssteuerelementen - Wie geht das?

Formulare in Word mit Inhaltssteuerelementen sind schnell erstellt und hoch funktional. Allerdings liegt auch hier, wie immer, die Tücke im Detail.

  1. Wie schafft man es, dass von mehreren Optionen nur eine auswählbar ist, also beim Klick auf Ja das Kreuz vor Nein verschwindet.
  2. Wie kann dynamisch Text aus oder eingeblendet werden, je nachdem, wie die Antwort auf eine Frage lautet?
  3. Was muss man tun, damit nur die Inhaltssteuerelemente bearbeitbar sind, nicht aber der Text drum herum?

Eine Lösung für diese drei Fragen möchte ich hier anhand eines kleinen Beispiels vorstellen

(Siehe Bild 1).

Zu sehen ist ein Formular mit Ja-Nein-Auswahl.
Bild 1
mehr lesen 0 Kommentare

Outlook und Excel: Kontaktgruppe per Knopfdruck aus einer Excel-Liste erstellen

Screenshot Excel-Tabellenblatt
Screenshot Excel-Tabellenblatt

Wer regelmäßig Outlook-Kontaktgruppen (Verteiler) erstellt und pflegt, der hat sich vielleicht schon einmal Gedanken darüber gemacht, wie sich diese Arbeit vereinfachen lässt.

Vor einiger Zeit habe ich dazu eine kleine Excel-Anwendung geschrieben
(Siehe Screenshot oben).

mehr lesen 0 Kommentare

Excel: Erweiterte Filter auf Knopfdruck aktualisieren

Hier werden die Suchkriterien und der Zielbereich definiert
Bild 1- Das Dashboard-Tabellenblatt

Die Aufgabenstellung lautete,

  • aus einer Datentabelle nur gefilterte Daten auf ein anderes Tabellenblatt, eine Art Dashboard, zu kopieren.
  • Dabei sollten die Filterkriterien dynamisch angepasst werden können.
  • Die gefilterten Ergebnisse sollten nach Anpassen der Filter mit einem Klick aktualisiert werden können.

Wie das realisiert werden kann, möchte ich hier gern vorstellen.

mehr lesen 1 Kommentare

Excel: CodeName von Tabellenblättern ändern und wozu das gut ist

Zeigt die Standard-Code-Namen einer Excel-Mappe
Bild 1

Will man in einem Excel-VBA-Projekt per Programm auf bestimmte Tabellenblätter zugreifen, so eignet sich dazu hervorragend die Eigenschaft CodeName eines Blattes

(siehe Bild 1).

 

Diese  Eigenschaft

  • wird von Excel vergeben,
  • folgt dem Muster "Tabelle1", "Tabelle2" usw. und
  • kann von einem Anwender nicht geändert werden.

Benutzt der Entwickler den CodeName für den Zugriff auf ein Tabellenblatt, so kann der Anwender also den Namen des Blattes nach Belieben ändern, ohne die VBA-Anwendung dadurch in Schwierigkeiten zu bringen. Die Excel-Mappe muss nicht gesperrt werden.

Zeigt ein Beipiel für geänderte Code-Namen in einer Excel-Mappe
Bild 2

Für den Entwicker wäre es allerdings wünschenswert, dass der CodeName erkennen lässt, welche Funktion das Tabellenblatt in der Anwendung hat (siehe Bild 2).

 

 

Im Folgenden zeige ich,

  • wie die Eigenschaft CodeName per VBA geändert werden kann und
  • das Tabellenblatt mit einem bestimmten CodeName per VBA angesprochen wird.
mehr lesen 5 Kommentare

Access: Schrift in einem Bericht mit Unterberichten ändern

Als ich letztens in einem recht komplexen Bericht etwas anpassen wollte, war ich erstaunt. Plötzlich hatte sich die Schrift geändert. Viele Labels und Textboxen waren nun zu klein für den vorgesehenen Inhalt. Mit der folgenden kleine Prozedur habe ich schnell den gesamten Bericht inklusive aller Unterberichte auf die gewünschte Schrift geändert.

Die Prozeudur Schriftart_aendern (siehe unten) geht durch alle Textboxen, Labels und Unter-Berichte und stellt die Schrift auf Arial 9 um. Für Unterberichte wird Schriftart_aendern rekursiv aufgerufen.

Es wird vorausgesetzt, dass der Bericht in der Entwurfsansicht geöffntet ist.

Starten kannst Du die Prozedur zum Beispiel im Direktbereich des VBA-Editors mit

call Schriftart_aendern

mehr lesen 0 Kommentare

Tools: MZ-Tools 8.0 für VBA- Entwickler

Die MZ-Tools von Carlos Quintero haben meine Entwicklungsarbeit mit VBA revolutioniert. Hier gibt es sehr hilfreiche Funktionen, die mir schon lange im VBA-Editor gefehlt habe. MZ-Tools kann das Leben eines Entwicklers sehr erleichtern. Wie würde Carlos Quintero sagen?

"MZ-Tools has a single goal: To make your everyday programming life easier. "

Die Software wird liebevoll gepflegt. Es gibt regelmäßig neue kostenlose Updates und Fixes.  Im Moment liegen die Kosten bei einmalig 80$.

Nachfolgend möchte ich Euch meine Lieblingsfunktionen aus den MZ-Tools vorstellen.

mehr lesen 0 Kommentare

Word: Namensschilder für Veranstaltungen schnell und umweltschonend erstellen

Für die Teilnehmer von Veranstaltungen und Seminaren stelle ich Namensschilder her. Da fühlt man sich als Teilnehmer doch gleich ein wenig erwartet. Ganz abgesehen davon ist es für mich sehr hilfreich.

Mit dem hier vorgestellten Tool könnt Ihr auf normalem Druckerpapier doppelseitig bedruckte Schilder herstellen. Die A4-Seite wird zweimal gefaltet, was dem Namensschild gleich etwas Stabilität verschafft. Es muss also kein wertvolles, schweres Papier benutzt werden, für etwas, was nachher in der Regel in den Papierkorb wandert.

In der hier vorgestellten Lösung wird das Hauptdokument die Datenquelle immer finden, wenn sie im gleichen Verzeichnis abgelegt wird und den Namen behält. Dafür sorgt ein kleines Makro, das beim Öffnen des Hauptdokumentes aufgerufen wird.

Die Lösung besteht aus zwei Dateien:

  • Namensschilder_Hauptdokument.docm (Makro beim Öffnen)
  • Namensschilder_Datenquelle.xlsx
mehr lesen 1 Kommentare

Excel: Ausgewählte Zellen per Tastenkürzel nach oben oder nach unten verschieben

Vor ein paar Tagen habe ich diesesTastenkürzel vorgestellt, mit dem man in MS Office Absätze und Tabellenzeilen nach oben und unten verschieben kann.

Siehe: https://www.konschak.de/office-zeilen-verschieben

In Excel funktioniert dieses Tastenkürzel leider nicht. Mit ein paar Makros in der PERSONAL.XLSB kann man das Verschieben per Tastenkürzel allerdings auch in Excel ermöglichen.

Das komplette Modul stelle ich unten zum Download bereit.

mehr lesen 2 Kommentare

PowerPoint: Icons für eigene Menübänder und Schaltflächen selbst erstellen

Wer eigene Benutzeroberflächen erstellt, steht immer wieder vor der Aufgabe,  aussagekräftige Symbole für Schaltflächen oder Office-Ribbons zu erstellen. Professionell sieht es aus, wenn die Objekte in der Grafik freigestellt sind. Dazu muss eine transparente Farbe in einem PNG oder GIF festgelegt werden.

Mit PowerPoint lässt sich diese Aufgabe wundervoll erledigen, und es macht so viel Spaß, dass man glatt die dazugehörige Programmierung vergessen könnte. 
Übrigens: Wer diese Arbeit lieber abgeben möchte, kann sich gern mit einer entsprechenden Anfrage an mich wenden.

mehr lesen 0 Kommentare

Zugriff auf passwort-verschlüsselte Access-Datenbank funktioniert nicht

Seit der DSGVO wünschen sich viele Kunden, dass ihre Daten verschlüsselt werden. Also wurde das Access-Backend eines Kunden mit einem Passwort verschlüsselt. Es gibt in dieser Firma aber auch Anwendungen in Word und Excel, die auf diese Datenbank zugreifen und sich Informationen beispielweise für Kundenbriefe oder Kalkulationen ziehen. Während die Word-Anwendung auch mit der verschlüsselten Datenbank super funktioniert hat, meldete die Excel-Anwendung: "Kein zulässiges Kennwort.

In beiden Fällen wurde die Connection via VBA auf die komplett gleiche Art und Weise hergestellt:

con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=[Backend-Dateiname mit Pfad]; Jet OLEDB:Database Password=[Passwort]"

 

mehr lesen 3 Kommentare

Word: Mit VBA Bilder austauschen

Kürzlich hatte ich die Aufgabe, in der Kopfzeile eines Standardbriefbogens Logos für Zertifizierungen dynamisch auszutauschen. Na, das kann ja nicht so schwer sein, dachte ich mir. Wie sich herausstellte, ist doch einiges dabei zu beachten, so dass mir das Thema einen Blog-Beitrag wert erscheint. Hier also eine kleine Anleitung. Die Beispiellösung liegt zum Download bereit (Siehe weiter unten).

Screenshopt: Word-Kopfzeile mit Engel-Logo
Screenshopt: Word-Kopfzeile mit Engel-Logo
Screenshot: Word-Kopfzeile mit Teufel-Logo
Screenshot: Word-Kopfzeile mit Teufel-Logo

mehr lesen 4 Kommentare

Shortcuts für COM-Add-Ins (VB.Net) realisieren

Shortcuts für COM-Add-In-Funktionen
Shortcuts für COM-Add-In-Funktionen

Problem:
COM-Add-Ins sind eigenständige Anwendungen. Sie können standardmäßig keine Shortcuts von Office-Anwendungen verarbeiten. Das ist misslich, denn wahrscheinlich hätte man ganz gern für die selbst gebauten Funktionalitäten Tastenkombinationen, wie etwa Strg+Alt+A, vergeben.

 

Lösungsansatz:
Im Gegensatz zu COM-Add-Ins können in Word-Add-Ins Tastenkombinationen für Makros und Vorlagen vergeben werden.
Die Lösung, die hier vorgestellt wird, besteht nun darin, ein solches Word-Add-In zu erstellen und dort über Makros Methoden des COM-Add-Ins aufzurufen. Den Makros werden im Word-Add-In Tastenkombinationen zugewiesen. Damit der Aufruf der COM-Add-In-Methoden funktioniert, müssen dies für andere Lösungen verfügbar gemacht werden.
Das Word Add-In kopiert man dann in das Start-Verzeichnis von MS Word. Damit wird es zu einer globalen Dokumentvorlage.

mehr lesen 0 Kommentare

VBA: Fehlerdiagnose/ Debugging vereinfachen mit einem extra Resume

Der folgende Trick hilft enorm, wenn man in einem VBA-Programm die Codezeile finden möchte, die einen Laufzeitfehler verursacht hat. Dazu baut man ein extra Resume in den Errorhandler der Prozedur ein. Im Normalfall wird dieses extra Resume vom Programmablauf nie erreicht, weil direkt davor der Aussprung aus der Fehlerbehandlung steht. Für das Debugging ist die Zeile aber sehr hilfreich. Sieh selbst!

 

Fehlerverursachende Programmzeile finden
Bild 1 : Programmcode mit extra Resume- Verschiebe den gelben Pfeil auf Resume!
mehr lesen 0 Kommentare

Excel: Benutzerdefinierte VBA-Tabellenfunktion (UDF) immer neu berechnen

Benutzerdefinierte VBA-Tabellenfunktionen (User Defined Functions) sind ein mächtiges Instrument, um Excel spezifische Geschäftslogik beizubringen. Zudem verbessern sie entscheidend die Lesbarkeit von Excel-Formeln. Wer hat nicht schon über ein mehrfach verschachteltes Funktionsungetüm gegrübelt, um herauszubekommen, was da eigentlich gerechnet wird?

Manchmal braucht man benutzerdefinierte Funktionen, die immer neu berechnet werden, wenn sich irgendetwas in der Excel-Mappe ändert. Solche Funktionen nennt man volatil. Ein Beispiel für eine volatile Funktion ist übrigens die integrierte Funktion JETZT() 

Es ist sehr einfach, eine benutzerdefinierte Funktion volatil zu machen.

mehr lesen 2 Kommentare

Access: Prozessmeldungsfenster schaffen Vertrauen

Das Formular, das die Prozessmeldung anzeigt
Bild 1

Überarbeitete Version:

Im Oktober 2017 habe ich Euch das Prozessmeldungsfenster schon einmal vorgestellt. Inzwischen hat die Lösung ein paar kleine Verbesserungen erfahren. So  ist es nun möglich, nachdem der Anwender auf das Abbrechen-Symbol geklickt hat, im Meldungsfenster anzuzeigen, was als nächstes passieren wird. Im Bild 1 seht Ihr ein Beispiel für das Aussehen des Meldungsfensters, nachdem auf das Abbrechen-Symbol geklickt wurde.

 

Access: Prozessmeldungsfenster schaffen Vertrauen:

Datenverarbeitungsaktionen können manchmal länger dauern. Gut, wenn der Anwender des Programms dann Prozessmeldungen erhält, die den Fortschritt sichtbar machen. Das beruhigt, schafft Vertrauen und lässt die Zeit gefühlt schneller vergehen. Im Gegensatz zur VBA-Funktion MsgBox(), ist hier keinerlei Interaktion durch den Anwender nötig. Das Fenster meldet nur laufend den Prozessfortschritt und verschwindet von selbst, wenn der Vorgang abgeschlossen ist.  Ich verwende diese oder eine ähnliche Lösung in allen meinen Projekten, nicht nur in Access-Anwendungen sondern auch in Excel-, Word- und VB.net-Projekten.

 

Für den Fall, dass der Anwender den Vorgang vorzeitig abbrechen möchte, bietet das Meldungsfenster eine Abbrechen-Schaltfäche (Bild 2). Mit dieser Schaltfläche gibt der Anwender dem Programm zu verstehen, dass der Vorgang zum nächst möglichen Zeitpunkt abgebrochen werden soll. Wann das passiert entscheidet der Programmierer.

Meldungsfenster mit der Möglichkeit zum Abbrechen des Datenverarbeitungsvorgangs
Bild 2
mehr lesen 0 Kommentare

Word Add-In: Tools für Abschnitte (Version 1.0)

Add-In Menüband Register
Add-In Menüband Register

Vielleicht hattet Ihr auch schon einmal den Wunsch, mehrere Worddokumente, die zu einem Vorgang gehören, in einem Dokument zusammenzufassen. Word macht das möglich durch das Anlegen mehrerer Abschnitte. Allerdings ist die Handhabung von Abschnitten etwas tricky. Erleichterung schafft da dieses Add-In.

mehr lesen 0 Kommentare

VB.Net: Im Dateisystem suchen mit LINQ

 Dim aH() As String = (From f In

                                      Directory.GetFiles(SuchOrdner, "*", SearchOption.AllDirectories)
                                      Where
                                          (
                                          f.EndsWith(".dotx") Or
                                          f.EndsWith(".dotm") Or

                                          f.EndsWith(".docx") Or

                                          f.EndsWith(".docm") Or
                                          f.EndsWith(".dot") Or
                                          f.EndsWith(".doc")
                                          ) And (Not f.Contains("~"))
                                     Select f ).ToArray()

 

Als ich so eine Anweisung zum ersten Mal gesehen habe, musste ich mir glatt die Augen reiben! Häh?Was ist das denn?

Mit einer einzigen Anweisung werden hier alle Word-Dateien in einem Suchordner und desse Unterordner gefunden. Die kompletten Dateinamen werden im Array aH() abgelegt. Cool, oder!?

mehr lesen 0 Kommentare

Access: Genialer, nativer Access-Treeview

Ein Treeview ist wunderbar für die übersichtliche und leicht verständliche Darstellung von Zusammenhängen und Hirarchien.

 

ABER:

Systemer sind not amused, wenn zusätzliche Steuerelemente für die Anwendung installiert werden müssen.

 

UND: Der Programmierer steht vor der bangen Frage: "Läuft mein Programm mit diesem externen Steuerelement auch noch nach dem nächsten Windows- oder Office-Update?". Ich erinnere hier an das Kalendersteuerelement, dass Microsoft vor Jahren nach einem Update knallhart und kaltherzig deaktiviert hat.

Der Ausweg aus dem Delemma:  Der Treeview von picoware.

Dieser Lösung braucht kein ActiveX, kein OCX, keine DLL nicht einmal einen API-Call.

 

Ich habe das Tool erworben, und werde demnächst von meinen praktischen Erfahrungen damit berichten.

 

Mehr Infos hier: https://www.picoware.de/info/treeview.htm

0 Kommentare