Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Excel 2013 VBA für Profis

Dateigröße und Speicherdatum ermitteln

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Zwei spezielle Funktionen ermitteln für eine Datei deren Größe und das letzte Speicherdatum. Damit können Sie die wesentlichen Informationen ermitteln.

Transkript

Beim Umgang mit Textdateien meistens, die Sie lesen oder schreiben können, kommt früher oder später die Idee auf, für Ihren Benutzer eine Liste anzuzeigen auf Ihren Formularen, damit er auswählen kann, welche Textdatei zum Beispiel zur Verfügung stehen. Das ist nicht besonders schwierig und soll hier auch gleich angereichert werden mit einer Zusatzinformation, zum Beispiel die Größe der Datei oder das Speicherdatum. Das braucht wegen der Menge der zu erwartenden Informationen eigentlich sinnvollerweise ein Formular, also hier ein UserForm einfügen, welches ich relativ lieblos und hässlich halten werde, nur so gerade eben den Namen vernünftig vergeben: dlgDateien. Und vielleicht die Caption "Dateien anzeigen". Und da sollen die Listen dann für mich angezeigt werden. Listenförmig heißt automatisch, Sie brauchen aus der Toolsammlung dieses Listenfeld. Das ziehe ich schonmal hier auf. Und das braucht natürlich einen vernüftigen Namen, also lstDateien. Und es soll beim Öffnen des Dialogs oder des Formulars direkt gefüllt werden. Also ein Doppelklick hier auf den Formularhintergrund. Dann lande ich zwar in UserForm_Click, kann das aber hier direkt verbessern auf UserForm_Initialize und die ursprüngliche Prozedurleiche wegschmeißen. Innerhalb des Initialize brauche ich jetzt eine Variable für einen Dateinamen und kann dann damit in einer Schleife alle Dateien aus einem Verzeichnis abfragen. Also: Dim StrDatei As String. Und weil der Pfad häufiger auftauchen wird, werde ich mir den auch hinterlegen. Also: const cstrg, Konstante, nämlich für den Pfad. Und der soll sein, da nehmen wir als Verzeichnis einfach C:\Windwos\System32\. Achten Sie auf den abschließenden Backslash. Denn dieses Verzeichnis ist sehr voll, da brauche ich jetzt nicht besonders viele Beispieldateien hinzulegen. Ich lese einfach jede Datei aus. Und es beginnt damit, dass ich zuerst mal frage: Wie sieht denn die erste Datei aus? Gibt es da einen Dateinamen? Das geschieht mit der Dir-Funktion. Und die möchte einen Pfad wissen, und ein Suchmuster. Ich will jede Datei sehen. Wenn in diesem Pfad mit diesem Suchmuster überhaupt eine Datei enthalten ist, kriegen Sie mit dieser Funktion die erste mit Ihrem Dateinamen zurück, nur den Dateinamen. Und da kann ich jetzt eine Schleife machen. Do Until strDatei="". Mach also so lange, wie es noch eine Datei gibt. Und nicht vergessen: Loop. Und vor allem nicht vergessen, das wäre nämlich eine Endlosschleife, dass Sie die nächste Datei in strDatei reinlesen, und zwar mit der gleichen Dir-Funktion, aber ohne Parameter. Der erste Aufruf mit Parametern gibt die erste Datei zurück. Jeder weitere Aufruf ohne Parameter gibt jede weitere Datei zurück, die jeweils nächste. Bis irgendwann keine mehr kommt, das regelt das Betriebssystem. Und dann wissen Sie Bescheid, jetzt ist Schluss. Und solange noch welche da sind, befinden wir uns in der Schleife. Und da kann ich jetzt mit Me.lstDateien.AddItem, mit der Methode deren Namen da reinschreiben. Nämlich strDatei. Ich bin sicher, dass da was drinsteht. Ich speichere das schonmal. Und kann das in das Listenfeld hineinschreiben. Das können wir direkt mit F5 testen. Sie werden feststellen, das geht irre schnell. Dieses Verzeichnis ist sehr voll, da sind einige Hundert Dateien drin, und trotzdem haben Sie keine Verzögerung gemerkt. Das ist also die einfachste Technik, um jetzt in einem Formular, klassischerweise in einem Listenfeld, anzubieten, diese Dateien stehen zur Auswahl. Sie können sie über das Suchmuster, ich schließe das hier schonmal, hier nämlich mit den Sternchen, natürlich einschränken, wenn Sie sagen, ich will nur die Textdateien sehen. Damit es ein bisschen netter wird und ich weiß, wie viele Dateien da eigentlich sind, werde ich das kurz dazuschreiben, nämlich in einem Label, in einem Textelement. Also eine Beschriftung darüber. Die wird nicht so viel Platz brauchen, aber es kann nicht schaden; die das Präfix lbl für "Label" kriegt und auch Dateien heißt. Der Inhalt, ich mache die schonmal im BackStyle auf Transparent, damit es schöner ist. Der Inhalt ist mir herzlich wurscht, da darf jetzt im Moment "Label" drinstehen. Ich werde direkt nach dem Loop hingehen und sagen, Me.lblDateien.Caption kriegt jetzt einen neuen Text, nämlich wie viele Dateien da drinstehen. Da kann ich jemanden fragen, der weiß, dass genau nämlich das Listenfeld hat eine ListCount-Eigenschaft. Und die verkette ich dann mit einem beliebigen Text, zum Beispiel diesem. Und wenn ich das jetzt mit F5 starte, dann sehen Sie, das sind immerhin fast 2.500 Dateien drin. Und es war in einem Fingerschnipsen fertig. Es geht also nicht um Geschwindigkeitsprobleme. Aber ich hatte ja versprochen, es geht schöner, nämlich hier noch mit der Angabe, wie lang die Datei, wie groß sie ist, oder wann sie gespeichert wurde. Dazu müssen wir mehrere Änderungen machen, nämlich erstens in diesem Listenfeld die Anzahl der Spalten erhöhen, auf zum Beispiel 3. Können wir hier noch ein bisschen nach unten ziehen. Und zweitens, im Code, das können wir auch hier wechseln, muss ich jetzt außer AddItem, was die erste Spalte füllt, die zweite Spalte auch füllen, nämlich mit Me.lstDateien.Column. Dann muss ich angeben, die wievielte Spalte. Die zweite hat die Nummer 1, weil die erste ja 0 ist. Und da muss ich noch sagen, wievielte Zeile, nämlich Me.lstDateien, so viele wie es schon Zeilen gibt, ListCount-1, weil auch das eine 0-basierte Auflistung ist. Und die kriegt jetzt einen Inhalt, zum Beispiel die Größe der Datei. Das ist eine Funktion, die heißt FileLen von "length", Länge. Und die will in den Klammern den PathName wissen, also nicht nur den Dateinamen selber, sondern auch den Pfad dazu. Deswegen hatte ich den auch in der Konstanten. Diese wiederum verkettet mit aktuellen Dateinamen, der ist in strDatei, Klammer zu. Da muss man sich ein bisschen dran gewöhnen. AddItem ist eine Methode mit dem Inhalt als Parameter. Column ist eine Eigenschaft, die per Gleichheitszeichen zugewiesen wird. Und wenn da jetzt nichts falsch ist, können Sie mit F5 das Ganze starten, und sehen jetzt hier die Größe, allerdings in Bit, noch nicht mal in Byte. Wir müssen also hier diese ganz kleinen Dateien erstmal umrechnen. Das geht aber unproblematisch. Also das, was hier als Zahl rauskommt, durch 1024 zu teilen. Dann haben Sie Byte. Das Ganze können Sie direkt formatieren, also mit der Format-Funktion, das Ergebnis in ein schönes Format bringen. Zum Beispiel mit Tausenderpunkt, und einer Beschriftung. Und wie Sie sehen, habe ich es falsch rum gemacht, denn das ist das Lästige dabei. Sie geben bei dem Format natürlich den englischen Geschmack an, also ein Tausenderkomma und ein Dezimalpunkt, kriegen aber trotzdem die deutsche Version angezeigt. Jetzt ist es richtig. Also 2,1 kB. Da sitzt das Komma an der richtigen Stelle. Und das sind 3,7 MB, nämlich 3.700kB. Rechtsbündig geht nicht, bevor Sie sich das gerade überlegen, diese Listenfelder können das nur linksbündig. Das ist also die Größe der Datei. Und das lässt sich entsprechend noch ergänzen. Ich mache das mal einfach als Kopie. Da wird sich nämlich nur ganz wenig ändern. In der Spalte 3, mit der Nummer 2, die müssen wir aber noch einfügen, nicht FileLen, sondern FileDateTime. Die können wir aber unformatiert anzeigen und vor allem ungeteilt. Also statt FileLen, die Länge, die Größe der Datei, gibt es hier auch noch das Speicherdatum. Allerdings erwartet es eine dritte Spalte. Das bedeutet, ich muss hier das Listenfeld erstmal markieren. Habe ich schon gemacht. Und kann es dann direkt laufen lassen. Also mit F5. Jetzt hat es mal minimal länger gedauert, nämlich von 2.500 Dateien drei Informationen auslesen, nicht nur einen Dateinamen, sondern auch diese. Und wie Sie sehen, ist das ein Standardformat. Damit haben Sie eigentlich alles zusammen, was eine normale Datei an Informationen nach außen tragen muss. Und das können Sie jetzt nach Belieben sortieren, über Filter einschränken, nur die DLLs, nur die Textdateien, oder was weiß ich.

Excel 2013 VBA für Profis

Nutzen Sie die Möglichkeiten der Programmiersprache VBA in Excel 2013, um eigene Dialoge zu erstellen, auf andere Arbeitsmappen zuzugreifen und wichtige Funktionen einzusetzen.

4 Std. 59 min (53 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!