Excel 2013 VBA Grundkurs

Datei öffnen

Testen Sie unsere 1958 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Beim Öffnen einer Excel-Datei sorgt guter VBA-Code nicht nur für das reine Öffnen, sondern kümmert sich auch um die vernünftige Benutzerführung.

Transkript

Ich möchte mich gerne noch einmal mit dem Datei-Öffnen beschäftigen. Natürlich habe ich Ihnen schon den Befehl Workbooks.Open gezeigt, aber das ist nicht alles. Wenn man gut programmiert, heißt das, dass es auch eine runde Programmierung wird. Das ist - Fehler bemerkt, das ist - Lästigkeiten abschaltet und ähnliches. Deswegen soll es jetzt ein bisschen konkreter, ein bisschen besser werden. Also, nochmal eine neue Sub DateiOeffnen. Ich darf nochmal daran erinnern: keine Umlaute, wenn Sie sich Ärger ersparen wollen, also deswegen Oeffnen. Und die zu öffnende Datei wird natürlich in einer Workbook-Variablen gespeichert. Also, Dim wbkDatei As Workbook. Und damit ich mit GetOpenFilename arbeiten kann, brauche ich auch eine Variable, in der das zwischengespeichert wird. Im Normalfall wird dort ein Dateiname zwischengespeichert. Aber im nicht Normalfall, wenn Sie nämlich abbrechen, wird dort ein False zurückgegeben. Und deswegen muss das ein var, ein Variant werden, As Variant schreibe ich mal deutlich dazu. Also, varDatei und nicht, wie ich das sonst schon mal benutze mit strDatei, weil beim Abbruchfall von GetOpenFilename ein Variant False, ein Boolean, nämlich zurückkommt. Boolean ist diese Ja-Nein-Entscheidung. Also, varDatei ist gleich Application. Sie erinnern sich, Punkt GetOpenFilename, da muss das Application davor stehen. Und beim ersten Mal habe ich das so aufgerufen. Klappt, ist nett, aber da steckt viel mehr drin: z.B. ein Filter. Ich mache nochmal die Klammern neu, dann sehen Sie ganz deutlich. Das erste Argument ist FileFilter und dazu gehört auch ein FilterIndex. Der Filter ist, wenn wir es positiv formulieren, in einer Zeichenkette. Es gibt auch Varianten in einer anderen Programmiersprache, wo Sie dann mit Arrays oder so arbeiten müssen. Aber es ist ein bisschen gewöhnungsbedürftig, nämlich Sie müssen zuerst schreiben, was als Text im Filter erscheinen soll. Sagen wir, sowas. Dann kommt ein Komma, und jetzt kommt sozusagen der versteckte Teil, der "echte" Filter. Der ist typischerweise mit dem identisch, was Sie in Klammern schreiben. Komma, dann kommt der nächste Filter wieder mit seinem sichtbaren Anteil. Also, sagen wir "Excel-Dateien", das sind alle, die .xls heißen. Komma, wieder der verdeckte Teil, .xls. Das ist ein zweiteiliger Filter. Erster sichtbarer Teil, erster Filter-Teil, zweiter sichtbarer Teil, zweiter Filter-Teil. Den lasse ich erstmal so, so zum Testen. Und Sie sehen, es steht noch kein Öffnen dahinter. Das heißt, ich kann das nach dem Speichern einfach ausführen. Sie sehen einen tollen Dialog, aber der tut nichts. Also, mit F5, da ist der Dialog und hier sind die beiden Filter. Wenn man nichts Gegenteiliges sagt, ist der erste Filter aktiv, nämlich "Alle Dateien". Das will ich aber nicht. Aber Sie können schon mal gucken. Dann müssten wir allerdings irgendwohin gehen, wo auch beliebige andere Dateien stehen. Sagen wir mal, auf C:Programme. Es werden im Moment noch alle Dateien angezeigt, hier. Und wenn ich jetzt auf diesen Filter wechsle, werden die entsprechend weggefiltert. Hier ist also keine mehr übrig, weil da zufällig keine Excel-Datei drinstand. Hier ist aber weiterhin an Excel-Dateien sichtbar. Also, es funktioniert alles, aber schöner wäre, wenn der Excel-Filter gleich aktiv ist. Ich breche hier ab und stelle deswegen das zweite Argument auf 2. Nachdem ich nun so oft gesagt habe, dass alle möglichen Sachen Null-basiert sind, der Filter hier nicht. Der erste Filter - die 1, der zweite Filter hat die 2. Wenn ich das jetzt erneut starte, dann sehen Sie tatsächlich, es ist sofort der zweite Filter aktiv. Da können Sie mehrere Filter einbauen, aber das soll hier erstmal reichen. Dann möchte ich die Überschrift besser wählen. Ich zeige im Moment nochmal wie es aussieht mit F5. Da steht oben jetzt einfach "Öffnen" drüber. Es könnte ja z.B. sein, dass Sie nur eine Datei auswählen sollen. Deswegen werde ich hier als nächstes Argument, das ist Titel, mal "Excel-Datei auswählen" drüberschreiben. Und mit F5 direkt testen. Dann sehen Sie jetzt "Excel-Datei auswählen". Passiert nach wie vor nichts. Jetzt habe ich ein Platzproblem. Sie erinnern sich: Leerzeichen, Unterstrich, Return und aus optischen Gründen hier eingerückt. Das ist immer noch eine Zeile. Als nächstes wird angeboten, nach dem Komma, ein Argument ButtonText. Das werde ich mal (da steht normalerweise "Öffnen" drin) mit "Auswählen" beschriften. Und wie Sie sehen, sehen Sie nichts. Das überrascht erstmal, das funktioniert nämlich nur auf dem Macintosh, dies ist ein Windows. Das heißt, nett gemeint, klappt aber sowieso nicht, kann man weglassen. Aber dahinter das Argument, das ist wieder wichtig. MultiSelect erlaubt nämlich grundsätzlich, dass man in diesem Datei-Auswahl-Dialog mehrere Dateien gleichzeitig auswählen könnte. Das will ich gar nicht haben. Also, sicherheitshalber auf False, es darf nur eine ausgewählt werden. Das reicht jetzt erstmal. GetOpenFilename ist soweit richtig. Jetzt muss ich auswerten, ob jemand denn abgebrochen hat. Und das geschieht über If varDatei gleich False. Ich schreibe schon mal den kompletten Rumpf für das If. Wenn es False ist, dann hat jemand abgebrochen. Das werde ich im Moment einfach erstmal melden: "Das Datei-Öffnen wurde abgebrochen". Und das kommt mit einem vbInformation daher, Komma. Und dann kommt wieder meine Konstante für die MessageBox, damit man auch sieht, wer es meldet. Und erst im anderen Fall, wenn das also wirklich durchgekommen ist sozusagen, dann setze ich wbkDatei auf Workbooks.Open und gebe jetzt varDatei an. Jetzt steht da nämlich auch eine Zeichenkette drin. Und mit Klammer zu - bin erstmal soweit fertig. Das Ganze gespeichert. Dann gucken wir mal, ob es funktioniert. Mit F5 ausgewählt. Ich gebe meine "Beispieldatei" an und mit Öffnen wird sie auch geöffnet. Mit Alt + F11 kann man sehen: hier ist sie geöffnet. Allerdings gibt es hier auch einen kleinen Nachteil. Der fällt Ihnen wahrscheinlich so schnell gar nicht auf, aber einem Benutzer. Denn jede geöffnete Datei landet in der Liste der zuletzt verwendeten Dateien. Schauen Sie mal hier: unter DateiÖffnen gibt es hier Zuletzt verwendete Arbeitsmappen und da steht sie. Jetzt stellen Sie sich vor, Ihr Makro macht da 20-30 Dateien auf. Dann findet der Benutzer erstmal 20-30 Dateien, die ihm so erstmal nichts sagen vielleicht, und noch viel schlimmer: seine eigenen Dateien verdrängen. Wenn er die nicht rechtzeitig mit diesem Pin hier gesichert hat. Da können Sie sich sehr unbeliebt machen. Ich werde das also hier aus der Liste wieder entfernen, per Rechtsklick können wir das machen. Und wieder zurück gehen und diese Datei auch schließen. Denn es gibt ein Parameter, der verhindert, dass das da oben erscheint. Der ist ziemlich weit hinten. Wenn ich jetzt mit Komma durchwandere, ist immer der aktuelle Parameter - derjenige, der fett ist. Und zu dem hier will ich. Ziemlich weit hinten. AddToMru heißt Most Recently Used, die zuletzt verwendeten Dateien. Und wenn ich den auf False setze, wird er dort nicht angezeigt. Das heißt, ich kann ihn sozusagen heimlich öffnen, ich müsste es dem Benutzer nicht mal zeigen, irgendwas auslesen, reinschreiben oder sonst wie, wieder schließen und der muss sich nicht ärgern. Das würde ich also mal dringend empfehlen. Einmal speichern und testen. Also, wie immer mit F5, ich wähle wieder die "Beispieldatei", öffne die. Und mit Alt + F11 kann ich sie in Excel direkt wieder schließen. Also, Strg + F4, wenn Sie das gerne mit Tastenkürzel machen. Und jetzt gucke ich mal nach, was bei DateiÖffnenZuletzt verwendete Arbeitsmappen steht - keine "Beispieldatei" mehr. Das erspart Ihnen also, man muss es so sagen Gemecker vom Kunden, der sagt: "Warum hat mir hier jemand ganz viele Dateien reingeschrieben, die ich nicht kenne?" AddToMru finde ich sehr angenehm, auch wenn das sehr weit hinten steht. Ansonsten ging es mir hier vor allem darum, dass Sie mal sehen, wie man wirklich eine Datei öffnet. Jetzt, zu diesem Zeitpunkt, habe ich wirklich eine ehrliche Datei offen, die ist geprüft. Es gibt sie, sonst hätten Sie die mit GetOpenFilename nicht gekriegt. Der Benutzer hat es nicht abgebrochen, er konnte es schön auswählen und jetzt könnte es weiter gehen mit der inhaltlichen Arbeit.

Excel 2013 VBA Grundkurs

Holen Sie aus Excel 2013 mit der integrierten Programmiersprache VBA auch das letzte Quäntchen an Funktion heraus und lassen Sie sich dazu zeigen, was alles möglich ist.

6 Std. 18 min (63 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!