Office Logo VBA  Zurück zur Hauptseite

Excel-Objektmodell

       Allgemeines über das Excel-Objektmodell

       Übersicht über das Excel-Objektmodell

          Application-Objekt

             Eigenschaften

             Methoden

             Ereignisse

          Workbook-Objekt

             Eigenschaften

             Methoden

             Ereignisse

          Workbooks-Auflistung

             Methoden

          Worksheet-Objekt

             Methoden

          Worksheets-Auflistung

             Methoden

          Chart-Objekt

             Methoden

          Charts-Auflistung

             Methoden

          Window-Objekt

             Methoden

          Shapes-Auflistung

             Methoden

 

       Zur Hauptseite

To Top

Allgemeines über das Excel-Objektmodell

Das Excel-Objektmodell verfügt über zahlreiche Objekte, Eigenschaften, Methoden und Ereignisse, die im Zusammenhang mit Dateien und Ordnern verwendet werden. Wenn Sie ein VBA-Programm schreiben, welches später in verschiedenen Excel-Versionen ablaufen muss, sollten Sie insbesondere die geänderten Parameter der Workbooks.Open- und der Workbooks.OpenText-Methode beachten.

Weitere Objekte, Eigenschaften und Methoden von Excel sowie VBA-Befehle und -Funktionen werden auf diesen Themenseiten ausführlich beschrieben:

Verwandte Themen

Verwandte Themen

VBA-Spezialthema: Freigegebene Arbeitsmappen

VBA-Spezialthema: Dateikennwörter

VBA-Befehle und -Funktionen

Excel-interne Prozesse

Hinweis
Microsoft hat im Internet eine Vielzahl äusserst nützlicher Dokumentationen zu den Objektmodellen der Office-Programme veröffentlicht. Wenn eine VBA-Anwendung mit verschiedenen Excel- bzw. Office-Versionen laufen muss, sollte man die Änderungen in den benötigten Objektbibliotheken kennen, damit keine Kompatibilitätsprobleme auftreten. Eine Liste mit Links zu den Beschreibungen dieser Objektmodell-Änderungen finden Sie hier: Office, Excel, Word, Access, Outlook und PowerPoint.

Informationen über Objektmodelle

Guides and Overviews

Office 2000 Object Models (Microsoft TechNet)

Office Object Model Guide (Microsoft MSDN)

MS Office 2000 Object Model

MS Office XP Object Model

VBA Editor 6 Object Model

 

Changes in Office

Office XP -> Office 2000

Office 2000 -> Office 97

 

Changes in Excel

Excel 2002 -> Excel 2000

Excel 2000 -> Excel 97

 

Changes in Word

Word 2002 -> Word 2000

Word 2000 -> Word 97

Word 97 -> Word Basic

 

Changes in Access

Access 2002 -> Access 2000

Access 2000 -> Access 97

 

Changes in Outlook

Outlook 2002 -> Outlook 2000

Outlook 2000 (98) -> Outlook 97

 

Changes in PowerPoint

PowerPoint 2002 -> PowerPoint 2000

PowerPoint 2000 -> PowerPoint 97

To Top

 


Übersicht über das Excel-Objektmodell

Nachfolgend sind die wichtigsten Objekte, Methoden, Eigenschaften und Ereignisse des Excel-Objektmodells aufgelistet, die in VBA-Programmen im Zusammenhang mit Dateien, Verzeichnissen und Programmen verwendet werden. Die Elemente sind innerhalb der Tabellen alphabetisch aufsteigend sortiert.

Application-Objekt

Application-Objekt: Eigenschaften

Eigenschaft Beschreibung Beispiel
Application.StartupPath Enthält den Verzeichnispfad des Excel-Startordners "XlStart".
> Lese-Zugriff

Hinweis
Microsoft Excel kann bis zu vier verschiedene Startordner gleichzeitig verwenden, wobei alle den Namen "XlStart" besitzen, jedoch an unterschiedlichen Orten liegen. Beim Programmstart greift Excel nacheinander auf diese Ordner zu (sofern vorhanden) und öffnet die enthaltenen Dateien. StartupPath gibt nur den Haupt-Startordner zurück.

Siehe auch unter Funktionen und Features: Startordner.

D:\Programme\Microsoft Office\Office\XLStart
Application.AltStartupPath Enthält den Pfad des zusätzlichen Startordners von Excel.
> Schreib-Lese-Zugriff

Siehe auch unter Funktionen und Features: Zusätzlicher Startordner.

S:\Gemeinsame Daten\Excel\Start
Application.Caller Gibt Informationen darüber zurück, wie Visual Basic aufgerufen wurde. Bei Verwendung von Application.Caller in einem Auto_Open- oder Auto_Close-Makro wird der Name der Datei und der aktiven Tabelle zurückgegeben.
> Lese-Zugriff
[MeineMappe.xls]Tabelle1
Application.DefaultFilePath Enthält den Pfad des Standardarbeitsordners.
> Schreib-Lese-Zugriff

Hinweis
Der enthaltene Pfad besitzt nie ein Backslash (\) als letztes Zeichen. Wenn Sie der Eigenschaft einen Pfad zuweisen, der am Schluss ein '\'-Zeichen enthält, wird dieses Zeichen von Excel automatisch entfernt.

Beachten Sie, dass DefaultFilePath auch leer sein kann. Wenn Sie dann beispielsweise eine Mappe im DefaultFilePath-Verzeichnis speichern, wird automatisch das aktuelle Windows-Verzeichnis (CurDir) verwendet.

Wenn ein nicht existierender bzw. ungültiger Ordnerpfad zugewiesen wird, so wird dieser ohne Fehlermeldung entgegengenommen und in der Windows Registry gespeichert. Beim nächsten Excelstart wird der Standardarbeitsordner automatisch auf den "Eigene Dateien"-Ordner geändert.

D:\MeineDaten
Application.DefaultSaveFormat Enthält das als Standard im Speichern unter-Dialog vorzublendende Dateiformat.
> Schreib-Lese-Zugriff

Hinweis
Das FileFormat-Argument der Workbook.SaveAs-Methode ignoriert das mit DefaultSaveFormat eingestellte Standardformat.

Siehe Anmerkung [WB-P5] "Workbook.FileFormat"

-4143 (xlWorkbookNormal)
Application.FileConverters([Index1][, Index2]) Gibt Informationen über alle installierten Dateiumwandlungsprogramme zurück. Gibt Null zurück, wenn keine Umwandlungsprogramme installiert sind.
> Lese-Zugriff
-
Application.FileSearch Gibt ein FileSearch-Objekt zur Durchführung einer Dateisuche zurück.
> Lese-Zugriff

Hinweis
Das zurückgegebene FileSearch-Objekt ist eine Instanz der FileSearch-Klasse aus der Microsoft Office-Bibliothek.

With Application.FileSearch
.LookIn = "C:\MeineDaten"
.FileType = msoFileTypeExcelWorkbooks
.Execute
End With
Application.LibraryPath Enthält den Pfad des Add-Ins-Verzeichnisses.
> Lese-Zugriff
D:\Programme\Microsoft Office\Office\Makro
Application.NetworkTemplatesPath Gibt den Pfad des Netzwerkpfades zurück, unter dem die gemeinsam verwendeten Vorlagen gespeichert sind.
> Lese-Zugriff
Z:\Vorlagen\Excel
Application.Path Enthält den Pfad des Excel-Programmes.
> Schreib-Lese-Zugriff
D:\Programme\Microsoft Office\Office
Application.PathSeparator Gibt in Windows das Pfadtrennzeichen "\" (umgekehrter Schrägstrich) zurück.
> Lese-Zugriff
\
Application.RecentFiles Gibt ein RecentFiles-Auflistungsobjekt zurück.
> Lese-Zugriff

Hinweis
Das RecentFiles-Objekt verhält sich nicht immer so, wie man es erwarten würde. Wie dieses Objekt in der Praxis verwendet wird, erfahren Sie im VBA-Codebeispiel: Zuletzt verwendete Arbeitsmappe öffnen.

Dim objRFiles As RecentFiles
Set objRFiles = Application.RecentFiles
MsgBox objRFiles(1).Name
MsgBox objRFiles(2).Path

VBA Codebeispiel

Application.TemplatesPath Enthält den Pfad des Vorlagenverzeichnisses.
> Lese-Zugriff

Hinweis
Backslash am Schluss!

D:\Programme\Microsoft Office\Vorlagen
Application.UserControl Enthält den aktuellen Ausführungsmodus der Excel-Instanz. Enthält "True", wenn die Excel-Instanz sichtbar ist oder vom Benutzer erstellt oder gestartet wurde. Enthält "False, wenn Excel als Instanz durch die VBA-Funktionen CreateObject oder GetObject gestartet wurde und ausgeblendet ist.
> Schreib-Lese-Zugriff
True

To Top

 

Application-Objekt: Methoden

Methode Beschreibung Beispiel
Application.ActivateMicrosoftApp(Index As XlMSApplication) Startet eine Microsoft-Anwendung synchron und aktiviert sie.

Hinweis
Eine umfassende Dokumentation und die Beschreibung aller Geheimnisse von ActivateMicrosoftApp finden Sie unter The eXpLorer: Tastenfolgen senden.

-
Application.FindFile Öffnet den "Datei öffnen"-Dialog. VBA Codebeispiel
Application.GetOpenFilename([FileFilter], [FilterIndex], [Title], [ButtonText], [MultiSelect]) Öffnet den "Datei öffnen"-Dialog.

Hinweis
In der VBA-Referenz steht geschrieben, dass bei Klicken der Abbrechen-Schaltfläche False zurückgegeben wird. Diese Aussage ist nicht ganz korrekt. Wenn man den von GetOpenFilename zurückgegebenen Wert einer String-Variable zuweist oder GetOpenFilename zusammen mit Open (von Workbooks) verwendet, erhält man nicht False sondern "Falsch" bzw. "Falsch.xls".

VBA Codebeispiel
Application.GetSaveAsFilename([InitialFilename], [FileFilter], [FilterIndex], [Title], [ButtonText]) Öffnet den "Datei speichern unter"-Dialog. -
Application.Help([HelpFile], [HelpContextID]) - -
Application.Quit Beendet Microsoft Excel.

Siehe Anmerkung [AP-M3]

VBA Codebeispiel
Application.RegisterXLL(Filename As String) As Boolean - -
Application.Run(Macro[, Arg1[, Arg2[, ...]]]) Führt ein Makro aus oder ruft eine Funktion auf.

Siehe Anmerkung [AP-M2]

-
Application.Save(Filename) Speichert den aktuellen Arbeitsbereich in einer Arbeitsbereichdatei.

Siehe Anmerkung [AP-M1]

-
Application.SaveWorkspace([Filename]) Speichert den aktuellen Arbeitsbereich in einer Arbeitsbereichdatei.

Siehe Anmerkung [AP-M1]

-

[AP-M1] Application.Save
Die Save-Methode wurde durch die SaveWorkspace-Methode ersetzt (ab Excel 97) und sollte daher nicht mehr verwendet werden.

[AP-M2] Application.Run
Die Run-Methode besitzt in Excel 97 einen schwerwiegenden Fehler. Wenn man Run ohne Angabe eines Makronamens ausführt, stürzt Excel sofort und unwiderruflich ab. Sie können das ausprobieren, indem Sie im Direktfenster der VBE "Run" oder "Application.Run" eingeben und durch Drücken der Eingabetaste ausführen (Wichtig: Speichern und schliessen sie vorher ihre Arbeitsmappen, da Excel wie erwähnt mit einem Ausnahmefehler abstürzt!). In Microsoft Excel 2000 scheint dieser Fehler behoben zu sein.

[AP-M3] Application.Quit
Die Quit-Methode schliesst automatisch alle geöffneten Arbeitsmappen, bevor Microsoft Excel beendet wird. Dabei werden die in den Mappen vorhandene Auto_Close-Makros ausgeführt.

Weitere Informationen von Microsoft:
 
XL97: Auto_Close Macros Run When You Use Application.Quit
  http://support.microsoft.com/?kbid=160462
  XL2000: Auto_Close Macros Run When You Use Application.Quit
  http://support.microsoft.com/?kbid=213532

To Top

 

Application-Objekt: Ereignisse

Ereignis Beschreibung
WorkbookBeforeClose(Wb As Workbook, Cancel As Boolean) Tritt direkt vor dem Schliessen einer beliebigen geöffneten Arbeitsmappe ein.
WorkbookBeforeSave(Wb As Workbook, SaveAsUI As Boolean, Cancel As Boolean) Tritt ein, bevor eine beliebige geöffnete Arbeitsmappe gespeichert wird.
WorkbookOpen(Wb As Workbook) Tritt ein, wenn eine Arbeitsmappe geöffnet wird.

To Top

 


Workbook-Objekt

Workbook-Objekt: Eigenschaften

Eigenschaft Beschreibung Beispiel
Workbook.AutoUpdateFrequency Enthält die Anzahl Minuten zwischen automatischen Aktualisierungen einer freigegebenen Arbeitsmappe.
> Schreib-Lese-Zugriff

Hinweis
Das in der VBA-Referenz/Online-Hilfe abgebildete Beispiel enthält einen Fehler. Der dort angegebene Wert 3 kann nicht der AutoUpdateFrequency-Eigenschaft zugewiesen werden, da nur Werte zwischen 5 und 1'440 erlaubt sind. Der Wert 1'440 entspricht genau 24 Stunden (1'440 / 60 = 24).

Weitere Informationen finden Sie unter VBA-Spezialthema: Freigegebene Arbeitsmappen

False
Workbook.AutoUpdateSaveChanges Gibt zurück, ob die automatische Speicherung von Änderungen bei freigegebenen Mappen ein- oder ausgeschaltet ist beziehungsweise legt diese Einstellung fest.

Hinweis
Das in der VBA-Referenz/Online-Hilfe abgebildete Beispiel enthält einen Fehler.

False
Workbook.CalculateBeforeSave Gibt die aktuelle Einstellung "Vor dem Speichern neu berechnen" zurück oder setzt sie.
> Schreib-Lese-Zugriff

Hinweis
Beachten Sie bitte, dass diese Einstellung nur dann von Bedeutung ist, wenn der Berechnen-Modus auf "Manuell" eingestellt ist (-4135 oder. xlCalculationManual bzw. xlManual).

True
Workbook.FileFormat Gibt das Dateiformat der Arbeitsmappe zurück.
> Lese-Zugriff

Siehe Anmerkung [WB-P5]

-4143 (= xlWorkbookNormal)
Workbook.FullName Enthält den vollständigen Dateipfad (d.h. Pfad- und Dateiname) der Arbeitsmappe.
> Lese-Zugriff

Siehe Anmerkung [WB-P4]

D:\MeineDaten\Testmappe.xls
Workbook.HasPassword Gibt zurück, ob die Arbeitsmappe ein Dateikennwort (Lese-/Schreibkennwort) verwendet.
> Lese-Zugriff
False
Workbook.IsAddin Gibt an, ob die Arbeitsmappe ein Add-In ist oder nicht.
> Schreib-Lese-Zugriff
False
Workbook.IsInPlace Enthält den aktuellen Bearbeitungsmodus der Arbeitsmappe. Gibt "True" zurück, wenn die Arbeitsmappe direkt, d.h. als eingebettetes Dokument bearbeitet wird. Gibt "False" zurück, wenn die Mappe in Excel bearbeitet wird.
> Lese-Zugriff
False
Workbook.MultiUserEditing Informationen zu dieser Eigenschaft erhalten Sie unter VBA-Spezialthema: Freigegebene Arbeitsmappen -
Workbook.Name Gibt den Dateinamen der Arbeitsmappe mit der Dateiendung ".xls" (bzw. ".xlt" bei Vorlagemappen) zurück. Wurde die Mappe noch nie gespeichert, wird der Name der Mappe ohne Dateiendung zurückgegeben.
> Lese-Zugriff
Testmappe.xls
Workbook.OnSave Legt die Prozedur fest, die beim Speichern der Arbeitsmappe aufgerufen wird.
> Schreib-Lese-Zugriff

Siehe Anmerkung [WB-P1]

SpeichernProzedur
Workbook.Path Enthält den Verzeichnispfad der Arbeitsmappe, wo sie abgelegt ist.
> Lese-Zugriff

Siehe Anmerkung [WB-P2]

D:\MeineDaten
Workbook.ReadOnly Zeigt den aktuellen Zugriffsmodus auf die Arbeitsmappe.
> Lese-Zugriff

Hinweis
Der Zugriffsmodus kann mit der Methode ChangeFileAccess geändert werden (siehe unter Workbook-Objekt: Methoden).

False
Workbook.ReadOnlyRecommended Gibt zurück, ob die Einstellung "Schreibschutz empfehlen" aktiviert ist.

Hinweis
Wie diese Eigenschaft in der Praxis verwendet wird, erfahren Sie unter Excel-Funktionen: Öffnen mit Schreibschutz-Empfehlung.

False
Workbook.Saved Ermittelt oder setzt den aktuellen Speicherungszustand.

Siehe Anmerkung [WB-P3]

True
Workbook.SaveLinkValues Gibt zurück, ob die Einstellung "Externe Verknüpfungswerte speichern" aktiviert ist oder setzt sie.
> Schreib-Lese-Zugriff
True
Workbook.TemplateRemoveExtData Stellt ein, ob externe Daten entfernt werden, wenn die Arbeitsmappe als Vorlage (xlt) gespeichert wird. Der Standardwert ist Falsch.
> Schreib-Lese-Zugriff
True
Workbook.UserStatus Enthält ein zweidimensionales Array mit den aktuellen Benutzern der Arbeitsmappe.
> Lese-Zugriff
Peter Muster
Workbook.WriteReserved Gibt zurück, ob die Arbeitsmappe ein Schreibschutzkennwort verwendet.
> Lese-Zugriff
False
Workbook.WriteReservedBy Zeigt den Namen des Benutzers, der gerade die Schreiberlaubnis für die Arbeitsmappe besitzt bzw. des Benutzers, der die Arbeitsmappe mit einem Schreibschutzkennwort gespeichert hat.
> Lese-Zugriff
Peter Muster

[WB-P1] Workbook.OnSave
Die OnSave-Eigenschaft wurde durch das BeforeSave-Ereignis ersetzt, wird aber aus Kompatibilitätsgründen weiterhin unterstützt und kann somit immer noch benutzt werden.

[WB-P2] Workbook.Path
Die Eigenschaft Path enthält eine leere Zeichenfolge zurück, falls die Arbeitsmappe noch nie gespeichert wurde. Dies aus dem einfachen Grund, weil es für die Mappe keine xls-Datei gibt.

Bitte beachten Sie, dass der Pfad in Path nicht zwingend die gewohnte Schreibweise "<Laufwerk>:\<Verzeichnis>" besitzen muss. Es kann auch die UNC-Pfadschreibweise (z.B. "\\Server\Freigabe\Daten") besitzen. Auch die File URL-Schreibweise (z.B. "file:///C:/Daten") ist grundsätzlich möglich, allerdings höchst selten anzutreffen.

[WB-P3] Workbook.Saved
Die Saved-Eigenschaft enthält in einer bestimmten Situation fälschlicherweise den Wert "True" statt "False". Dieses fehlerhafte Verhalten tritt auf, wenn der Speichern-Vorgang nicht vollständig durchgeführt werden konnte. Das bedeutet, dass Excel die Eigenschaft Saved auf den Wert "True" ändert, obwohl die Datei nicht ordnungsgemäss gespeichert wurde (mehr dazu siehe unter "Weitere Informationen").

Im Zusammenhang mit der Saved-Eigenschaft werden oft die Begriffe "Saved Dirty" und "UnSaved Dirty" benutzt. Mehr dazu erfahren Sie unter "Weitere Informationen".

Weitere Informationen

Bekannte VBA-Probleme: Saved-Eigenschaft enthält 'True' trotz Abbruch des Speichern-Vorganges

Fehlermeldungen: Fehlermeldungen beim Speichern einer Arbeitsmappe

Fragen: Was bedeuten die Begriffe "Saved Dirty" und "UnSaved Dirty"?

[WB-P4] Workbook.FullName
Mit der Eigenschaft FullName kann der vollständige Pfad- und Dateiname einer Arbeitsmappe abgefragt werden. Bei einer noch nie gespeicherten Mappe wird - wie bei der Eigenschaft Name - lediglich der Name der Arbeitsmappe zurückgegeben, d.h. ohne Pfad und ohne die Dateiendung "xls" (bzw. "xlt").

Bitte beachten Sie, dass der Pfad in Fullname nicht zwingend die gewohnte Schreibweise "<Laufwerk>:\<Verzeichnis>" besitzen muss. Es kann auch die UNC-Pfadschreibweise (z.B. "\\Server\Freigabe\Daten") besitzen. Auch die File URL-Schreibweise (z.B. "file:///C:/Daten") ist grundsätzlich möglich, allerdings höchst selten anzutreffen.

[WB-P5] Workbook.FileFormat
Durch Abfragen der FileFormat-Eigenschaft lässt sich das Dateiformat der Arbeitsmappe ermitteln. Bei einer neuen, d.h. noch nicht gespeicherten Mappe wird das Dateiformat der aktuell verwendeten Excelversion zurückgegeben; unabhängig davon, welches Standard-Dateiformat eingestellt ist. Das Standard-Dateiformat lässt sich mit VBA anhand der Eigenschaft DefaultSaveFormat des Application-Objektes bzw. in Microsoft Excel anhand der Einstellung "Standard-Dateityp" im Optionen-Dialog (Menübefehl Extras/Optionen) festlegen.

To Top

 

Workbook-Objekt: Methoden

Methode Beschreibung
Workbook.ChangeFileAccess(Mode As XLFileAccess, [WritePassword], [Notify]) Ändert den Zugriffsmodus auf eine Arbeitsmappendatei.

Hinweis
Weitere Informationen finden Sie unter
Fragen und Antworten: Kann man den Zugriffsmodus nachträglich umstellen?

Workbook.Close([SaveChanges], [Filename], [RouteWorkbook]) Siehe Anmerkung [WB-M1]
Workbook.ExclusiveAccess() Räumt dem aktuellen Benutzer oder der Benutzerin exklusiven Zugriff auf die geöffnete und für gemeinsamen Zugriff freigegebene Arbeitsmappe ein.
Workbook.MergeWorkbook(Filename) Führt Änderungen einer Arbeitsmappe in einer geöffneten Arbeitsmappe zusammen.
Workbook.OpenLinks(Name As String, [ReadOnly], [Type]) Öffnet die benötigten Dokumente für eine oder mehrere Verknüpfungen.
Workbook.Save() Speichert Änderungen in der angegebenen Arbeitsmappe.
Workbook.SaveAs([Filename], [FileFormat], [Password], [WriteResPassword], [ReadOnlyRecommended], [CreateBackup], [AccessMode As XlSaveAsAccessMode = xlNoChange], [ConflictResolution], [AddToMru], [TextCodepage], [TextVisualLayout]) Siehe Anmerkung [WB-M2]
Workbook.SaveCopyAs([FileName]) Siehe Anmerkung [WB-M3]
Workbook.UpdateFromFile() Aktualisiert eine schreibgeschützte Arbeitsmappe mit der gespeicherten Version, falls die Version auf dem Datenträger neuer ist als die aktuelle Kopie der Arbeitsmappe im Arbeitsspeicher. Wurde die Kopie auf dem Datenträger seit dem Laden der Arbeitsmappe nicht verändert, wird die Kopie im Arbeitsspeicher nicht neu geladen.

[WB-M1] Workbook.Close
Bei Workbook.Close sollte beachtet werden, dass ein in der zu schliessenden Arbeitsmappe enthaltenes Auto_Close-Makro nicht ausgeführt wird.

Wissenswert ist auch, dass die der Programmzeile mit dem Close nachfolgenden VBA-Anweisungen nicht mehr ausgeführt werden, wenn mit Close die Mappe geschlossen wird, in der der Programmcode enthalten ist. Hier ein Beispiel:

Sub CloseThisWorkbook()
  ThisWorkbook.Close
  MsgBox "ThisWorkbook wurde geschlossen."
End Sub

Die Codezeile "ThisWorkbook.Close" schliesst die den Programmcode enthaltende Arbeitsmappe. Die Meldung "ThisWorkbook wurde geschlossen." erscheint nicht mehr, da die Ausführung des weiteren VBA-Programmcodes infolge der Schliessung gestoppt wurde.

Anmerkung des Autors: Sie denken vielleicht, es ist ja logisch, dass nach Close kein Programmcode mehr abläuft. Eigentlich ist es schon logisch, nur: Es ist erst seit Excel 97 so, dass die Codeausführung gestoppt wird. Bis Excel 95 war dies nicht der Fall, d.h. die Meldung "ThisWorkbook wurde geschlossen." im obigen Beispiel erscheint in Excel 95. Auf derartige Eigenheiten sollten Sie insbesondere achten, wenn Sie noch alte Excel 95-Makros antreffen, die Sie in eine neuere Excel-Version übernehmen müssen.

[WB-M2] Workbook.SaveAs
Bei Workbook.SaveAs ist meiner Meinung nach erstaunlich, dass das Argument Filename nicht zwingend angegeben werden muss (es ist optional):
  - Wird Filename nicht angegeben, speichert Excel die Arbeitsmappe mit ihrem momentan verwendeten Namen (z.B. "Buchhaltung.xls" bei einer bereits einmal gespeicherten Mappe; oder "Mappe1" bei einer neuen Mappe, wobei in diesem Fall die Dateiendung ".xls" automatisch hinzugefügt wird). Existiert im aktuellen Verzeichnis bereits eine Datei mit gleichem Namen, so erscheint die Rückfrage "Eine Datei mit dem Namen <Datei.xls> existiert schon an diesem Platz. Soll sie ersetzt werden?".
  - Wird für Filename nur ein Dateiname ohne Pfad angegeben, so speichert Excel die Arbeitsmappe im aktuellen Ordner.

Bei einer bereits vorhandenen Datei ist das Standardformat das zuletzt angegebene Dateiformat dieser Datei. Bei einer neuen Datei wird standardmässig das xls-Format der eingesetzten Excel-Version verwendet (und nicht das im Optionen-Dialog als Standard eingestellte Dateiformat!).

[WB-M3] Workbook.SaveCopyAs
Das Argument FileName der SaveCopyAs-Methode ist gemäss der im Excel-Objektmodell abgelegten Parameter-Definition ein optionales Argument, laut der Onlinehilfe (Excel VBA-Referenz) dagegen zwingend erforderlich. Wird das Argument nicht spezifiziert, erscheint tatsächlich der Laufzeitfehler 1004 "Anwendungs- oder objektdefinierter Fehler".

Beim Speichern einer Mappe mittels SaveCopyAs wird die Saved-Eigenschaft nicht verändert.

Interessant ist das Verhalten von SaveCopyAs je nach Inhalt des Argumentes FileName:
  - Bei Angabe eines Dateinamens ohne Verzeichnis (z.B. FileName:="MyCopy.xls") wird eine Kopie der Mappe unter dem angegebenen Dateinamen im Standard-Arbeitsordner gespeichert.
  - Bei Angabe eines eigentlich ungültigen oder leeren Dateinamens (z.B. bei 'FileName:=varDummy', wobei varDummy eine nicht initialisierte Variable ist; oder auch ganz einfach bei 'FileName:=""') erstellt Excel eine Arbeitsmappendatei im temporären Verzeichnis von Windows und gibt dieser Datei automatisch einen Namen, der aus einer fortlaufenden Nummer und der Dateinamenerweiterung ".tmp" zusammengesetzt wird. Die fortlaufende Nummer ist eine Zahl, die basierend auf den bereits im Temp-Verzeichnis existierenden tmp-Dateien ermittelt wird. Ist beispielsweise eine Datei mit dem Namen "3.tmp" bereits vorhanden, so erhält die nächste mit SaveCopyAs ohne Parameter gespeicherte Arbeitsmappe den Dateinamen "4.tmp".

Weitere Informationen

Temporäre Dateien

VBA-Codebeispiele: Fortlaufend nummerierte Mappenkopien im Temp-Verzeichnis von Windows anlegen

To Top

 

Workbook-Objekt: Ereignisse

Ereignis Bemerkung
BeforeClose(Cancel As Boolean) -
BeforeSave(SaveAsUI As Boolean, Cancel As Boolean) Siehe Anmerkung [WB-E1]
Open -

[WB-E1] BeforeSave
Beim BeforeSave-Ereignis kann mit dem SaveAsUI-Parameter ermittelt werden, ob der Speichern-Vorgang durch den Benutzer über den Menübefehl Datei/Speichern unter ausgelöst wurde.

Weitere Informationen

VBA Codebeispiele: Speichern unter-Befehl für eine Arbeitsmappe sperren

To Top

 


Workbooks-Auflistung

Workbooks-Auflistung: Methoden

Methode Bemerkung
Workbooks.Add([Template As Variant]) Siehe Anmerkung [WA-M1]
Excel 97:
Workbooks.Open(Filename As String, [UpdateLinks], [ReadOnly], [Format], [Password], [WriteResPassword], [IgnoreReadOnlyRecommended], [Origin], [Delimiter], [Editable], [Notify], [Converter], [AddToMRU])
Excel 2000:
Workbooks.Open(Filename As String, [UpdateLinks], [ReadOnly], [Format], [Password], [WriteResPassword], [IgnoreReadOnlyRecommended], [Origin], [Delimiter], [Editable], [Notify], [Converter], [AddToMRU])
Excel 2002:
Workbooks.Open(Filename As String, [UpdateLinks], [ReadOnly], [Format], [Password], [WriteResPassword], [IgnoreReadOnlyRecommended], [Origin], [Delimiter], [Editable], [Notify], [Converter], [AddToMRU], [Local], [CorruptLoad], [OpenConflictDocument])
Siehe Anmerkung [WA-M2]
Excel 97:
Workbooks.OpenText(Filename As String, [Origin], [StartRow], [DataType], [TextQualifier As XlTextQualifier = xlTextQualifierDoubleQuote], [ConsecutiveDelimiter], [Tab], [Semicolon], [Comma], [Space], [Other], [OtherChar], [FieldInfo], [TextVisualLayout])
Excel 2000:
Workbooks.OpenText(Filename As String, [Origin], [StartRow], [DataType], [TextQualifier As XlTextQualifier = xlTextQualifierDoubleQuote], [ConsecutiveDelimiter], [Tab], [Semicolon], [Comma], [Space], [Other], [OtherChar], [FieldInfo], [DecimalSeparator], [ThousandsSeparator])
Excel 2002:
Workbooks.OpenText(Filename As String, [Origin], [StartRow], [DataType], [TextQualifier As XlTextQualifier = xlTextQualifierDoubleQuote], [ConsecutiveDelimiter], [Tab], [Semicolon], [Comma], [Space], [Other], [OtherChar], [FieldInfo], [TextVisualLayout], [DecimalSeparator], [ThousandsSeparator], [TrailingMinusNumbers], [Local])
-
Excel 2002:
Workbooks.OpenXML(Filename, [StyleSheets])
-
Excel 2002:
Workbooks.OpenDatabase(Filename, [CommandText], [CommandType], [BackgroundQuery], [ImportDataAs])
-

[WA-M1] Workbooks.Add
Bei der Add-Methode besitzen Sie die Möglichkeit, unmittelbar eine weitere Methode des Workbook-Objektes aufzurufen oder eine Eigenschaft der neu angelegten Arbeitsmappe anzusprechen.

Beispiele
Workbooks.Add.SaveAs "C:\Daten\NeueMappe.xls"
Workbooks.Add.SaveLinkValues = False
Workbooks.Add(4).Close True, "C:\Daten\EineMakroMappe.xls"

Beachten Sie, dass die zusätzliche Methode bzw. die Eigenschaft sequenziell abgearbeitet wird. Das bedeutet, dass bei nicht durchführbarer Verarbeitung der angehängten Methode/Eigenschaft die Add-Methode trotzdem ausgeführt wird. Beispiel: Wenn bei "Workbooks.Add.SaveAs "C:\Daten\NeueMappe.xls"" das angegebene Verzeichnis nicht existiert und somit ein Laufzeitfehler auftritt, wird trotzdem eine neue Arbeitsmappe angelegt. Es wird also nicht die gesamte Codezeile nicht ausgeführt sondern nur ein Teil.

Hinweis zum Argument 'Template'
Das Template-Argument ist in der Microsoft Excel VBA-Referenz unvollständig beschrieben. Neben den dokumentierten Konstanten
- xlWBATChart (Dezimalwert -4109),
- xlWBATExcel4IntlMacroSheet (4),
- xlWBATExcel4MacroSheet (3) und
- xlWBATWorksheet (-4167)
können des auch folgende Werte verwendet werden:

Wert Beschreibung
1 Erstellt eine neue Mappe mit einem einzelnen Tabellenblatt. Die Mappe erhält den Namen "Tabelle" und einer angehängten Zahl, welche die Laufnummer der in der aktuellen Excel-Sitzung bereits neu hinzugefügten Tabellenblättern darstellt (gleich wie -4167, xlWBATWorksheet).
2 Erstellt eine neue Mappe mit einem einzelnen Diagrammblatt (gleich wie -4109, xlWBATChart).
5 Erstellt eine neue Mappe mit so vielen Tabellenblättern, wie als Default eingestellt ist (gleich wie ohne spezifizieren des Template-Parameters). Die Default-Einstellung ist im Optionen-Dialog auf der Registerseite "Allgemein" zu finden, oder kann mit Application.SheetsInNewWorkbook gesetzt bzw. abgefragt werden.
6 Erstellt eine neue Mappe mit einem einzelnen Tabellenblatt. Die Mappe erhält den Namen "Mappe" mit einer angehängten Zahl, welche die Laufnummer der in der aktuellen Excel-Sitzung bereits neu erstellten Arbeitsmappen darstellt.
7 Erstellt eine neue Mappe mit einem einzelnen Dialogblatt (MS Excel 5-Dialog).

Wird das Template-Argument nicht angegeben, erstellt Microsoft Excel eine neue Arbeitsmappe mit mehreren leeren Blättern (die Anzahl der Blätter wird durch die SheetsInNewWorkbook-Eigenschaft festgelegt).

[WA-M2] Workbooks.Open
Wie bei Workbooks.Add kann auch bei Open eine Methode oder Eigenschaft des Workbook-Objektes direkt anschliessend verwendet werden.

Beispiele
Workbooks.Open("C:\AlteMappe.xls").SaveAs("C:\NeueMappe.xls")
Workbooks.Open("C:\MappeMitVolatilerFunktion.xls").Saved = True

Der grosse Vorteil der im zweiten Beispiel gezeigten Verwendung von "Saved = True" liegt darin, dass die soeben mit Open geöffnete Mappe betrachtet wird, als würde sie keine noch nicht gespeicherten Änderungen enthalten. Das ist äusserst nützlich, weil nach Öffnen einer Mappe, die eine oder mehrere volatile Funktionen enthält, Excel immer davon ausgeht, dass in der Mappe Änderungen stattgefunden haben (was in diesem Fall nicht ganz richtig ist). Dies führt zu der oft als störend empfundenen und in der vorliegenden Situation an sich überflüssigen "Änderungen speichern"-Rückfrage beim Schliessen der Arbeitsmappe.

Öffnen von Nicht-xls-Dateien
Nebst xls-Dateien können auch verknüpfte Exceldateien (Dateien mit der Dateinamenerweiterung 'lnk') mit der Open-Methode geöffnet werden:

Workbooks.Open "D:\Exceldaten\Verknüpfe Mappe.lnk"

Microsoft Excel ermittelt in diesem Fall die in der Verknüpfungsdatei angegebene Zieldatei und öffnet diese. Diesen Vorgang bezeichnet man in der Fachsprache als "dereference shell links", was soviel bedeutet wie "Verknüpfungen auflösen".

Hinweise zu den in Excel 2002 neu hinzugefügten Argumenten für die Open-Methode
Local
Optional Variant.
True saves files against the language of Microsoft Excel (including control panel settings). False (default) saves files against the language of Visual Basic for Applications (VBA) (which is typically US English unless the VBA project where Workbooks.Open is run from is an old internationalized XL5/95 VBA project).

CorruptLoad
Optional Variant.
Can be one of the following constants: xlNormalLoad, xlRepairFile and xlExtractData. The Default behavior if no value is specified is usually normal but may be safe load or data recovery, if Excel has already attempted to open the file. The first attempt is normal. If Excel stops operating while opening the file the second attempt is safe load. If Excel again stops operating the next attempt is data recovery.

OpenConflictDocument
Optional Variant.
True to open the local conflict document. Default is False.

To Top

 


Worksheet-Objekt

Worksheet-Objekt: Methoden

Methode Bemerkung
Worksheet.Copy([Before], [After]) Bei Weglassen von Before und After wird das Blatt in eine neue Arbeitsmappe kopiert.
Worksheet.PrintOut([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate]) Wenn für das PrintToFile-Argument mit True angegeben wird, fordert Sie Excel zur Eingabe eines Dateinamens auf.
Worksheet.SaveAs(Filename As String, [FileFormat], [Password], [WriteResPassword], [ReadOnlyRecommended], [CreateBackup], [AddToMru], [TextCodepage], [TextVisualLayout]) Siehe Anmerkung [WS-M1]
Worksheet.SetBackgroundPicture(Filename As String) -

[WS-M1] Worksheet.SaveAs
Das FileFormat-Argument besitzt in Excel 2002 einen Bug. Wenn Sie die (eigentlich korrekte) Konstante XLWorkbookNormal verwenden, erscheint ein Laufzeitfehler und das Speichern schlägt fehl. Benutzen Sie anstelle der Konstante XLWorkbookNormal daher den Wert 1 (d.h. FileFormat:=1). Sie werden vielleicht bemerkt haben, dass die Konstante XLWorkbookNormal eigentlich den Wert -4143 und nicht 1 enthält. Das ist an sich richtig - es muss trotzdem der Wert 1 angegeben werden.

To Top

 


Worksheets-Auflistung

Worksheets-Auflistung: Methoden

Methode Bemerkung
Worksheets.PrintOut([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate]) Druckt ein Arbeitsblatt.

To Top

 


Chart-Objekt

Chart-Objekt: Methoden

Methode Bemerkung
Chart.Export(Filename As String, [FilterName], [Interactive]) As Boolean Exportiert ein Diagramm in eine Bilddatei, wobei das Bildformat mit dem Parameter FilterName angegeben werden kann (z.B. "GIF").
Excel 97:
Chart.PrintOut([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate])
Excel 2000:
Chart.PrintOut([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate], [PrToFileName])

Excel 2002:
Chart.PrintOut([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate], [PrToFileName])
Druckt ein Diagramm.
Chart.SaveAs(Filename As String, [FileFormat], [Password], [WriteResPassword], [ReadOnlyRecommended], [CreateBackup], [AddToMru], [TextCodepage], [TextVisualLayout]) Speichert ein Diagramm in einer Datei.
Chart.SetBackgroundPicture(Filename As String) Legt die Hintergrundgrafik für ein Tabellenblatt oder ein Diagramm fest.

To Top

 


Charts-Auflistung

Charts-Auflistung: Methoden

Methode Bemerkung
Excel 97:
Charts.PrintOut([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate])
Excel 2000:
Charts.PrintOut([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate], [PrToFileName])

Excel 2002:
Charts.PrintOut([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate], [PrToFileName])
Druckt ein Diagramm.

To Top

 


Window-Objekt

Window-Objekt: Methoden

Methode Bemerkung
Window.PrintOut Druckt einen Fensterinhalt.

To Top

 


Shapes-Auflistung

Shapes-Auflistung: Methoden

Methode Bemerkung
Shapes.AddPicture Erstellt ein Bild aus einer bestehenden Datei heraus. Gibt ein Shape-Objekt zurück, das das neue Bild darstellt.

To Top

Haben Sie Fragen, Anregungen oder Hinweise?
Senden Sie mir ein Mail

Zuletzt aktualisiert am 13.08.2005 / 23:00 Uhr
© 2002-2005 by Philipp von Wartburg, CH-8916 Jonen
Alle Rechte vorbehalten