Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Excel 2016 VBA für Profis

DateiÖffnen-Dialog anzeigen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Der Windows-eigene DateiÖffnen-Dialog lässt sich mit einem einzigen VBA-Befehl anzeigen und auswerten.

Transkript

Nachdem Sie gesehen haben, wie schön man so einen Dialog erstellen kann, ist die Versuchung sehr groß. Da kurz noch zu ergänzen, wie man in ein anderes Laufwerk wechselt, wie man den Pfad wechseln kann, und Ähnliches. Und da habe ich eine gute und eine schlechte Nachricht für Sie. Fangen wir mit der schlechten an. Das ist verschenkte Arbeit, weil die gute Nachricht lautet, das gibt’s schon. Sie können den "Datei öffnen"-Dialog, so wie er von Windows angeboten wird, einfach so benutzen, und zwar mit viel, viel, viel weniger Aufwand, als wir hier reingesteckt haben. Diese Liste ist erstens nur sinnvoll, wenn Sie die auf einem eigenen Formular haben wollen, und wenn Sie genau diese Beschränkungen sehen wollen, möglichst wenig Informationen, und es darf der Benutzer kein Laufwerk wechseln, nicht den Pfad wechseln können, umbenennen, kein Kopieren oder sonst was. Diese Liste kann nichts, und das ist gut so. Aber es ist nur dann sinnvoll, wenn sie auch nur so wenig anzeigen soll. Um das nachzuprogrammieren, was den "Datei öffnen"-Dialog ausmacht, den von Windows, braucht es nur eine einzige Zeile. Und zwar nicht mal ein eigenes Formular. Ich mache mal hier kleinen bisschen Platz. Das können wir in "modDateien" einbauen. Denn es hat was mit Dateien zu tun. Und nennen das mal einfach "Sub DateiAuswaehlen()". Die Prozedur, die wir dann aufrufen, ist eigentlich eine, die an Application, einem Application-Objekt, hängt, aber ausnahmsweise mit dem Application-Objekt genannt werden muss. Also, die Schreibweise wäre "Application." und dann gibt es zwei, die heißen "GetOpenFileName", die brauche ich. Und es gibt eine "GetSaveAsFilename", die genauso aussieht, aber erlaubt, neue Dateinamen zu vergeben. Die "GetOpenFileName" beschwert sich dann und sagt, diese Datei gibt’s ja nicht. Und damit klar wird, dass sie einen Rückgabewert hat, schreibe ich sie sowie eine "Function". Allerdings muss ich natürlich den Rückgabewert auch loswerden. Deswegen brauche ich eine Variable. Die ist aber nicht "strDatei", sondern "varDatei", ausdrücklich "As Variant". Sie werden gleich sehen, warum. Und dieser kann ich das dann zuweisen. Damit ich sehe, was dabei rauskommt, mache ich erstmal eine "MsgBox", die einfach "varDatei" anzeigt. Und im Grunde reicht diese Zeile hier, um diesen "Datei öffnen"-Dialog anzuzeigen. Dann gucken wir mal, was passiert. Mit F5 wird der angezeigt. Das Laufwerk, ich kann hier alles machen, was ich will. Ich sehe alle Dateien, habe einen Filter über alles, kann die Anzeige ändern. Es ist der Original-"Datei öffnen"-Dialog. Das einzige, was er nicht macht, ist zu öffnen. Sie können alles machen und kriegen zum Schluss bestenfalls... Ich nehmen mal den hier. Wenn Sie eine Datei ausgewählt haben, kriegen Sie den Dateinamen im Pfad zurück. Also, hier kompletter Pfad mit Dateiname. Oder, ich rufe das einfach direkt nochmal auf. Sie können auch stattdessen, wenn Sie nichts auswählen oder selbst wenn Sie was auswählen und auf "Abbrechen" gehen, die boolesche Ja/Nein-Variable "Falsch" zurückbekommen. Deswegen muss es ein "Variant"-Datentyp sein, weil entweder ein String zurückkommt, Dateiname mit Pfad, oder eine boolesche Variable, die "false" sagt. Und deswegen müssen wir das entsprechend behandeln. Also, das kann weg. "If varDatei = false" kann ich direkt fragen, "Then" habe ich ein Problem. "Else" war alles in Ordnung. Und da kann ich schon mal "Else" und "End If" hinschreiben. Hier könnte ich im Grunde gar nichts machen. Aber ich schreibe mal dazu: "Keine Datei ausgewählt." Machen wir ruhig ein "vbExclamation", Ausrufezeichen, und damit man sieht, wer das meldet, kommt wieder die AppName-Konstante dran. Und in dem anderen Fall schreibe ich dann: "MsgBox" Ausgewählte Datei. Und da können wir dann "varDatei" nennen. Und das ein bisschen Platz verbrauchen könnte, machen wir es ruhig "vbcrlf" mit dem Zeilenumbruch. Und auch hier aber ein "vbInformation" und ein "p" mit der Konstanten "AppName". Was Sie dann in Wirklichkeit damit machen, bleibt Ihnen überlassen. Der Benutzer glaubt, er hätte eine Datei ausgewählt, die dann geöffnet wird. Aber, ob Sie die öffnen, bleibt Ihre Entscheidung. Wir gucken erstmal, wie es so aussieht. Also mit F5, ich wähle eine aus. Nehmen wir ruhig mal eine, die Excel sogar nicht öffnen könnte. Ein GIF-Bild. Nach dem Öffnen wird einfach nur der Dateiname angezeigt. Mehr passiert nicht. Und jetzt kommt als Nächstes eine Verbesserung an dem Dialog selber. Ich zeige Ihnen den nochmal eben. Also mit F5. Der hat erstens da oben ein einfaches "Öffnen" stehen und hier nur den Filter "Alle Dateien". Wenn ich jetzt abbreche, dann kann ich das hier in den Parametern verbessern. Ich kann jetzt zum Beispiel sagen, ich will gezielt alle Excel-Dateien auswählen. Also, schreibe sozusagen das freundliche Wort, was der Benutzer sieht. Komma und den Suchmechanismus, also "xls*". Sie können auch, wenn Sie nur die neueren Dateien sehen wollen, "xls?". Dann muss da ein Zeichen stehen. Und wenn Sie wollen, noch eine zweite Suchangabe, zum Beispiel "Word-Dateien". Das ist jetzt inhaltlich wenig sinnvoll, nur damit Sie deutlich sehen. Oder wir machen besser "Bilder". Und dann suche ich mal gezielt die GIFs oder, wenn Sie wollen, "Alle Dateien", Komma, Sternchen, Punkt, Sternchen. Es ist also immer abwechselnd, ein Klartext ist da, und ein kommaseparierter Filter, wieder ein Klartext, wieder ein Filter und so weiter abwechselnd. Damit klar ist, welche von denen ausgewählt werden soll, gibt es als zweites Argument "Filterindex". Der ist interessanterweise wieder eins-basiert. Ich möchte also die Excel-Dateien auswählen. Und einmal speichern und Kompiliercheck. Dann mit F5 sehen Sie hier den Unterschied, dass da jetzt drei Filter drin stehen. Es ist zwar ausgewählt, nur die Excel-Dateien. Ich kann auch alle Dateien anzeigen oder nur die Bilder nach Belieben. Und auch da, wenn ich einen auswähle, wird er nicht geöffnet, sondern der tut nur so. Und es gibt noch ein weiteres Argument. Sie können hier. Da mache ich jetzt mal Leerzeichen, Unterstrich, "Return", diesen Pseudo-Umbruch. Da können Sie noch einen Text angeben. Sie sehen das hier schon den "Title". Da dürfte dann sowas drin stehen wie "Bitte Datenquelle auswählen" oder was Sie gerne hätten. Wenn ich das nach dem Speichern mit F5 starte, steht das da oben drin. Es gibt noch ein weiteres Argument "ButtonText". Der würde diesen hier ändern. Aber, Sie sehen das hier, wenn ich jetzt mit dem Komma weitergehe. Das funktioniert nur auf dem Mac. Das heißt, ich kann das hier unter Windows nicht zeigen. Wenn Sie die Datei wirklich auswählen wollten und das wäre eine Excel-Datei, das sollte man erstmal prüfen, zum Beispiel mit "If varDatei". Da gibt es so einen Operator "like", sehr praktisch an der Stelle. "like *.xl", sagen wir ruhig Sternchen. Nur dann bin ich bereit, die Datei mit Excel-Methoden zu öffnen. Dann müssten Sie sowas schreiben wie "Workbooks.Open", aber ein "p" reicht, und geben jetzt hier "Cstr". Nein, Pfad haben wir gar nicht. Geben wir jetzt hier "varDatei" an und so weiter. Ich lasse es mal hier in der Kurzfassung. Das gilt nur dann, wenn Sie überhaupt eine Excel-Datei öffnen. Eine Text-Datei können Sie nicht mit "Workbooks.Open" öffnen. Und Sie ahnen jetzt schon, warum ich die Klammern gemacht habe. Eigentlich sollte man dann auch "Dim wbkDiese as Workbook" schreiben. Und deswegen hatte ich da nämlich die Klammern drin. Dann gehört sich es auch "Set wbkDiese =" zu schreiben, dass man auch drauf zugreifen kann, anschließend. Das aber eigentlich nur als zusätzliche Ergänzung. Ich mache hier mal mit einem Rechtsklick in die Symbolleiste die Bearbeiten-Symbolleiste an, weil ich die gerade brauche. Kann jetzt hier den ganzen Block kommentieren. Und auch das eigentlich, das war zusätzlich oben drauf. Das Wichtigste hier war dieses "GetOpenFilename", was den "Datei öffnen"-Dialog von Windows zeichnet, allen seinen Fähigkeiten und eben nichts anderes als entweder ein "false" oder den Dateinamen mit Pfad zurückgibt.

Excel 2016 VBA für Profis

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

5 Std. 52 min (55 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.01.2017

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!