Beitrag aus SmartTools Access Weekly
Excel-Tabelle per VBA ansteuern
Access 365 2024 2021 2019 2016 2013 2010
FRAGE Ich nutze Office Automation für den Export von Daten nach Excel. Bei der Ausgabe in eine Arbeitsmappe wird per "ActiveSheet" immer "Tabelle1" adressiert. Ich möchte aber ein bestimmtes Tabellenblatt wählen. Welche Anweisungen wären dazu nötig? Bei einigen meiner Excel-User wird Excel ohne Standardtabellen, also quasi "leer" geöffnet. Wie kann ich das erkennen und in solchen Fällen ein Tabellenblatt anlegen und benennen?
Diverse Anfragen
ANTWORT Für den Zugriff auf ein bestimmtes Tabellenblatt ändern Sie zu die Anweisung von zum Beispiel
Set objWS = objWB.ActiveSheet
in
Set objWS = objWB.Sheets("NameDesTabellenblattes")
In der Auflistung "Workbook.Sheets" verwaltet Excel alle Tabellenblätter. Ein Zugriff auf ein bestimmtes Tabellenblatt ist entweder über einen numerischen Index von "1" bis "Sheets.Count" oder den Namen des Tabellenblattes wie oben gezeigt möglich.
Um festzustellen, ob ein verwendbares Tabellenblatt vorliegt, nutzen Sie folgende Abfrage:
'Arbeitsmappe vorhanden?
If objExcel.Worksbook.Count = 0 Then 'Nein
'Neue Arbeitsmappe anlegen
Set objWB = objExcel.Workbooks.Add()
End if
'Tabellenblatt in Arbeitsmappe vorhanden?
If objExcel.ActiveWorkbook.Sheets.Count = 0 Then 'Nein
'Neues Tabellenblatt anlegen
Set objWS = objWB.Sheets.Add
objWS.Name = "NameDesTabellenblattes"
End If
Über "Workbook.Count" können Sie feststellen, ob eine Arbeitsmappe geöffnet ist und bei Bedarf mit "Workbooks.Add" eine leere Arbeitsmappe öffnen, die dann als "ActiveWorkbook" gesetzt ist. Ob die aktuelle Arbeitsmappe Tabellenblätter enthält, erfahren Sie über "ActiveWorkbook.Sheets.Count" und können bei "0" mit "Sheets.Add" ein Tabellenblatt hinzufügen und es per Zuweisung "Name = ..." wie gewünscht benennen.