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

Excel 2013 VBA für Profis

Dateien öffnen und speichern

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Mittels VBA lassen sich selbstverständlich auch Excel-Dateien öffnen, speichern oder neu anlegen.

Transkript

GetOpenFilename- beziehungsweise GetSaveAsFilename-Methoden speichern Dateien nicht wirklich. Das müssen Sie schon selber machen. Deswegen würde ich Ihnen ganz gern an dieser Stelle auch diesen Befehl überhaupt erstmal zeigen. Die braucht man gar nicht so häufig, wie man erstmal denkt, weil typischerweise ein Benutzer eine Datei öffnet und dann etwas damit macht. Aber wenn Sie selber eine Datei öffnen müssen und es ist keine Textdatei, die Sie mit den Open-For-Output-, Open-For-Input-Befehlen, dann brauchen Sie eben die Excel-eigenen Befehle. Also zum Beispiel für Sub DateiNeu. Um eine ganz neue leere Datei anzulegen, also nicht wirklich eine zu öffnen; für den Benutzer fühlt sich das gleich an, der hat eine Datei auf dem Bildschirm; brauchen Sie zuerst die Auflistung der Workbooks. Die Sammlung aller Workbooks, sprich der geöffneten Dateien; selbst wenn gar keine geöffnet ist, gibt es diese Auflistung; kennt eine Methode Add, mach eine neue Datei dazu. Das entspricht dem Befehl DateiNeu, auch wenn der Name von dieser Funktion nicht "Neu" oder "New" oder sowas heißt. Und eigentlich reicht Workbooks.Add. Sie können das einmal kurz gucken, mit Alt+F11. Sie sehen, es ist zurzeit die Makrodatei offen, in der ich programmiere. Die ich sicherheitshalber jetzt nochmal speichere. Und wenn ich einmal F5 drücke und nachgucke, dann ist jetzt eine Mappe1, eine ungespeicherte neue Datei offen, die ich auch direkt wieder schließe. Also der Workbooks.Add-Befehl öffnet eine neue Datei. "Öffnet" ist da nicht ganz richtig. Intern wird zwar eine Vorlage map.xlst benutzt, geöffnet und wieder auf ungespeichert gestellt, aber für den Benutzer fühlt es sich wie eine neue Datei an. Wenn Sie mit dieser Datei weiterarbeiten wollen, dann sollten Sie auch dafür sorgen, dass Sie nicht raten, dass es sich jetzt zufällig um ActiveWorkbook handelt, das tut es normalerweise, sondern das in einer eigenen Variablen hinterlegen, also Dim wbk, eine Workbook-Variable. Ich nenne die mal einfach Neu. As Workbook. Und dann schreiben Sie hier: Set wbkNeu =. und ich mache dann immer anständigerweise Klammern dahinter, damit Sie sehen, es ist ein Rückgabewert, es ähnelt einer Funktion. Jetzt kann ich anschließend Bescheid sagen zum Beispiel der Name wbkNeu.Name verkettet mit " ist neu angelegt worden." oder irgendwie so eine Meldung. Machen wir es korrekt mit vbInformation und pc_, wer es verursacht hat. Und wenn ich jetzt den gleichen Code laufen lasse, ist es natürlich nicht mehr Mappe1, die hatten wir eben schon, sondern, mit F5 sehen Sie, Mappe2. Das ist die, die offen ist. Mit dieser Variablen kann ich jetzt auf diese Arbeitsmappe zugreifen, obwohl ich deren Namen nicht weiß und dieser möglicherweise durch Benutzeraktionen, durch Speichern oder so auch noch verändert wird. Und wenn der Benutzer von mir die Erlaubnis hat, zwischendurch auch mal das Fenster zu wechseln und dann wieder mein Makro aufgerufen wird, dann weiß ich schon gar nicht mehr, welche Datei das ist. Er könnte sie gelöscht, umbenannt oder sonst wie bearbeitet haben. Also von daher sollten Sie rechtzeitig, nämlich mit Workbooks.Add sich den Inhalt oder, besser gesagt, das Objekt dieser Arbeitsmappe merken. Das gilt für das Öffnen genauso, aber da ist die Wahrscheinlichkeit, dass der Benutzer den Namen ändert, eher gering. Also: Sub DateiOeffnen. Und auch das mache ich jetzt mal, ohne das in einer Variablen zu hinterlegen. Es ist eine Workbooks-Auflistung, die ein Open benutzt Und zwar ohne Angabe. Mit OpenDatabase zum Beispiel können Sie Datenbanken, spezielle Formate öffnen. OpenText, das ist der Textimport-Assistent. Also wir brauchen das normale Open. Und da sind Sie natürlich zwingend im ersten Parameter dabei, den Dateinamen und den Pfad zu nennen. Ich habe schonmal eine vorbereitet, die also im gleichen Pfad liegt. Das bedeutet in: ThisWorkbood.Path &"\ Und dann habe ich die entsprechend Z&T_Test.xlsx genannt. Die enthält nichts mehr außer einer kleinen Notiz, dass es jetzt eine neue Datei ist. Auch da könnten Sie hier Klammern setzen und das einer Variablen zuweisen. Das spare ich mir jetzt mal. Das Ganze speichern. Sie sehen im Moment, es ist noch die Mappe2. Die brauchen wir nicht geöffnet, aber jetzt unsere Makrodatei. Und wenn ich das jetzt mit F5 laufen lasse, dann sehen Sie, es ist diese Datei geöffnet und da stand nur dieser Text schon drin. Auch das funktioniert also. Da gibt es noch eine kleine Verbesserung. Und zwar gibt es, wenn ich jetzt nochmal ein Komma setze, erscheint ja das Quickinfo mit den Parametern. Da gibt es verschiedene Parameter, die ganz praktisch sind. UpdateLinks prüft zum Beispiel, ob Vernüpfungen, wenn sie denn drin enthalten wären, auf andere Dateien aktualisiert werden wollen. True/False. Oder nächster, mit einem Komma: ReadOnly, ob Sie diese Datei vielleicht schreibgeschützt öffnen. Viel wichtiger ist mir der Parameter, der da ganz hinten auftaucht. Da muss ich jetzt also einige Kommata setzen, bis das fett wird. Der da, AddToMru. Heißt ausführlich: Mru, "most recently used". Also die "zuletzt benutzten" müsste man im Deutschen sagen. Das ist die Liste, die im Dateimenü oder im Ribbon, je nachdem, geführt wird, die sagt, welche Dateien Sie zuletzt geöffnet hatten. Und wenn Sie in einem Makro 20 Excel-Dateien hilfsweise öffnen, um da kurz was nachzugucken, dann zerstören Sie für den Benutzer seine Liste der zuletzt geöffneten Dateien, weil dann Ihre 20 da drinstehen. Deswegen setzt ich diesen Parameter bei, ich sage mal, intern geöffneten, durch VBA geöffneten Dateien gern auf False. Dann sieht er gar nicht, was ich zwischendurch alles geöffnet habe. Möchte der auch gar nicht sehen und schon gar nicht möchte er seine zuletzt benutzte Dateienliste, "most recently used", verlieren. Den Unterschied werden Sie jetzt nicht sehen, weil ich sie eben schonmal geöffnet hatte, aber kann ich empfehlen, diese Mru-Liste nicht zu überschreiben, mit dem False. Und dann bleibt noch das dritte übrig. Das haben Sie da oben aber im Grunde schon gesehen: Sub DateiSpeichernAls. Das ist nicht die Workbooks-Auflistung. Die brauchen Sie, wenn Sie eine neue Datei anlegen wollen oder eine Datei öffnen. Dann werden jeweils Objekte dieser Auflistung hinzugefügt. Jetzt geht es um ein konkretes einzelnes Objekt, zum Beispiel ActiveWorkbook. Das ist die Datei, die der Benutzer sieht. Und die kennt ein SaveAs, oder wenn Sie irgendwas anderes damit machen wollen, sogar eine SaveCopyAs, um die offene Datei für den Benutzer zu retten. Aber im Normalfall ein SaveAs und auch da müssen Sie natürlich irgendwas angeben, zum Beispiel das Workbook.Path & "\, und dann, ich schreibe mal einfach einen fiktiven Dateinamen, nur dass es der Vollständigkeit halber drin ist. Sie haben schon gesehen, besser ist es, vorher mit dem GetSaveAsFilename überhaupt mit den Dateinamen zu reden, wenn der Benutzer damit reden darf, und diesen zu übernehmen. Dieses ist die Variante, wo Sie sagen, ich weiß, wie die Datei heißt, der Benutzer redet mir bitte nicht rein, oder schreibt mir dazwischen, und ich will sie jetzt von VBA aus speichern.

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!