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

Excel 2013 VBA für Profis

Passende Dateien finden

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Die Liste ermöglicht optimale Flexibilität, um auf viele verschiedene Zieldateien vorbereitet zu sein.

Transkript

Im Moment ist die Zielliste schon so weit, dass ich da reinschreiben kann, einen beliebig Inhalt, und vor allem einen aus einer Enumeration geholten Datentyp, in diesem Fall nicht Variablen-Datentyp, sondern Export-Datentyp nenne ich den mal. Der wird gleich nach vorne wandern und in die zweite Spalte möchte ich dann den konkreten Namen reinschreiben. Also die Stelle, wo das passiert, ist ja das UserForm_Initialize. Und hier werde ich jetzt ein bisschen die Reihenfolge ändern. Also das ist die Zwischenablage. Und dort steht auch wirklich das Wort, ich schreibe das aber in Klammern, "Zwischenablage". Entsprechend wird die zweite Zeile hier zuerst den Typen nennen und anschließend in mehreren Zeilen die offenen Dateien. Das heißt, wir brauchen hier eine Schleife. Und danach, den lasse ich erstmal so stehen, nur dass ich die Reihenfolge schon verbessere, danach kommen dann die geschlossenen Excel-Dateien. Da ist noch ein Gänsefüßchen übrig. Und da oben ist es natürlich versehentlich reingeraten. Hier muss ich jetzt alle geöffneten Workbooks behandeln. Das sind vielleicht nicht viele, im Moment vielleicht sogar nur eins, aber es wird eine Schleife sein. Also, ich ändere mal hier die Reihenfolge, damit Long unten steht Und hier kommen wir mit Integer aus, da bin ich sicher. Dim intAnzWorkbooks As Integer. Und jetzt hier einfach: For intAnzWorkbooks = 0 to. Wen können wir fragen, wie viele es gibt? Genau, die Workbooks-Auflistung, die hat eine Count-Eigenschaft. Und wenn sie bei 0 losginge, wäre es bei "Count -1", aber wenn ich es richtig im Kopf habe, ist es eine 1-basierte, das werden wir gleich rauskriegen. Und dort drin schreibe ich jetzt diese Zeile so oft es sein muss. Hier wird ja automatisch die nächste Zeile erzeugt. Das Schwierigste ist hier, die richtige Zeile rauskriegen, aber da können Sie ja einfach die Liste fragen, die hat immer eine ListCount-Eigenschaft, Anzahl der bisher enthaltenen Zeilen. Und die -1 gibt die richtige Position an. Und dort schreibe ich jetzt rein den Namen des offenen Workbooks, dessen Index also intAnzWorkbooks ist und dessen Name-Eigenschaft ich wissen will. Also statt eine einzige Zeile hier reinzuschreiben, gehe ich in einer Schleife alle offenen Dateien, alle geöffneten Workbooks durch von 1 bis Anzahl; da werden wir gleich prüfen, ob das korrekt ist; schreibe den Typ rein, das ist immer wieder ein WorkbookOffen, und hole mir dann passend zu der For-Next-Schleife den Namen. Wenn es eine 0-basiert Auflistung ist, wird es hier einen Fehler geben. Wenn es eine 1-basierte Auflistung ist, ist es richtig. Also einmal speichern, Augen zu und testen. Und das sieht so weit gut aus. Es ist eine Datei offen, die eigene nämlich, mit der wir gerade arbeiten. Und deswegen werde ich jetzt provozieren, indem ich in Excel einfach ein paar neue Dateien anlege, mit Datei Neu, eine leere Datei. Datei Neu, zweite leere Datei. Da steht gar nichts drin, es sind nur mehrere geöffnet. Und kann jetzt mit Alt+F11 das nochmal starten. Und stelle jetzt fest, dass dort ein Fehler enthalten ist. Also brechen wir nochmal kurz ab; in den Code wechseln. Und zwar steckt hier zum Beispiel noch ein Fehler drin. Dass ich hier beliebig Workbooks hinzufüge und dann aber unerschrockken in die dritte Zeile was hineinschreibe. Da muss ich natürlich ab jetzt auch auf ListCount -1 zugreifen. Hier kann ich fest kodiert in die erste Zeile reinschreiben. Aber hier muss ich immer Zeilenanzahl weiterzählen, und zwar auch in denen dahinter. Neuer Versuch, vorher speichern. Einmal mit F5. Und dann funktioniert es auch wie erwartet. Also die erste zum Beispiel enhält die Zwischenablage. Das ist ja kein echter Dateiname, deswegen habe ich es in Klammern geschrieben. Ab dann werden immer mit dem Typ 1, das ist geöffnete Excel-Datei, Workbook, alle Dateien angezeigt. Und danach kämen alle vom Typ geschlossene Excel-Datei. Die gibt es noch nicht, aber Sie sehen, hier steckt schon eine Auflistung dahinter. Und das werde ich jetzt entsprechend mit den geschlossenen Excel-Dateien auch machen. Also hier wieder in UserForm_Initialize, dort unten an die entsprechende Stelle, um jetzt die geschlossenen Dateien zu bearbeiten. Das wird ein ganz klein bisschen anders funktionieren. Ich brauche eine String-Variable. Dim strAktDatei As String. Und gehe jetzt hier mit einer Do-Loop-Schleife durch. Ich mache das mal mit ein bisschen Abstand, dann wird das sicherlich deutlicher. Also Do Until strAktDatei = "". Das können wir schonmal einrücken, auch wenn es noch nicht richtig ist. Und Loop. Natürlich muss ich vorher auch mal die aktuelle Datei ermitteln. Also strAktDatei = Dir. Und das Verzeichnis, was ich durchsuchen will, ist ThisWorkbook.Path &"\*.xls*" Das bedeutet, die alten XLS-Dateien und die neuen. Ich kann es auch auf die neuen beschränken. Dann würden Sie hier ein ? schreiben. Und damit es keine Endlosschleife wird, muss hier natürlich strAktDatei = Dir () stehen. Und hier soll eben nicht allgemein "geschlossene Datei" stehen, sondern der Dateiname, den ich gerade gefunden habe, also strAktDatei. Wenn man sehen möchte, wo die eigentlich herkommt, kann man zur Not auch ThisWorkbook.Path davor schreiben, je nachdem ob der Pfad sehr lang ist. Wir gucken mal einfach, wie es aussieht. Einmal Debuggen Kompilieren. Alles richtig. Und mit F5 sehen Sie jetzt hier, das sind die drei geöffneten Dateien, meine und die zwei hilfsweise geöffneten, und das sind vier Excel-Dateien, die in diesem Verzeichnis liegen. Ich kann also anhand dieser Nummer unterscheiden, welche Art das ist. Das darf bei Gelegenheit noch ein bisschen hübscher werden. Aber technisch bietet es schon alles, was ich wollte. Es gibt drei Typen: die Zwischenablage, die bereits geöffneten Dateien, und die geschlossenen Dateien. Und diese Liste ist beliebig flexibel, je nachdem ob Sie mehr oder weniger Dateien offen haben.

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!