(C) 2009 - 2021 by Mourad Louha · Alle Rechte vorbehalten

In meinem Lieblingsforum zu Microsoft Office stellte jemand die Frage, ob es möglich ist, in VBA ein Bilderkarussell zu programmieren. Hierbei soll sich eine bestimmte Anzahl von Bildern beim Anklicken einer kreisförmigen Bahn folgen. Beispielsweise würde beim Anklicken eines Bildes in der folgenden Abbildung, das Bild Nummer 1 die Position von Bild Nummer 2 einnehmen, Bild 2 wandert an die Stelle von Bild 3 usw.. Die Beispieldatei inklusive dem VBA Code können Sie am Ende des Artikels herunterladen.

Excel VBA Animator

Read more


Gelegentlich führe ich auch Projekte in PHP durch. Eine sehr interessante und professionell betreute in PHP entwickelte Klassenbibliothek, um Excel Dateien lesen und schreiben zu können, ist das Codeplex Projekt PHPExcel. Die Bibliothek ist frei im Quelltext verfügbar.

PHP Excel

Um die Bibliotheken verwenden zu können, wird mindestens PHP 5.2.0 vorausgesetzt und dass die Erweiterungen „php_zip“, „php_xml“ und „php_gd2“ aktiviert sind. Wobei erste Erweiterung nur für Excel Dateien im XLSX Format benötigt wird. Die Bibliothek ermöglicht ebenfalls das Lesen und Schreiben des älteren XLS Formats. Eine ausführliche Beschreibung (jedoch nur in Englisch) findet sich auf der Website zum Projekt.

Relativ neu sind die weiteren Projekte „PHPPowerPoint“ und „PHPWord“, welche auch teilweise auch von denselben Entwicklern wie für „PHPExcel“ betreut werden. Folgend die Links zu den Projekten.

Dieser Artikel wurde auch in der englischen Verson vom Excel Ticker publiziert.


Im Microsoft Office 2010 Answers Forum stellte jemand die Frage, wie auf eine Excel Instanz von einer weiteren zugegriffen werden könnte und aus dieser heraus, Code in der ersten Instanz ausgeführt werden könnte. Dies brachte mich auf die Idee, alle Excel Instanzen per Windows API zu ermitteln und zu versuchen, auf diese per VBA zuzugreifen. Dieser Artikel beschreibt die Vorgehensweise und stellt Teile des Codes vor, wobei Kenntnisse in der VBA Programmierung vorausgesetzt werden, so auch das Verwenden von TreeViews, ListViews und Einbinden von Windows API Funktionen. Eine Beispielanwendung kann am Ende des Artikels heruntergeladen werden und ist ungeschützt, so dass der Code eingesehen werden kann.

VBA Window Handles

Read more


In meinem Artikel „Excel VBA Application Objekte per Windows API erzeugen (Teil 1)“ hatte ich eine Möglichkeit vorgestellt, wie über Windows API Funktionen alle geöffneten Excel Instanzen ermittelt werden können und gegebenenfalls daraus VBA Application Objekte erzeugt werden können. Das funktionierte jedoch nur mit den Excel Instanzen, in denen eine Arbeitsmappe geöffnet war. Dieser Artikel stellt nun eine Lösung vor, wie in Excel Instanzen ohne geöffnete Mappe per Windows API eine neue Mappe angelegt wird und anschließend das VBA Application Objekt erzeugt wird.

VBA Window Handles

Die Idee war insofern, ein neues Dokument in der Excel Instanz anzulegen und anschließend den Scan-Vorgang für alle Fensterhandles in dieser Instanz zu wiederholen. Um ein neues Dokument in Excel anzulegen, kann die Tastenkombination „Strg + N“ verwendet werden. Am einfachsten wäre es sicherlich einfach den Tastendruck und gedrückt halten für „Strg“ und anschließend die Taste „N“ zu simulieren.

Read more


In meinem Beitrag „Die wichtigsten Änderungen in VBA für Excel 2010“ vom 5. August 2009 hatte ich bereits über einige Änderungen am VBA Objektmodell in Excel 2010 berichtet. Zudem hatte ich zum damaligen Zeitpunkt begonnen, eine VBA Anwendung zu entwickeln, die das automatisierte Parsen aller VBA Objekte, Methoden, Eigenschaften und Konstanten ermöglicht. Erst vor kurzem hatte ich die Zeit, den „Excel VBA Typlib Parser“ fertig zu stellen.

Die Anwendung ist Freeware und kann am Ende des Beitrages heruntergeladen werden. Die Ausgabetabellen sind zwar geschützt, jedoch ist das Kennwort im Quellcode zu finden, welcher ungeschützt eingesehen werden kann. Die Copyright Tabelle und die Mappe sind ebenfalls geschützt, diese Kennwörter sind nicht öffentlich zugänglich.

Die Anwendung nutzt die Bibliothek „TlbInf32.dll“ aus meinem Systemverzeichnis, welche Funktionen zur Verfügung stellt, um automatisiert Typbibliotheken zu scannen. Ganz wichtig: an dieser Stelle ist anzumerken, dass diese Bibliothek zwingend benötigt wird und auch korrekt in Windows registriert sein muss. Die Software ist ohne diese Bibliothek nicht lauffähig. Die Bibliothek ist aus rechtlichen Gründen im Download der Anwendung nicht enthalten.

Excel VBA Typelib Scanner

Read more


Im Excel Hilfe Forum bei „Office Lösung“ stellte jemand die Frage, ob es denn möglich sein, eine Grafik aus dem Internet jede Minute automatisch aktualisieren zu lassen. Der User hatte im Forum einige Beispiel-URL’s angegeben, die eine Grafik (Gif) in einem definierten Zeitintervall auf dem Server aktualisiert.

In diesem Fall wird die Grafik auf dem Server jedoch dynamisch generiert und in Form von Rohdaten ohne jeglichen HTML-Code an den Browser übertragen. So nebenbei, in PHP würde man hierzu beispielsweise die Funktion header() und readfile() einsetzen. Die PHP Funktionen ermöglichen, wenn sie in einer bestimmten Reihenfolge und durch eine Angabe diverser Parameter (wie z.B. den Inhaltstyp „Content-Type“) aufgerufen werden, das direkte Senden binärer Daten an den Browser. Eine Webabfrage in Excel kann mit solchen Daten leider nicht umgehen. Somit muss eine andere Lösung her.

Excel Dynamic Image

Read more


Vor einiger Zeit gab es im Forum „Office-Lösung“ eine sehr interessante Diskussion, wie in Excel der Wert von 80 ^ 200 ausgerechnet werden könnte. Mit Excel Bordmitteln ist dies leider so ohne weiteres nicht möglich, denn Excel schneidet Berechnungsergebnisse ab der 15. Stelle ab bzw. rundet diese auf oder ab. Auch eine Implementierung per VBA unter Verwendung der Standarddatentypen „Long“, „Single“ oder „Double“ ist nur bedingt möglich, denn der Wertebereich von Variablen dieser Typen ist begrenzt.

Heinz Schweigert, User des Forums, hatte damals im Thread vorgeschlagen, ob denn nicht meine experimentelle VBA-Anwendung „Karatsuba Algorithmus in VBA“ zur Berechnung von 80 ^ 200 verwendet werden könnte. Diese Anwendung bildet große Zahlen als „String“ ab und umgeht somit die Beschränkungen der anderen Datentypen. Nachteil ist jedoch, dass dann die Grundrechenarten zum Addieren und Subtrahieren selbst implementiert werden müssen.

Mein Code in dieser Anwendung war jedoch speziell zur Multiplikation von Zahlen mit sich selbst entwickelt worden, weshalb der Code noch entsprechend angepasst werden musste. Heinz hatte dies freundlicherweise zum Teil übernommen und eine angepasste Version dem Forum zur Verfügung gestellt, welche sehr schnell 80 ^ 200 ausrechnen konnte.

Dieser Artikel läutet eine Artikelserie ein, in welchen ich pro Artikel eine VBA Funktion für die Grundrechenarten mit großen Zahlen vorstellen werde. Anschließend wird ein Add-In erstellt werden, das die Funktionen komfortabel als Formel zur Verfügung stellt und dann auch zum Download bereit stehen wird. Schließlich plane ich das Add-In um weitere komplexere Rechenarten zu erweitern; wobei dies nur im Rahmen der mir zu Verfügung stehenden Zeit geschehen kann.

So nebenbei, Ziel des Add-Ins ist es nicht, gigantische Zahlen auszurechnen oder irgendwelche Rekorde zu brechen; dafür gibt es spezialisierte Programme. Das Ziel des Add-Ins ist es eher, über hinreichend schnelle Routinen im Alltag den Umgang mit großen Zahlen erleichtern.

Addition von großen Zahlen in Excel

Den Anfang macht heute eine Funktion zum Addieren von großen Zahlen. An dieser Stelle nochmal ein Danke schön an Heinz Schweigert für seine Ideen zur Verbesserung des Originalcodes.

VBA Large Numbers

Read more


Im ersten Artikel dieser Reihe hatte ich eine VBA Funktion vorgestellt, um große Zahlen in Excel addieren zu können. Prinzip hierbei ist, die in Strings abgelegten Zahlen blockweise zu addieren und anschließend die Blöcke wieder zusammenzufügen.

Dieser Artikel stellt nun eine VBA Funktion vor, um eine Subtraktion großer Zahlen durchzuführen; auch hier werden wir die Zahlen in Blöcke aufteilen, jedoch aber zusätzlich einen kleinen Trick anwenden.

Subtraktion von großen Zahlen in Excel

Im folgenden Bild sind die zwei Ausgangszahlen X und Y zu sehen. Die hier vorgestellte Funktion wird allerdings nur dann korrekt ablaufen, wenn beide Zahlen positiv sind und zudem X größer Y ist. Für spätere Berechnungen ist dies ausreichend, denn eine Subtraktion der Form „X – Y mit X < Y“ lässt sich durch eine Vorzeichenumkehr in das gewünschte Format umwandeln: „-(Y - X) mit Y > X“.

VBA Large Numbers

Read more