Eigenes Icon für Ribbon 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.
In dem nachfolgend verlinkten YouTube-Video von Video2brain ist die Vorgehensweise sehr gut beschrieben:

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 0 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 0 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)

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