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

Excel 2013 VBA für Profis

DateiÖffnen-Dialog anzeigen

Testen Sie unsere 2021 Kurse

10 Tage kostenlos!

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

Transkript

Wer es schafft, einen solchen Dialog anzuzeigen mit einer Auflistung von Dateien, deren Größe, deren Speicherdatum, hat bald das Gefühl, das ginge noch besser. Ich möchte zum Beispiel hier einbauen, dass ich in das nächsthöhere Verzeichnis wechseln kann, die ganzen Sachen sortieren, vielleicht das Laufwerk wechseln und Ähnliches. Und früher oder später sind Sie dabei, einen DateiÖffnen-Dialog nachzubauen. Da habe ich eine gute und eine schlechte Nachricht. Die schlechte Nachricht heißt, es ist verlorene Arbeit, weil die gute Nachricht heißt, das gibt es schon. Sowas von perfekt und zwar mit einer einzigen Zeile, dass dieses hier schon viel zu viel Mühe ist, wenn Sie nicht eine solche spartanische Liste genau auf Ihrem Formular haben wollen. Aber den DateiÖffnen-Dialog, den haben wir schon fertig, der ist nur leider, ich schließe das hier mal wieder, so gut versteckt, dass man ihn nicht von allein findet. Und zwar brauche ich dazu nicht nur ein Formular, sondern ein ganz banales Modul. Also ich mache das mal in einem neuen Modul. Und der Befehl ist so ein bisschen versteckt, also Sub DateiAuswaehlen ist mein Wunsch. Und der Befehl selber heißt GetOpenFilename. Anders als alle anderen Befehle erzwingt er die Nennung seines Elternobjektes. Sein Elternobjekt ist Application. Also Sie müssen mindestens Application schreiben. Und dann finden Sie GetOpenFilename. Die Parameter gucken wir uns gleich an. Es ist eine Funktion, keine Methode. Das heißt, sie will ihren Rückgabewert, nämlich den Namen der Datei loswerden. Ich brauche also noch eine Variable, und zwar nicht vom Datentyp String, denn diese Funktion gibt entweder einen Dateinamen, String, zurück oder ein False, das ist eine Boolean-Variable. Wir brauchen also ein Dim varDatei As Variant. As Variant könnte ich weglassen, wenn ich es drauf anlege. Aber damit man sieht, dass ich hier schon weiß, mit welchem Datentyp ich arbeite, habe ich es ausdrücklich dazugeschrieben. Und dann heißt es: varDatei= Application.GetOpenFilenname. Ich schreibe schonmal die Klammern, damit klar ist, dass es sich um eine Funktion handelt. Und vorübergehend schreibe ich in einer MsgBox einfach den Inhalt von varDatei raus. Das ist eigentlich alles, was Sie brauchen. Wenn ich das jetzt mit F5 starte, dann sehen Sie hier, es ist ein vollgültiger DateiÖffnen-Dialog. Der kann alles, der sieht aus wie das jeweils aktuelle Betriebssystem. Der kann alles, nur nicht Datei öffnen. Da steht zwar Datei "Öffnen" rum, aber der will nur spielen. Der tut nur so. Und selbst wenn Sie hier auf Öffnen klicken, passiert nichts anderes als den ausgewählten Dateinamen, wenn es denn einen gäbe; also da muss ich mir jetzt hier irgendwo mal was aussuchen. Ich wechsle mal in das Z-Laufwerk. Ich nehme mal diese beliebige Datei. Und wenn ich dann auf Öffnen gehe, dann passiert nichts anderes, als mir Pfad und Dateinamen in der Variablen zu überreichen. Oder wenn ich es nochmal aufrufe und auf Abbrechen gehe, entsprechend das "Falsch". Das ist eine Boolesche Variable, die als Text angezeigt wird. Das ist also der grundsätzliche Umgang. Deswegen kann ich hier einfach so schreiben: If varDatei=False Then, ein Else und ein End If. Und wenn es ein False ist, muss ich eigentlich nichts tun. Aber ich erwähne mal ausdrücklich: "Sie haben das DateiÖffnen abgebrochen." Andernfalls sage ich dann ausdrücklich: "Ausgewählte Datei:" Und weil das ein bisschen Platz brauchen wird, in die nächste Zeile, vb carriage return line feed, der Umbruch. Und da kommt dann varDatei hinein. Da wird im wirklichen Leben an dieser Stelle natürlich irgendwas stehen, und sei es nur, dass Sie die Datei auch wirklich öffnen. Aber vielleicht wollen Sie die Datei auch löschen, kopieren oder sonst was damit machen. Das würde jetzt so weit funktionieren. Nochmal mit F5 testen. Ich nehme wieder eine völlig beliebige Datei, gehe auf Öffnen und kriege jetzt hier diese Meldung. Da sollte ich vielleicht auch drauf achten, dass da oben anständig steht, wer die Meldung macht, also ein vbInformation und dahinter ein p_cstrAppName. Und das können wir da oben in der anderen MsgBox auch hinterlassen. Dann sieht es ein bisschen besser aus, weil da nicht Excel als Verursacher da steht, sondern diese Anwendung. Die GetOpenFilename-Methode hat allerdings noch ein paar mehr Fähigkeiten. Im Moment zeigt sie nämlich alle Dateien. Das möchte ich gar nicht unbedingt Ich möchte vielleicht nur Excel-Dateien anzeigen, und zwar mit dem Suchmuster *.xls?, also nur die modernen, nicht die mit der alten .xls-Endung, sondern nur .xlsm, .xlsc, .xlsx und ähnliche. Und wenn es denn sein muss, an zweiter Stelle: Alle Dateien,*.* Das ist also ein Filter, der immer abwechselnd aus einem Text und dem echten Filter besteht. Nächster Text, echter Filter. Und damit der erste von denen auch markiert ist, stelle ich diese FilterIndex-Eigenschaft auf 1. Na, gucken wir mal, was dabei rauskommt, immer nach dem Speichern. Mit F5 sehen Sie jetzt hier den von mir erfundenen Filter. Es werden nur noch .xls?-Dateien angezeigt, egal wo ich gerade bin. Den Filter kann ich umschalten. Das macht hier jetzt keinen großen Unterschied, weil das alles nur Excel-Dateien sind. Aber an dieser Stelle soll er vorkommen. Und der erste war auch schon ausgewählt. Und ich kann auch die Beschriftung verbessern. Ich zeige Ihnen den nochmal eben. Da oben steht "Öffnen". Wenn ich vielleicht ausdrücklich sagen möchte, bitte wählen Sie eine Datei aus, kann ich das als nächstes Argument übergeben. Also, ich mache es etwas kürzer: "Bitte Datei auswählen". Da könnte dann auch zum Beispiel stehen: "Bitte Datenbank nennen", "Bitte Textdatei importieren" oder "Textdatei zum Importieren auswählen". Also das dritte Argument. Mit F5 sehen Sie, dass jetzt da oben steht: "Bitte Datei auswählen." Es gibt noch ein weiteres Argument, mit dem man diese Schaltfläche ändern kann, funktioniert aber nur auf dem Mac. Deswegen kann ich das hier weglassen. Damit haben Sie eigentlich schon das Wesentliche gesehen. Die GetOpenFilename-Methode, Funktion müsste man besser sagen, nämlich mit Rückkabewert, die liefert einen Dateinamen und in der Optik sieht es genau aus wie der DateiÖffnen-Dialog, macht alles exakt wie der DateiÖffnen-Dialog, also auch Wechsel in andere Laufwerke. Nur öffnet nicht. Dafür sind Sie in VBA zuständig. Das einzige, was Sie erhalten, ist nicht eine Datei, sondern der Pfad und Dateiname, mit dem Sie dann in irgendeiner Form weiterarbeiten können und zum Beispiel auch beschließen, die ist nicht erlaubt, steht im falschen Pfad oder Ähnliches.

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!