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

Update auf Version 1.25 zum Add-In zum Auflisten von Verzeichnissen

Ich habe ein Update auf die Version 1.25 Build 110811 zu meinem Add-In zum Auflisten von Verzeichnissen publiziert. Auf Grund einiger Nachfragen, meist per E-Mail und in einigen Kommentaren zum vorherigen Artikel, sind nun folgende Features integriert:

  • Optionales Sortieren der eingelesenen Verzeichnisse.
  • Optionales Einfügen eines Hyperlinks zu den eingelesenen Dateien und Verzeichnissen
  • Korrektur der Anzeige eines Verzeichnisses, falls dessen Name aus einer Zahl mit führenden Nullen besteht.

Ausserdem habe ich meine Lizenzbestimmungen zum Add-In geändert: dieses Add-In darf weder von der GEZ oder der GEMA als Unternehmen bzw. Organisation noch von den dortigen Mitarbeitern und Mitarbeiterinnen im Rahmen Ihrer Beschäftigung verwendet werden. Dies gilt ebenfalls für alle der GEZ und/oder GEMA angeschlossenen und/oder abhängigen Einrichtungen und logischerweise auch für den Quellcode. Für alle andere Personen oder Unternehmen bleiben die Lizenzbestimmungen unverändert, heißt, das Add-In ist kostenlos und steht frei zur Verfügung.

Download zum Add-In, Version 1.25 – Build 110811, Deutsch

Mourad Louha

Über den Autor · Mourad Louha

Mourad arbeitet seit 2005 als selbständiger Softwareentwickler und Trainer und lebt in Aachen, gelegen am Dreiländereck Belgien, Deutschland und Niederlande. In seiner Freizeit engagiert er sich in Online Communities rund um Office, schreibt beim Excel Ticker Artikel zu Office & Co. und betreibt weitere Community Projekte in Zusammenarbeit mit Freunden und Partnern, wie das Forum zu Microsoft Office 365 und Office 2013, den Excel Soccer oder den Excel Formel Übersetzer. Für sein außergewöhnliches Engagement wurde er seit Januar 2011 jährlich von Microsoft als Microsoft Most Valuable Professional (MVP) ausgezeichnet.

 
Comments

Moin moin,

ein klasse Tool! Ich bin wirklich begeistert.

Ist es möglich, falls ein weiteres Update folgt, Informationen über die einzelnen Dateien abzurufen und dies in das Add-In zu integrieren? Beispielsweise das Erstellungsdatum oder das letzte Änderungsadtum?

Mit freundlichen Grüßen

Hendrik

Hallo Hendrik…

vielen Dank :-) Das liesse sich sicher bewerkstelligen, die Idee finde ich gut und habe sie mal in die Planungen bzw. Aufgabenliste der nächsten Versionen aufgenommen.

Gruß

Super, danke schonmal im Voraus!

Gruß

Hallo, ist es mit dem Add-Inn möglich, in einer Tabelle nur die neu hinzugekommenen Dateien hinzuzufügen und nicht wieder das ganze Verzeichnis?

Gruß Mecky

Hallo Mecky…

Erstmal ist das leider so nicht möglich; dafür müsste ein Teil des Codes umgeschrieben werden. Ich kann die Idee aber in die Vorschlagsliste aufnehmen.

Viele Grüße :-)

Hallo,
auf einem XP 32Bit System funktionierte das prima. Beim meinem WIN7/64 Bit mit Office2007 bekomme ich einen Hinweis, dass die Objektbibliothek ungültig wäre oder Verweise, Objektdefinitionen, die nicht gefunden werden könnten.

Geht das nicht unter Win7/64 oder muß ich da noch was anderes machen?
Merci

Hallo holger…

Vielen Dank für die Rückmeldung; das Problem kann auf mehrere Fälle zurückzuführen sein.

Das Tool nutzt Windows API Funktionen, das kann – muss aber nicht – dass es unter 64 Bit nicht lauffähig ist, das konnte ich in der Kombination mangels Testsystem nicht testen.

Das Tool benötigt zudem einen Verweis zur MSComCtl.ocx, die 32 Bit Lib muss allerdings im System registriert sein. Ist durchaus möglich dass es bei Deinem 64 Bit System nicht der Fall ist. In solchen Fällen erscheint in der Regel die Meldung eines ungültigen Verweises. Unter C:\Windows\System\SysWow64 müsste die OCX Datei vorhanden sein. Auf eigenes Risiko (!) kannst Du probieren die Bibliothek zu registrieren. Erstelle Dir eine neue Verknüpfung auf dem Desktop, wo Du als Programm cmd.exe angibst. Danach die Verknüpfung rechts anklicken und als Administrator ausführen. Du erhälst ein Kommandozeilenfenster. Dort eingeben: regsvr32.exe C:\Windows\SysWow64\mscomctl.ocx /u und Enter. Nach der Meldung anschließend nochmals eingeben: regsvr32.exe C:\Windows\SysWow64\mscomctl.ocx und Enter. Danach sollte die Bibliothek neu registriert worden sein.

Sollte dass dann immer noch nicht gehen, kann es sein, dass die Ursache an einem MS Update vom April liegt. Das wäre dann komplizierter zu beheben.

Grüße :-)

Das ist der Hammer, so etwas hatte ich schon ewig gesucht, suuuperrrr gemacht.

Vielen Dank Herr Louha, viele Grüße :)

Hallo Götken,

Herzlichen Dank, freut mich, dass das Tool Ihnen weiterhilft :-)

Viele Grüße, Mourad

Hallo, mit dem neuen Office 2013 kommen jede Menge Fehlermeldungen.
„Mehrere Objekte konnten nicht geladen werden, da sie auf diesem Computer nicht verfügbar sind.“

„Microsoft Visual Basic for Applications
Compilerfehler im ausgeblendeten Modul: MLP_Api
Dieser Fehler tritt normalerweise auf, wenn Code mit der Version, Plattform oder Architektur dieser Anwendung nicht kompatibel ist. Informationen zum Beheben dieses Fehlers erhalten Sie, indem Sie auf „Hilfe“ klicken.“

Bitte um Hilfe!

Hallo Christian,

vermutlich ist das mscomctl.ocx Steuerelement auf dem Rechner nicht registriert. Das vergisst das Setup von Office seit 2010 ganz gerne mal, nachdem es das Steuerelement deregistriert hat. Ausserdem kann die Anwendung zum Auslesen der Verzeichnisse nicht in Excel 64 Bit verwendet werden. Unter Excel 32 Bit auf einem 64 Bit Windows kann’s ebenfalls ein Problem geben. Deshalb wären erstmal Deine Systemvorausetzungen zu klären.

Wie gesagt, 64 Bit Excel, keine Chance. 32 Bit Excel auf 64 Bit Windows hatte ich nicht getestet, befürchte aber, dass es Probleme mit den API’s geben kann. Dies zu beheben würde eine Überarbeitung des Tools bedeuten, was ich momentan aus Zeitmangel nicht leisten kann. Um die fehlende Bibliothek zu registrieren, kannst Du die Anleitung 4 Kommentare zu diesem ausprobieren.

Gruß

Hallo

was bin ich froh, dass ich dies Tool gefunden habe :-) Genial!

Aber -wie immer- ein kleiner Wunsch dazu:
Ich habe einen recht verschachtelten Verz.-baum. Das heißt in den Verzeichnissen befinden sich immer wieder Dateien UND weitere Ordner; über 4 bis 9 Ebenen.
Das Ergebnis sieht nun leider recht krude aus, weil es sich über viele Spalten verteilt und die Dateinamen sind mal in Spalte2 und mal in Spalte9 und ganz rechts dann der Link als Pfeil. Das Ganze ist unglaublich breit, weil ich ja ALLES anzeigen muss um alle Dateinamen zu sehen zu bekommen.

Viel besser für mich wäre, wenn -sofern vorhanden- der Dateiname ganz links stünde und z.B. gleich daneben der Link , oder besser noch, der Dateiname ist gleich als Link gesetzt (Das ganze Verzeichnisinformationszeugs , bzw. alle Pfade interessieren mich eigentlich nur als Zusatzinfo)
Müsste doch eigentlich leicht sein, weil nur die Reihenfolge rechts/links getauscht werden müsste und sowas wie „linksbündig“ hinzukommt, also eben so, dass Links alle Dateinamen untereinander stehen.
Geht das?

Viele Grüße aus Freiburg
Steven

Ach ja, noch eine Kleinigkeit:
lasse ich das Script zweimal über dieselbe Tabelle laufen und das vorherige Ergebnis wird überschrieben, bleibt die Formatierung der Links (Wingdings) erhalten und alle Pfad- und Dateiinfos , die in diesen Zellen stehen werden unlesbar.
Gut wäre daher beim Überschreiben von Zellen alles zu überschreiben, auch vorherige Formate.

Hallo Steven,

herzlichen Dank für’s Lob und die Rückmeldung :-)

Eine Änderung beinhaltet hier auch eine Änderung der Logik, die die Pfade pro Ebene in eine Spalte ablegt, je nachdem wie viele es sind. Leider habe ich momentan nicht die Zeit dazu, aber falls Du VBA kannst, könntest Du eine Anpassung ggf. selbst durchführen. Der Quellcode ist offen und das Kennwort lautet excelticker. Du müsstest die Prozedur mlfpApiDirectories() modifizieren. Vielleicht ginge es am einfachsten, indem Du einfach am Ende der Prozedur die letzten drei Spalten per Code nach vorne verschiebst. Richtig, das Script sieht nicht vor, dass eine bestehende Auflistung an Dateien überschrieben wird. Auch das könnte man abfangen, indem man am Anfang alle Zeilen löscht, z.B. UserRange abfragen und wech.

PS: eine neue Version, die besser in Excel 2010 funktioniert (ist manchmal recht langsam, da für 2003 konzipiert) ist in Vorbereitung. Nur wann ich das publizieren kann, kann ich wegen des Zeitmangels, leider nicht sagen.

Viele Grüße, Mourad

Für mich war wichtig, dass die Hyerlinks vorne stehen und den entweder Verzeichnisnamen oder Dateinamen anzeigen.
Vielleicht für andere ebenfalls interessant, daher poste ich meine Formellösung.

Hat man die Verzeichniss- und Dateinamen in eine separate Tabelle ausgelesen, muss die Exceltabelle mit den gewünschten Links/Shortcuts zu den Dateien ein Verz. oberhalb der aufgelisteten Verzeichnisse liegen.
In Spalte D und folgende wird nun das mit dem Add-IN ausgelesene Ergebnis mit allen Verzeichnisnamen kopiert.
Folgende Formel bildet Hyperlinks mit „freundlichen Namen“ aus bis zu 9 stufigen Verzeichnisebenen.
(Zeile 1 ist für Titel, Formel in Zelle A2 einfügen und dann runterkopieren)

=HYPERLINK(D2&WENN(E2=““;““;“\“)&E2&WENN(F2=““;““;“\“)&F2&
WENN(G2=““;““;“\“)&G2&WENN(H2=““;““;“\“)&H2&WENN(I2=““;““;“\“)&I2&
WENN(J2=““;““;“\“)&J2&WENN(K2=““;““;“\“)&K2&WENN(L2=““;““;“\“)&L2;
WENN(ISTTEXT(L2);L2;WENN(ISTTEXT(K2);K2;WENN(ISTTEXT(J2);J2;WENN(ISTTEXT(I2);I2;
WENN(ISTTEXT(H2);H2;WENN(ISTTEXT(G2);G2;WENN(ISTTEXT(F2);F2;WENN(ISTTEXT(E2);E2;
WENN(ISTTEXT(D2);D2))))))))))

Um Dateien und Verzeichnisse unterschiedlich darzustellen sind folgende bedingte Formatierungen (Regeln) hilfreich:
(Ich nutze einfach die Tatsache, dass Dateinamen Punkte enthalten, Verzeichnisnamen dürfen also keine Punkte enthalten, ansonsten werden sie falsch dargestellt):

=> Verzeichnisse markieren:
=ISTFEHLER(FINDEN(„.“;A2))
=FINDEN(„.“;A2)=0

=> Dateien markieren:
=FINDEN(„.“;A2)>0

Hallo steven,

herzlichen Dank dafür, dass Du hier Deine Lösung geteilt hast, super :-)

Viele Grüße, Mourad

Hallo
Ein Super-AddIn!!! Das hat mir viel Arbeit gespart. Vielen Dank für das Bereitstellen. Klasse.
Viele Grüße Claudia

Hallo Claudia,

Danke, freut mich, dass es nützlich ist :-)

Viele Grüße, Mourad

Hallo Mourad,
ich finde das Tool richtig klasse. Habe es mittlerweile auch schon für meine Bedürfnisse angepasst, da ich die Dateinamen alle untereinander haben wollte und die verschiedenen Unterverzeichnisse nicht in verschiedenen Zellen. Das hat auch prima geklappt. Nun wollte ich als weitere Info noch das letzte Bearbeitungsdatum dazunehmen und dachte, die Variable „ftLastAccessTime“ könnte mir da weiterhelfen. Diese gibt aber nur dwLowDateTime und dwHighDateTime aus und dahinter stecken long-Zahlen, mit denen ich nichts anfangen kann.
Gibt es eine Möglichkeit, aus diesen Zahlen ein Datum/Zeit zu machen? Dies wäre das einzige, was mir noch fehlen würde.
Ich habe echt großen Respekt vor so einer Programmierarbeit.
Viele Grüße
Petra

Hallo Petra,

vielen Dank!

Ja, das geht schon, dazu muss man Windows API-Funktionen verwenden, um die Zahlen zu konvertieren. Ich bin nur momentan leider etwas im Stress und habe deshalb erstmal nur den Kommentar freigeschaltet. Morgen bzw. übermorgen schreibe ich dann hier an dieser Stelle etwas ausführlicher dazu.

Viele Grüße, Mourad

Hallo Mourad,
super. Diese Informationen haben mir schon gereicht. Ich habe die beiden API-Funktionen „FileTimeToLocalFileTime“ und „FileTimeToSystemTime“ gefunden und damit t.ftLastWriteTime konvertiert. Nun habe ich alle Werte, die ich brauche. Vielen vielen Dank.
Viele Grüße Petra

Moin Petra,

supi, dass Du schon eine Lösung gefunden hast :-)

Für andere Leserinnen und Leser, hier ein Link zu einer Referenz für Windows API Funktionen für die Kategorie Dateisystem. Die beiden Funktionen FileTimeToLocalFileTime und FileTimeToSystemTime sind dort zu finden und enthalten auch Beispiele, die man in VBA verwenden kann.

Viele Grüße, Mourad

PERFEKT – Vielen Dank!

Vielen Dank :-)

Hallo,

vielen Dank für das tolle Addin, funktioniert prima…

EIne Frage bzw. Anregung habe ich noch: Wäre es möglich, die ANzahl der Verzeichnisstufen zu begrenzen?

Denn ich möchte z.B. nur die ersten beiden Verzeichnisebenen nach dem Startverzeichnis ausgegeben haben und nicht den kompletten „Verzeichnisbaum“. Die Struktur ab Ebene 3 ist für mich nicht interessant und vergrößert die Ausgabedatei „unnötig“.

Danke & Gruß,
Christian

Mourad Louha

Hallo Christian,

erstmal vielen Dank. Ich denke schon, dass das möglich wäre; man müsste im Code einen Ebenenzähler einbauen, sodass die Rekursion bei der entsprechenden Ebene aufhört; die betroffene Funktion wäre mlfpApiDirectories, wo dann ggf. ein zusätzlicher Parameter angelegt und dieser über den Dialog übergeben werden müsste. Leider habe ich jedoch momentan nicht die Zeit, diese Änderungen durchzuführen. Später vielleicht, es müsste eh‘ mal eine Anpassung wegen 64 Bit Excel gemacht werden.

Viele Grüße, Mourad

Hi Mourad,
heute bin ich auf Dein Addin gestossen – und habe es ausprobiert.
Erstes Feedback: erstaunlich schnell selbst bei viiiielen Dateien :)
Nur eine Frage:
Bei einer „Verzeichnis-Tiefe“ von 18 Unterverzeichnissen ist Schluß
und der Datei-Link ist in der Spalte S (19)
Du wirst es kaum glauben, aber bei uns geht es in einer Abteilung
auf den Verzeichnis-Level 25 ! … unglaublich … ;)
Idee: Verzeichnistiefe „offen lassen“ und den Link in die Spalte A einfügen.
Zuviel Aufwand ? … na, nur ne Idee ;)
Ansonsten freu ich mich auf unser nächstes PBI-Treff in FFM
Bis dahin: frohe Weihnachtszeit und kommt gut ins „Neue“
Besten Gruß
Stefan

Hallo Stefan :-)

freut mich, dass das Add-In hilfreich ist. Denke mal, das lässt sich durchaus erweitern. Wobei, ich müsste es mir selbst noch mal angucken, ist ja schon eine Weile her. Ich greife die Idee mal auf. Wann ich das genau umsetzen kann, weiss ich noch nicht. Vor nächstes Jahr wohl eher nicht.

Dir auch frohe Weihnachten und einen guten Rutsch. Und bis zum nächsten PBI-Treffen.

Beste Grüße,
Mourad

Leave a Reply