Excel fernsteuern, Teil 2: Workbooks und -sheets

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Von Access aus können Sie andere Anwendungen per VBA fernsteuern, wenn diese Anwendung dies unterstützt. Das ist grundsätzlich bei den übrigen Office-Anwendungen wie Excel, Outlook, Word oder PowerPoint der Fall. In dieser Artikelserie schauen wir uns an, wie Sie eine Excel-Anwendung fernsteuern können und wie Sie Dokumente anlegen, Daten in eine Excel-Tabelle schreiben oder die Daten auslesen. Im vorliegenden zweiten Teil geht es um den Umgang mit Excel-Dateien, den sogenannten Workbooks, und den darin enthaltenen Tabellen, in der Excel-Welt auch Worksheets genannt.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1804_AccessUndExcelFernsteuernII.accdb.

Begriffsklärung

Normalerweise spricht man ja bei allem, was man in physischer Form im Dateisystem speichern kann, von Dateien oder Verzeichnissen. Unter Excel heißen diese Dateien genauer Workbooks. Jedes Workbook hat im unteren Bereich einige Registerreiter, über die Sie die einzelnen Tabellen eines Workbooks ansteuern können. Wir werden in dieser Artikelreihe die Begriffe Workbook und Worksheet verwenden.

Eine neues Workbook erstellen

Wenn Sie, wie im ersten Teil dieser Artikelreihe (Excel fernsteuern, Teil 1: Initialisierung) erläutert, eine neue Excel-Instanz erstellt haben, können Sie damit noch recht wenig anfangen. Sie benötigen ein Workbook, um etwas zu tun. Dieses können Sie entweder neu erstellen oder Sie öffnen ein bestehendes Workbook. Wir wollen uns zunächst ansehen, wir wir ein neues Workbook erstellen. Wir gehen davon aus, dass wir im gleichen oder in einem anderen Modul eine Objektvariable für Excel deklariert haben:

Public objExcel As Excel.Application

in einem neuen Standardmodul namens mdlWorkbooks legen wir dann die folgende Prozedur an:

Public Sub WorkbookErstellen()
    Dim objWorkbook As Excel.Workbook
    Set objExcel = New Excel.Application
    objExcel.Visible = True
    Set objWorkbook = objExcel.Workbooks.Add
End Sub

Diese deklariert zunächst eine Objektvariable für das neue Workbook. Danach erzeugen wir die Excel-Instanz und blenden diese durch Einstellen der Variablen Visible auf den Wert True ein. Schließlich folgt der entscheidende Schritt: Das Erstellen des neuen Workbooks durch die Methode Add der Workbooks-Auflistung des Excel.Application-Objekts. Dieses erscheint nun wie in Bild 1 mit einem ersten Worksheet namens Tabelle1, zu erkennen an der Registerkarte im unteren Bereich.

Excel mit einem neuen Workbook

Bild 1: Excel mit einem neuen Workbook

Workbook schließen

Bevor wir uns weitere Möglichkeiten ansehen, schließen wir das Workbook erst einmal wieder per VBA-Code. Das erledigen wir mit der Close-Methode des Workbooks aus objWorkbook:

objWorkbook.Close

Dies schließt das Workbook wieder, bevor wie es beispielsweise in Form einer Datei auf der Festplatte gespeichert haben.

Workbook speichern

Wenn Sie ein Workbook erstellen, wollen Sie es in den meisten Fällen vermutlich auch speichern. Das können Sie beispielsweise erledigen, wenn Sie das Workbook schließen. Das Schließen erfolgt über die Close-Methode. Diese bietet ein paar Parameter an, mit denen Sie festlegen können, ob eventuelle änderungen gespeichert werden sollen:

  • SaveChanges: Der Wert True gibt an, dass das Workbook beim Schließen gespeichert werden soll, wenn ungespeicherte änderungen vorliegen.
  • Filename: Gibt den Dateinamen an, unter dem das Workbook gespeichert werden soll.

Ein Beispiel für den Aufruf der Close-Methode sieht nun wie folgt aus:

objWorkbook.Close True, CurrentProject.Path                                       & "\Beispiel.xlsx"

Fügen wir diesen Befehl in die obigen Methode ein, in der wir eine neue Excel-Instanz erstellt und ein Workbook erzeugt haben, finden wir nach der Ausführung allerdings keine neue Datei mit der Dateiendung .xlsx im Verzeichnis der Datenbank vor. Der Grund ist einfach: Wir haben zwar ein Workbook hinzufügt, dieses aber vor dem Schließen nicht geändert. Deshalb wird es beim Schließen auch nicht gespeichert. Dies ändern wir, indem wir ein wenig vorgreifen und die Zelle A1 mit einem Beispieltext füllen, bevor wir die Datei schließen:

Public Sub WorkbookSchliessenSpeichern()
    Dim objWorkbook As Excel.Workbook
    Set objExcel = New Excel.Application
    objExcel.Visible = True
    Set objWorkbook = objExcel.Workbooks.Add
    objWorkbook.Sheets(1).Range("A1") = "Beispieltext"
    objWorkbook.Close True, CurrentProject.Path                                       & "\Beispiel.xlsx"
    objExcel.Quit
    Set objExcel = Nothing
End Sub

Damit landet nun eine Datei namens Beispiel.xlsx in unserem Datenbankverzeichnis. Sollten Sie diese Prozedur erneut aufrufen, fragt Access, ob die vorhandene Datei gleichen Namens überschrieben werden soll.

Es gibt noch weitere Befehle zum Speichern des Workbooks, die ohne das Schließen des Workbooks aufgerufen werden können. Vor allem jedoch speichern diese das Workbook auch dann, wenn Sie noch keine änderungen vorgenommen haben:

  • Save: Speichert das Workbook unter dem Namen, unter dem es bereits zuvor gespeichert wurde oder unter dem Namen Mappe1.xlsx.
  • SaveAs: Speichert das Workbook unter dem als Parameter angegebenen Namen. Diese Anweisung bietet allerdings noch viele weitere Parameter, etwa zum Festlegen des Dateiformats.

Für den Parameter zur Angabe des Dateiformats verwenden Sie etwa die folgenden Werte:

  • xlExcel8: Excel-Workbook im Format von Excel 97-2003
  • xlExcel12: Excel-Workbook (binär) im Format von Excel 2007-2013
  • xlOpenXMLWorkbook: Excel-Workbook (XML) im Format von Excel 2007-2016
  • xlOpenXMLWorkbookMacroEnabled: Excel-Workbook (XML) mit Makros im Format von Excel 2007-2016

Zu beachten ist hier, dass Sie jeweils die passende Dateiendung zur Excel-Version angeben sollten, also .xls für Dateien bis Excel 2003 und .xlsx für Dateien ab Excel 2007.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar