Allgemeines über Excel-interne Prozesse
Was läuft beim Starten von Excel ab?
Was läuft beim Öffnen einer Arbeitsmappe ab?
Was läuft beim Speichern einer Arbeitsmappe ab?
Was läuft beim Schliessen einer Arbeitsmappe ab?
Was läuft beim Beenden von Excel ab?
Der Prozess "Arbeitsblatt kopieren"
Die Back Seeking-Technik zum Lesen und Schreiben von Dateien
Unterschiedliches Öffnen einer Arbeitsmappe
Starten von Excel im abgesicherten Modus
Diese Seite ist teilweise in Bearbeitung! |
Allgemeines über Excel-interne Prozesse
Auf dieser Seite möchte ich ein paar interessante
Informationen über Prozesse vorstellen, die bei bestimmten Vorgängen durchlaufen werden.
Die wohl bekanntesten und am meisten ausgeführten Vorgänge sind:
Starten von Excel
Öffnen einer Arbeitsmappe
Speichern einer Arbeitsmappe
Schliessen einer Arbeitsmappe
Beenden von Excel
Lesen Sie auf dieser Seite, welche Aktionen bei den obigen fünf Vorgängen ausgelöst und abgearbeitet werden.
Hinweis
Wenn Sie mehr über die bei den oben aufgeführten Vorgängen
ausgelösten Ereignisse wissen möchten, sollten Sie einen Blick in das Dokument
"Event Sequences in Microsoft Excel 97" werfen:
|
Download von Beschreibung "Event Sequences in Microsoft Excel 97" |
xlevtdoc.zip (59 KB)
|
Weitere Dokumente sowie viele nützliche Tools stehen Ihnen auf der Downloadseite zur Verfügung:
Was läuft beim Starten von Excel ab?
Übersicht der Vorgänge beim Starten
Beim Starten von Excel werden verschiedene Vorgänge ausgelöst. Die nachstehende Tabelle listet verschiedene Vorgänge auf, die beim Excel-Start ausgeführt werden, wobei sich die Liste auf den "gewöhnlichen" Start bezieht, d.h. wenn Excel über "Start"->"Programme"->"Microsoft Excel" in Windows, über eine Programm-Verknüpfung auf dem Windows Desktop oder über "Start"->"Ausführen"->"Befehlszeile: C:\Programme\Microsoft Office\Office\Excel.exe" gestartet wird, also keine existierende Mappe beim Start geöffnet wird, wie es unter anderem beim Doppelklicken einer Exceldatei im Windows Explorer der Fall ist. Bitte beachten Sie, dass die Liste nicht abschliessend ist.
| Vorgang | Beschreibung |
| Excel-Startparameter verarbeiten | Die in der
Befehlszeile angegebenen Startparameter werden ausgewertet und angewendet. Umfassende Informationen über die Excel-Startparameter erhalten Sie
hier: |
| Dateien im Startordner öffnen | Alle Dateien, die
sich im Startordner ("XlStart", Startup Folder) befinden, werden geöffnet.
Diese Dateien werden geöffnet, bevor eine Datei aus dem zusätzlichen Startordner
geöffnet wird. Umfassende
Informationen über den Excel-Startordner erhalten Sie hier: |
| Dateien im zusätzlichen Startordner öffnen | Alle Dateien, die
sich im zusätzlichen Startordner (AltStartup Folder) befinden, werden geöffnet, sofern
ein zusätzlicher Startordner definiert wurde. Enthält der zusätzliche Startordner eine
Datei, die den gleichen Namen wie eine Datei im Startordner besitzt, so wird die Datei im
zusätzlichen Startordner ignoriert und somit nicht geöffnet. Umfassende Informationen über den Zusatzstartordner erhalten Sie
hier: |
| Add-Ins laden | Alle aktivierte,
installierte Add-Ins werden geladen. Umfassende
Informationen über Add-Ins erhalten Sie hier: |
| Berechnung durchführen | |
| Auto_Open-Makros ausführen | |
| Workbook_Open-Ereignisse auslösen | |
| Registry-Einträge lesen/schreiben |
Zugriffe auf die Windows-Registry
Während dem Startvorgang wird laufend auf die Windows Registry zugegriffen.
Excel wird über das Start-Menü von Windows
gestartet (Start => Programme => Microsoft Excel)
Auf meiner Arbeitsstation (Windows NT 4 SP5 und Excel 97) wurden
insgesamt 945 Zugriffe auf Registry-Einträge durchgeführt. Dazu wurde ca. 1/2 Sekunde
benötigt; d.h. dass vom Zeitpunkt des Beginns des Programmstarts bis zum vollständigen
Laden der Anwendung Excel lediglich eine halbe Sekunde verging.
Excel wird über eine Verknüpfung auf dem
Windows Desktop gestartet (Doppelklick auf Verknüpfung-Symbol)
Auf meiner Arbeitsstation (Windows NT 4 SP5 und Excel 97) wurden in diesem Fall 951
Zugriffe auf Registry-Einträge vorgenommen. Dazu wurden ca. 0.4 Sekunden benötigt.
Excel wird im Safe Mode über eine Verknüpfung
auf dem Windows Desktop gestartet (Startparameter "/s")
Beim Starten von Excel im Safe Mode wurden lediglich 227 Zugriffe auf die Registry
gemacht. Dazu wurden ca. 0.12 Sekunden benötigt.
- Neuberechnung
- Workbook_Open
- Auto_Activate
- Auto_Open
Doppelklick im Windows Explorer auf eine Excel-Datei (z.B.
Mappe.xls):
- Personl.xls wird geöffnet und zuerst Auto_Open und danach Workbook_Open
ausgeführt
- Mappe.xls wird geöffnet und zuerst Workbook_Open und danach Auto_Open
ausgeführt
By default, Excel loads files from the following folders on your hard disk at startup:
C:\Program Files\Microsoft Office\Office\Xlstart
C:\Windows\Application Data\Microsoft\Excel\Xlstart
C:\Winnt\Profiles\User name\Application Data\Microsoft\Excel\Xlstart,
where User name is your user name
The folder specified in the Alternate startup file location
box (on the General tab of the Options dialog box)
Excel opens files in the startup folder before opening files in the alternate startup folder. If there is a file in the alternate startup folder with a name that matches a file in the startup folder, the file in the alternate startup folder is ignored.
Prevent Opening: Start Excel, and then quickly hold down the SHIFT key. Holding down the SHIFT key prevents Microsoft Excel from opening any of the files in the alternate startup file location. After Microsoft Excel has started, release the SHIFT key.
! -> Das Halten der SHIFT-Taste funktioniert nicht!?! (getestet mit XL97, 30.07.2003)
Excel-Startordner
Excel verwendet die Startordner auf zwei Arten:
- zum Laden von Excel-Dateien beim Starten von Excel
- als Referenz-Ablageort für Vorlagen
Zusätzlicher Startordner
The alternate startup folder is not the same as the default file location (default
working folder). An alternate startup folder is a folder in addition to the Xlstart folder
that contains workbooks or other files that you want opened automatically when you start
Microsoft Excel. The alternate startup folder can be a location on a shared network drive.
Templates placed in this folder are available in the New dialog box
(click New on the File menu). The default file location
(default working folder) is the folder that appears in the Open and Save
As dialog boxes.
Vorlagedatei Mappe.xlt im Startordner
Befindet sich eine Datei namens Mappe.xlt im Startordner, so wird diese
Arbeitsmappe automatisch zur Standard-Vorlagemappe beim Excel-Start sowie beim Hinzufügen
von neuen Arbeitsmappen.
Bei Öffnen von Excel oder einem anderen Programm mittels der VBA-Funktion Shell ohne Setzen des Fokus auf die gestartete Anwendung trägt die Anwendungsobjekte nicht in die ROT (Running Objects Table) ein. Ein anschliessendes GetObject schlägt daher fehl.
Customize how Excel starts (Excel 2002)
You can find XLStart folders in C:\Documents and Settings\username\Application Data\Microsoft\Excel or in C:\Program Files\Microsoft Office\Office10.
Open a workbook automatically when Microsoft Excel starts
Open all files in a folder when Excel starts
Use startup switches when you start Excel
Stop a workbook from loading when Excel starts
Start Excel without running automatic macros
Save workbook settings you want to use every time you start Excel with a workbook template (book.xlt)
Weitere Informationen |
|
|
|
Was läuft beim Öffnen einer Arbeitsmappe ab?
Übersicht der Vorgänge beim Öffnen
Beim Öffnen einer Arbeitsmappe werden verschiedene Vorgänge durchlaufen, Kontrollen durchgeführt und Dialogfenster eingeblendet. Die folgende Tabelle zeigt Aktionen, die beim Öffnen stattfinden. Die Liste ist nicht abschliessend und die Aktionen nur teilweise in der Reihenfolge ihrer Verarbeitung sortiert.
| Vorgang | Beschreibung |
| Prüfen ob Datei bereits in aktueller Excel-Instanz geöffnet ist | - |
| Prüfen ob Datei mit gleichem Namen in aktueller Excel-Instanz geöffnet ist | - |
| Prüfen ob Datei bereits in anderer Excel-Instanz geöffnet ist | - |
| Prüfen ob Datei bereits von einem anderen Benutzer bearbeitet wird | - |
| Dialogfenster "Dateireservierung" anzeigen | - |
| Pendenter Öffnen-Vorgang in Benachrichtigenliste eintragen | - |
| Makroviren-Warnung anzeigen | - |
| Dateikennwort abfragen | - |
| Datei in Liste der fehlerhaften Dateien eintragen | - |
| Duales Dateiformat prüfen | - |
| Dateiformat-Version ermitteln | - |
| Datei-Freigabe prüfen | - |
| Geändert am-Datum der Datei im Speicher ablegen | - |
| Geändert am-Datum der Datei aktualisieren | - |
| Name des Excel-Benutzers in der Datei eintragen | - |
| Berechnung durchführen | - |
| Formeln in Shared Formulas konvertieren | - |
| Dialogfenster "Automatische Verknüpfungen aktualisieren" anzeigen | - |
| Referenzierte Arbeitsmappen (VBA-Projekte) öffnen | - |
| Referenzierte Add-Ins laden | - |
| Gedrückte Tasten auswerten | - |
| Workbook_Open-Ereignis auslösen | - |
| Workbook_Activate-Ereignis auslösen | - |
| Workbook_WindowActivate-Ereignis auslösen | - |
| Auto_Open-Makro ausführen | - |
| Ereignisse auf Applikationsebene auslösen | - |
Interessante Aktionen
Wenn eine
Arbeitsmappe ein Dateikennwort verwendet (Lese-/Schreibkennwort), wird der
Kennwort-Eingabedialog angezeigt, bevor das Hinweisfenster
"Dateireservierung" erscheint. Man muss also das Kennwort eingeben, ohne dass
man weiss, ob die Datei nicht schon von einem anderen Benutzer bearbeitet wird

Abbildung: Kennwort-Eingabedialog

Abbildung: Dateireservierung-Hinweismeldung
Wenn eine
Arbeitsmappe ein Schreibschutzkennwort verwendet, wird der Kennwort-Eingabedialog
angezeigt, nachdem das Hinweisfenster "Dateireservierung"
eingeblendet wurde.
Wenn eine
Mappe ein Dateikennwort besitzt, erscheint keine Hinweismeldung
"Makroviren-Warnung".

Abbildung: Makroviren-Warnung beim Öffnen einer Arbeitsmappe
Wenn sich
die zu öffnende Mappe in einem XlStart-Ordner befindet und somit beim Excelstart
automatisch geöffnet wird, erscheint keine Hinweismeldung "Makroviren-Warnung".
Wenn die
zu öffnende Mappe in der Windows Registry als OPEN-Eintrag vermerkt ist und somit beim
Excelstart automatisch geöffnet wird, erscheint keine Hinweismeldung
"Makroviren-Warnung".
Wenn sich
die zu öffnende Mappe in einem XlStart-Ordner befindet und die Mappe explizit über
"Datei öffnen", mittels Doppelklick im Windows Explorer oder auf eine
vergleichbare Aktion geöffnet wird, wird die Hinweismeldung
"Makroviren-Warnung" angezeigt.
Wenn eine
Arbeitsmappe mit VBA geöffnet wird (mit der Workbooks.Open-Methode), wird ein in
der Mappe enthaltenes Auto_Open-Makro nicht ausgeführt. Möchte man ein Auto_Open-Makro
trotzdem ausführen, so muss die RunAutoMakros-Methode des Workbook-Objektes
verwendet werden. Beispiel:
Workbooks("MeineMappe.xls").RunAutoMakros
Which:=xlAutoOpen
Wenn eine
zu öffnende Arbeitsmappe automatische Verknüpfungen zu Informationen in einer anderen
Arbeitsmappe enthält, so erscheint das Dialogfenster "Automatische Verknüpfungen
aktualisieren?" bevor das Workbook_Open-Ereignis abgearbeitet wird.
Wenn Sie die Frage mit "Ja" beantworten, werden
diese Aktionen durchlaufen:
1. Die bisherigen externen Verknüpfungsdaten werden gelöscht
2. Das Workbook_Open-Ereignis wird ausgeführt
3. Die Verknüpfungen werden aktualisiert und die neuen Daten angezeigt
4. Die restlichen Ereignisse wie Workbook_Activate und Workbook_WindowActivate
werden ausgelöst
Wenn Sie die Frage dagegen mit "Nein"
beantworten, werden folgende Prozessschritte durchlaufen:
1. Das Workbook_Open-Ereignis wird ausgeführt
2. Die restlichen Ereignisse wie Workbook_Activate und Workbook_WindowActivate
werden ausgelöst
Wenn eine
zu öffnende Arbeitsmappe ein verknüpftes Objekt enthält (z.B. ein Word-Dokument), so
erscheint das Dialogfenster "Automatische Verknüpfungen aktualisieren?". Wird
die Frage mit "Ja" beantwortet, wird die Host-Anwendung (bei einem Word-Dokument
somit Microsoft Word) als Prozess in den Arbeitsspeicher geladen. Der Prozess bleibt so
lange im Speicher, bis die Arbeitsmappe geschlossen wird.
Wenn eine
Arbeitsmappe geöffnet wird, wird automatisch das Geändert am-Datum der Datei im
Arbeitsspeicher abgelegt und anschliessend das Dateidatum auf den aktuellen Zeitpunkt
geändert.
Reihenfolge der Ereignis- und Auto_Open-Ausführung
1. Workbook_Open
2. Workbook_Activate
3. Workbook_WindowActivate
4. Auto_Open
1.1 App_WorkbookOpen
2.1 App_WorkbookActivate
3.5 App_WindowActivate
Worksheet_Calculate
Workbook_SheetCalculate
App_SheetCalculate
Wenn Microsoft Excel eine Datei öffnet, wird diese gesperrt und kann gleichzeitig nur noch mit ausschliesslicher Leseberechtigung geöffnet werden. Das bedeutet, dass während dem Öffnen-Vorgang (d.h. in dem Zeitraum zwischen Auslösen des Öffnen-Vorgangs und dem Zeitpunkt, in dem die Mappe vollständig geladen ist) kein anderer Benutzer einen Schreibzugriff auf die Datei durchführen kann.
Excel 2002
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.
Notify Variant optional.
Wenn die Datei nicht im Schreib-Lese-Zugriff geöffnet werden kann, wird die Datei
durch die Angabe von True der Benachrichtigungsliste hinzugefügt. Microsoft Excel
öffnet die Datei schreibgeschützt, versucht weiterhin, die Datei zu öffnen und
benachrichtigt dann den Benutzer, wenn die Datei im Schreib-Lese-Zugriff geöffnet werden
kann. Wenn das Argument den Wert False hat oder ausgelassen ist, wird keine
Benachrichtigung angefordert, und eine nicht zur Verfügung stehende Datei kann nicht
geöffnet werden.
Was läuft beim Speichern einer Arbeitsmappe ab?
Übersicht der Vorgänge beim Speichern
Speichern einer Arbeitsmappe (Windows-Arbeitsstation)
Wenn Sie eine Arbeitsmappe speichern, so werden drei wichtige Schritte durchgeführt, um die Daten auf den Datenträger zu schreiben.
1. Temporäre Datei erstellt
2. Originaldatei gelöscht
3. Temporäre Datei umbenannt
Speichern einer Arbeitsmappe (Macintosh-Arbeitsstation)
When you save a file that you changed in some way on a
Windows-based computer, Microsoft Excel saves the file with a temporary file name and
places this file in the same folder as the original file. This creates a new file. The
original file is then deleted and the temporary file is renamed with the original file
name.
If this process is somehow interrupted, your file may not be saved properly or you may
find one or more temporary files in the folder where you tried to save your file. In
addition, you may receive one of several alert or error messages.
When you use Microsoft Excel to save a file that you changed in some way on a
Macintosh-based computer, and the program unexpectedly quits, Microsoft Excel saves the
file with a temporary file name. Temporary files are placed in an invisible folder called
Temporary Items in the root level of the hard disk. When Microsoft Excel unexpectedly
quits, this folder becomes visible. When you restart the computer, this folder is moved to
the Trash and placed in a folder called "Rescued Items from <hard disk
name>." You can then drag the file back to the hard disk to recover it.
Hex-Namen von Temp-Dateien

Wird eine Arbeitsmappe mit der SaveAs-Methode von Workbook
gespeichert, wird das Workbook_BeforeSave-Ereignis nicht ausgelöst.
(??? Test vom 10.06.2003 hat das Gegenteil ergeben!)
Wird eine Arbeitsmappe über den Menübefehl Datei/Speichern unter gespeichert, wird das Workbook_BeforeSave-Ereignis abgearbeitet, noch bevor der Dateidialog "Speichern unter" auf dem Bildschirm erscheint.
Speichern einer Datei als Add-In
Keine Kompilierung des VBA-Projektes beim Speichern als Add-In.
XL2000: Workbooks with Multiple ActiveX Controls May
Open Slowly
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q292298
The Temp folder may have too many files in it. When you save a
workbook with attached ActiveX Controls, Excel tries to save an .exd file and a .twd file
to the Temp folder. Excel has to search through your Temp folder to see whether these
files are there. If the Temp folder contains many files, the time it takes to save these
two files increases.
XL97/XL2000:
Workbooks Containing User Forms Take Excessively Long Time to Save Across WAN Connections
http://support.microsoft.com/?kbid=254733
Dieses Problem
tritt beim Speichern auf einen WAN-Server auf, wenn die Arbeitsmappe Benutzerformulare mit
vielen Steuerelementen enthält.
SYMPTOMS
When you save Excel workbooks that contain user forms, it typically takes about one
minute to save to the local computer or within the local area network (LAN). When you save
the same workbooks over a wide area network (WAN), it can take an excessive amount of
time.
CAUSE
When Excel saves a user form, it writes out each control
separately, and waits for an acknowledgement from the network before proceeding to the
next control. The amount of time it takes to save is relative to the number of controls
and user forms, and the network and remote drive latency.
Zugriffe auf die Windows-Registry
Während dem Speichern-Vorgang einer Arbeitsmappe greift Microsoft Excel auf die Windows Registry zu.
Arbeitsmappe wird gespeichert
Auf meiner Arbeitsstation (Windows NT 4 SP5 und Excel 97) wurden
während dem Speichern-Vorgang 548 Zugriffe auf die Windows Registry vorgenommen. Die
Zugriffe standen praktisch ausnahmslos im Zusammenhang mit der Recent File List (MRU/Most
Recently Used).
Anmerkung des Autors
Zu meiner Überraschung stellte ich fest, dass beim Speichern meiner
Testmappe verschiedene Registry-Zugriffe vorgenommen wurden, die meiner Meinung nach
schwer nachvollziehbar sind. So protokollierte das von mir eingesetzte
Überwachungsprogramm "NT Registry Monitor" beispielsweise mehrere Zugriffe auf
die 'Recent File List' im Zusammenhang mit der Datei VBEEXT1.OLB (das ist die Datei der
Objektbibliothek "Microsoft Visual Basic for Applications Extensibility"). Dies,
obwohl im VBA-Projekt meiner Testmappe kein Verweis auf diese Datei vorhanden war. Hier
der Log-Eintrag des Registry Monitoring-Programmes:
HKCU\Software\Microsoft\Office\8.0\Excel\Recent
File List\TypeLib\{0002E157-0000-0000-C000-000000000046}\5.0\0\win32\(Default)
"D:\Programme\Gemeinsame Dateien\Microsoft Shared\VBA\VBEEXT1.OLB"
Was läuft beim Schliessen einer Arbeitsmappe ab?
Übersicht der Vorgänge beim Schliessen
| Vorgang | Beschreibung |
| Datei in MRU-Liste eintragen | Beschreibung folgt... |
| Geändert am-Datum der Datei zurücksetzen | Beschreibung folgt... |
Interessante Aktionen
Wenn eine
Mappe geschlossen wird, in der sich nicht gespeicherte Änderungen befinden, so erscheint
die Rückfrage "Änderungen speichern?".
Das
Ereignis Workbook_BeforeClose wird ausgeführt, bevor die Rückfrage
"Änderungen speichern?" erscheint.
Wenn Sie
eine geänderte Mappe nochmal öffnen, erscheint die Hinweismeldung "Arbeitsmappe ist
bereits geöffnet. Beim erneuten Öffnen gehen die Änderungen verloren." Wird diese
Meldung mit OK bestätigt, so wird die Mappe geschlossen und neu geöffnet. Zu beachten
ist hierbei, dass das Workbook_BeforeClose-Ereignis der Mappe nicht ausgelöst
wird.
Reihenfolge der Ereignis- und Auto_Close-Ausführung
1. Workbook_BeforeClose
2. Auto_Close
3. Workbook_BeforeSave
4. Workbook_WindowDeactivate
5. Workbook_Deactivate
Schliessen mit VBA-Makro
Workbooks(1).Close
ActiveWorkbook.Close
ThisWorkbook.Close
ActiveWindow.Close
-> Auto_Close-Makro wird nicht ausgeführt
-> Workbook_BeforeClose-Ereignisprozedur wird ausgeführt
Zugriffe auf die Windows-Registry
Was läuft beim Beenden von Excel ab?
Übersicht der Vorgänge beim Beenden
| Vorgang | Beschreibung |
| MRU-Liste nachführen | Beschreibung folgt... Registry-Einträge in RecentFileList werden aktualisiert. |
| Add-Ins schliessen | Alle geladene Add-Ins
werden entladen. Ausführliche
Informationen über Add-Ins erhalten Sie hier: |
| xlb-Datei aktualisieren | Beschreibung folgt... |
Interessante Aktionen
Wenn
Excel geschlossen wird, während eine Arbeitsmappe geöffnet ist, die noch nicht
gespeicherte Änderungen enthält, so wird die Rückfragemeldung "Änderungen
speichern?" eingeblendet, nachdem das Workbook_BeforeClose-Ereignis des
Add-Ins ausgeführt wurde. Wenn man die Rückfrage mit "Abbrechen" beantwortet,
bleibt das Add-In geöffnet, obwohl die Workbook_BeforeClose-Ereignisprozedur
durchgelaufen ist und Cancel nicht auf True gesetzt wurde.
Das Workbook_BeforeClose-Ereignis
eines Add-Ins wird ausgelöst, bevor das Workbook_BeforeClose-Ereignis der
aktiven Arbeitsmappe ausgelöst wird.
Beenden mit VBA-Makro
Application.Quit
Auto_Close-Makros aller Arbeitsmappen werden ausgeführt
Workbook_BeforeClose-Ereignisprozeduren aller Arbeitsmappen werden ausgeführt
Weitere Informationen
Zusätzliche Informationen über das Beenden von Microsoft Excel mit VBA
erhalten Sie hier:
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
Zugriffe auf die Windows-Registry
Beim Beenden von Microsoft Excel wird - wie auch beim Startvorgang - auf die Windows Registry zugegriffen.
Excel wird beendet ohne dass eine Arbeitsmappe
gespeichert wird
Auf meiner Arbeitsstation (Windows NT 4 SP5 und Excel 97) wurden beim
Beenden von Excel insgesamt 104 Zugriffe auf die Windows Registry durchgeführt.
Der Prozess "Arbeitsblatt kopieren"
Auf den ersten Blick scheint der Prozess "Arbeitsblatt kopieren" nichts mit den anderen hier vorgestellten Prozessen gemeinsam zu haben, da weder Excel gestartet bzw. beendet noch eine Arbeitsmappe geöffnet, gespeichert bzw. geschlossen wird. Dem ist aber nicht so, da etwas genauer betrachtet das Kopieren eines Arbeitsblattes sehr viel mit den anderen Prozesses gemeinsam hat.
Vorgang
Wenn man in Microsoft Excel ein Arbeitsblatt kopiert (mit rechter Maustaste auf das Blattregister klicken und im Kontextmenü den Befehl Verschieben/Kopieren auswählen), erstellt Excel im Speicher ein Tabellenblatt-Dokument im BIFF8-Format. Dieses Dokument ist mit einer als Datei gespeichertem Tabelle identisch, nur dass es nicht auf einen Datenträger sondern direkt in einen von Excel verwalteten Speicherbereich geschrieben wird. Sobald das Arbeitsblatt-Dokument im Speicher angelegt ist, wird es quasi importiert, d.h. der aktuellen Arbeitsmappe hinzugefügt. Bei diesem Vorgang wird es durch die für das "Datei öffnen" zuständige Programmroutine geschleust. Das im Speicher abgelegte Arbeitsblatt-Dokument wird also genau gleich verarbeitet wie eine Exceldatei, die auf einem Datenträger liegt und geöffnet wird.
Hinweis zu VBA
Als VBA-Programmierer haben Sie wahrscheinlich schon mal ein
Arbeitsblatt kopiert, und Sie haben somit die die Copy-Methode des
Worksheet-Objektes benutzt. Wenn Sie eine Kopie eines Arbeitsblatt innerhalb der gleichen
Arbeitsmappe anlegen möchten, schreiben Sie sinngemäss diese Anweisung:
ActiveSheet.Copy ActiveSheet
Wenn man im VBA-Editor ganz genau hinschaut, kann man im Projekt-Explorer beobachten, dass Excel beim Ausführen der obigen Anweisung tatsächlich zuerst eine neue Arbeitsmappe für das kopierte Blatt anlegt und anschliessend die Blattkopie zurück in die ursprüngliche Mappe verschiebt, wobei die neu angelegte Arbeitsmappe geschlossen wird. Der ganze Vorgang dauert gewöhnlich kaum eine Sekunde (je nach Arbeitsblattgrösse, CPU-Geschwindigkeit, Systemressourcen und weiteren Faktoren), kann jedoch andererseits auch sehr lange dauern, wobei sehr viel Arbeitsspeicher benötigt wird und die Prozessorauslastung auf 100 % ansteigt (Anmerkung des Autors: Dieses Problem existiert vor allem in Microsoft Excel 2002. Es wurde im Office XP Service Pack 3 behoben.).
Hier ein ScreenShot des Projekt-Explorers, der diese 'virtuelle' Mappe (der englische Fachausdruck lautet 'memorybased docfile') namens "VBAProject (Mappe2)" zeigt:

Übrigens war die Erstellung der obigen Abbildung gar nicht so einfach. Ich musste feststellen, dass Excel nur wenig Verständnis für mein Vorhaben hatte. Immer wenn ich während des Kopiervorganges die "Print Screen"-Taste drückte, als die Blattkopie noch nicht in die Ursprungsmappe eingefügt war, stürzte Excel komplett ab. Es gelang mir jedoch einen ScreenShot zu erstellen, nachdem die Kopie in die Ursprungsmappe eingefügt war, aber noch bevor die virtuelle Arbeitsmappe aus dem Speicher entfernt wurde.
Diese Behandlung eines zu kopierenden Arbeitsblattes als "virtuelle" Excel-Datei hat viele Vorteile, aber auch ein paar Nachteile (oder besser gesagt Einschränkungen).
Änderung in Excel 2000
Gegenüber Microsoft Excel 97 wurde in Microsoft Excel 2000 eine kleine Änderung vorgenommen. Diese Anpassung ändert zwar nichts am Vorgang "Arbeitsblatt kopieren", sollte aber dennoch nicht ganz ausser Acht gelassen werden, da erstens die Copy-Methode des Worksheet-Objektes betroffen ist und zweitens eine in Microsoft Excel 97 gespeicherte Mappe unter Umständen tatsächlich in Excel 2000 nicht geöffnet werden kann.
Vorteile
- Es wird ein einheitliches Datenformat verwendet, da die Arbeitsblattdaten im von Excel-Dateien verwendeten BIFF8-Format im Speicher abgelegt werden.
- Das Einlesen (bzw. Öffnen) der zwischengespeicherten Daten wird mit der selben Programmroutine durchgeführt, die für das Öffnen von Excel-Dateien verwendet wird. Die Benutzung dieser bereits existierenden Routine erspart die Programmierung einer speziellen "Arbeitsblatt kopieren"-Routine, welche viel redundanten Programmcode enthalten würde.
- Ein individuelles Datenformat für die Kopieren-Funktionalität wäre nur mit grossem Aufwand realisierbar. Man bedenke, dass beim Kopieren eines Tabellenblattes nicht nur Zellinhalte (Daten und Formeln) sondern auch Zellformatierungen, Namen, Diagramme, Bilder, Steuerelemente, AutoFormen, externe Zellverknüpfungen, bedingte Formatierungen, Gültigkeitsregeln und vieles mehr übernommen werden müssen.
- Es ist gewährleistet, dass eine (fast) identische Kopie der Tabelle erstellt wird. So werden beispielsweise auch sämtliche VBA-Prozeduren übernommen, die sich im VBA-Modul des Tabellenblattes befinden (die Blattkopie entspricht allerdings nicht 100 % dem Original, wie Sie unter "Nachteile" nachlesen können).
Nachteile
- Der Kopiervorgang kann unter Umständen, vor allem bei sehr grossen Arbeitsblättern, sehr lange dauern, da die Durchschleusung der Daten durch die Speichern- und Öffnen-Routine zeitintensiv ist.
- Nach dem "Öffnen" der Blattkopie wird die gesamte Arbeitsmappe neu berechnet. Das ist nicht unbedingt als Nachteil zu sehen, da die Neuberechnung sowieso durchgeführt werden muss, d.h. auch wenn nicht die Speichern- und Öffnen-Routine verwendet würden.
- Beim Kopieren werden nicht sämtliche Arbeitsblatt-Eigenschaften berücksichtigt, was bedeutet, dass die Kopie nicht exakt mit dem Original übereinstimmt. Nicht übernommen werden zum Beispiel alle nicht-persistenten Blatteigenschaften wie EnableSelection, EnableCalculation, ScrollArea und andere.
Mögliche Probleme
In seltenen Fällen traten früher (d.h. bevor Microsoft die Fehler behob) sowohl in Excel 97 wie auch in Excel 2000 vereinzelt Probleme auf. Mir sind zwei konkrete Fälle bekannt, die auf die Verwendung der Speichern-/Öffnen-Routinen für das Kopieren von Arbeitsblättern zurückzuführen sind.
Fall
1
Ein Problem trat auf, wenn man in Excel 97 ein Arbeitsblatt kopieren
wollte, welches ein oder mehrere Diagramme enthielt und die Arbeitmappe durch ein
Lese-/Schreibkennwort geschützt war. Die Folge war ein ungültiger Vorgang in Excel mit
anschliessendem Seitenfehler und Beendigung von Excel. Anscheinend versuchte Excel ein
Abbild des zu kopierenden Blattes im Speicher anzulegen, was aber wegen dem Kennwortschutz
der Datei nicht gelang. Da wie oben erwähnt die gleichen Routinen wie für Speichern und
Öffnen von Dateien benutzt werden, forderte vermutlich die Öffnen-Routine irrtümlich
das Datei-Kennwort und merkte nicht, dass eigentlich eine Kopieraktion mittels virtueller
Datei durchgeführt werden sollte, sondern eine auf einem Datenträger liegende Datei zu
öffnen glaubte.
Fall
2
Ein weiteres Problem konnte man beobachten, wenn man in Microsoft Excel 2000 ein
Arbeitsblatt mit vielen Daten (z.B. über 1 Million Datenzellen) zu kopieren versuchte.
Während dem Kopiervorgang erschien in diesem Fall die irreführende Fehlermeldung
"Der Datenträger ist voll" (engl. "The Disk Is Full"). Da fragte sich
wahrscheinlich so mancher Benutzer, was in aller Welt der Datenträger mit dem Anlegen der
Arbeitsblattkopie zu schaffen hat. Ich vermute, dass die Fehlermeldung auftrat, weil die
Speichern-Routine infolge ungenügendem Speicherplatz nicht sämtliche Blattdaten als
virtuelle Datei sichern konnte. Dass es sich dabei um Speicherplatz im Arbeitsspeicher
handelt und nicht um Platz auf einem Datenträger, konnte die Speichern-Routine nicht
unterscheiden und zeigte einfach die Standard-Fehlermeldung.
Weitere Informationen
Zusätzliche Informationen über die Probleme beim Kopieren von
Arbeitsblättern erhalten Sie hier:
XL97: Seitenfehler
beim Kopieren eines Tabellenblattes
http://support.microsoft.com/?scid=kb;de;172263
XL97: Page Fault
Copying Worksheet That Contains a Chart
http://support.microsoft.com/?scid=kb;en-us;172263
XL2000:
Fehlermeldung "Der Datenträger ist voll" beim Kopieren
http://support.microsoft.com/?scid=kb;de;223976
XL2000: "The
Disk Is Full" Error Copying Very Large Worksheet
http://support.microsoft.com/?scid=kb;en-us;223976
XL2002: The
CPU Usage Is 100 Percent When You Copy a Large Sheet in Excel
http://support.microsoft.com/?scid=kb;en-us;Q324051
Die Back Seeking-Technik zum Lesen und Schreiben von Dateien
Die Technik, die Excel zum Lesen und Schreiben von Dateien verwendet, unterscheidet sich von den von anderen Office-Programmen verwendeten Techniken.
Excel benutzt als eines der wenigen Programmen zum Lesen/Schreiben von Dateien eine spezielle Technik genannt "Back Seeking". Durch dieses spezielle I/O-Verfahren wird eine Datei nicht sequentiell gelesen/geschrieben sondern in einzelnen Records, wobei die Records nicht in ihrer eigentlichen Reihenfolge verarbeitet werden müssen. So kann eine Arbeitsmappe beispielsweise geöffnet werden, indem zuerst der erste Dateirecord eingelesen wird, dann der fünfzehnte Record angespruchen und eingelesen wird, danach zurück der dritte Record angesprungen und eingelesen wird und so weiter.
Speichern und Öffnen Sie insbesondere grössere Exceldateien nicht von ausfallgefährdeten Netzwerken oder problematischen Festplatten. Damit sind insbesondere alte Festplatten mit häufigen Hardware- bzw. CRC-Fehlern gemeint. Bei einem Netzwerkausfall oder einer Festplatte mit ungenau justierten Lese-/Schreib-Köpfen erhöht sich das Risiko, dass der Back Seeking-Vorgang unterbrochen wird oder die einzelnen Records nicht exakt angesprungen werden können. Das gleiche gilt auch für Diskettenlaufwerke (Floppy Disc).
Zum Lesen und Schreiben von Dateien wird in Microsoft Excel generell die Back Seeking-Technik benutzt. So richtig zum Einsatz kommt die Technik unter anderem beim Öffnen und Speichern von Arbeitsmappen mit einem dualen Dateiformat, beispielsweise dem Format "Microsoft Excel 97-2000 & 5.0/95-Arbeitsmappe". Wenn Sie in Excel 2000 eine Mappe mit diesem Format speichern, werden diese vier Vorgänge durchgeführt:
1. Die Excel 97/2000-Sektion der Arbeitsmappe wird geschrieben.
2. Die Excel 5.0/95-Sektion der Arbeitsmappe wird mit der Excel 97/2000-Sektion synchronisiert, sodass beide Sektionen die gleichen Daten enthalten.
3. Die Excel 5.0/95-Sektion der Arbeitsmappe wird geschrieben.
4. Die Arbeitsmappe wird gespeichert.
Wenn die Mappe in Excel 2000 geöffnet wird, so wird nur die Excel 97/2000-Sektion eingelesen. Wenn Sie Änderungen in der Arbeitsmappe vornehmen und dann speichern, werden alle Änderungen der Excel 97/2000-Sektion in die Excel 5.0/95-Sektion kopiert und anschliessend die Mappe gespeichert.
Ausschnitt aus einer Beschreibung von Microsoft
| The method that is
used when Microsoft Excel reads and writes files Microsoft Excel uses a technique called "back seeking" when reading and writing files. "Back seeking" means that when Microsoft Excel opens a file and reads from it, it does not necessarily read or write in a sequential manner. It may start at the first record in the file, jump to the fifteenth record, go back to the third record, and so on. This "jumping back" part may be what is causing the intermittent corruption of files especially when you are saving to a floppy disk drive. Microsoft Excel is one of a few programs that uses this technique when reading and writing files. Often these disk problems appear to exist only in Microsoft Excel. Having the floppy disk drive heads realigned should correct this problem. |
Unterschiedliches Öffnen einer Arbeitsmappe
An dieser Stelle möchte ich auf ein paar interessante Unterschiede eingehen, die es bezüglich der Art und Weise gibt, wie eine Datei geöffnet wird.
Wichtig ist auf jeden Fall die Erkenntnis, dass eine Datei - in unserem Fall eine xls-Datei - je nach Auslösen des Öffnen-Vorganges nicht auf die gleiche Art und Weise geöffnet wird. Unterschiede ergeben sich in diesen (und evtl. weiteren) Situationen:
Eine Arbeitsmappe wird in Excel geöffnet (Dialogfenster "Datei öffnen", Liste der zuletzt verwendeten Dateien oder VBA-Code "Workbooks.Open").
Eine Arbeitsmappe wird über den Windows-Explorer geöffnet (Datei markieren und Menübefehl "Öffnen", Doppelklick oder Enter-Taste).
Eine Arbeitsmappe wird über den Internet Explorer geöffnet
Eine Arbeitsmappe wird über einen Hyperlink geöffnet (z.B. Hyperlink in einem Word-Dokument).
When a source data workbook is linked, the link is established based on the way that the workbook was opened. If the workbook was opened over a mapped drive, the link is created by using a mapped drive. The link remains that way regardless of how the source data workbook is opened in the future. If the source data file is opened by a UNC path, the link does not revert to a mapped drive, even if a matching drive is available. The link remains a UNC link regardless of how the file is opened in the future. If you have both UNC and mapped drive links in the same file, and the source files are open at the same time as the destination file, only those links that match the way the file was opened will react as hyperlink. Specifically, if you open the file through a mapped drive and change the values in the source file, only those links created to the mapped drive will update immediately.
The link displayed in Excel may appear differently depending on how the workbook was opened. The link may appear to match either the root UNC share or the root drive letter that was used to open the file.
Öffnen in Micrsoft Excel
Öffnen über Windows-Explorer
XL2002: Links in OLE Object Do Not Automatically
Update When You Open a File in Windows Explorer
http://support.microsoft.com/?scid=kb;en-us;812647
» Behoben im Office XP Service Pack 3.
Öffnen über Internet Explorer
XL2002: Combo Box Values Revert to Defaults After
Another Combo Box Is Used
http://support.microsoft.com/?scid=kb;en-us;811541
» Behoben im Office XP Service Pack 3.
Öffnen über Hyperlink
XL2002: Combo Box Control on a Worksheet Displays
Its Original Value Instead of the New Value
http://support.microsoft.com/?scid=kb;en-us;315199
Hier ein interessanter Knowledge Base-Artikel zu diesem
Thema:
How documents are opened from a Web site in
Office 2003
http://support.microsoft.com/?scid=kb;en-us;838028
Ein Windows 2000-Computer, auf dem Microsoft
Office-Programme ausgeführt werden, die Hyperlinks verwenden, um auf Ressourcen auf einem
anderen Computer zuzugreifen, arbeitet möglicherweise langsamer als vergleichbare
Computer mit früheren Versionen von Windows.
Wenn Sie ein Hyperlink einsetzen, um eine Datei zu öffnen, die nicht auf dem lokalen
Computer gespeichert ist, kann das Öffnen dieser Datei mehr Zeit in Anspruch nehmen als
bei früheren Versionen von Windows. Dieses Verhalten tritt nur in Office-Programmen auf,
die über Hyperlinks auf Remotedateien zugreifen. Die Informationen aus diesem Artikel
gelten nicht für die Geschwindigkeit von Dateioperationen über das Netzwerk oder auf dem
lokalen Computer; sie beziehen sich ausschließlich auf das Verfahren, das Windows
einsetzt, um über Hyperlinks Remotedateien zu öffnen.
Dieses Verhalten tritt auf, weil Windows 2000 die Systemfunktion "GetLongPathNameW" aufruft und nicht die in "Ole32.dll" eingebaute Funktion für Microsoft Windows NT 4.0.
Weitere Informationen
Langsamer Zugriff auf Dateien
mit Office-Programmen
http://support.microsoft.com/?scid=kb;de;260943
Slow Performance Accessing Files May Slow Office Programs
http://support.microsoft.com/?scid=kb;en-us;260943
Starten von Excel im abgesicherten Modus (Excel 2002)
Der abgesicherte Modus gewährleistet die Benutzung eines Office-Programmes, das während dem Start auf ein Problem gestossen ist. Wenn ein Problem beim Start auftritt, versucht das Office Programm dieses Problem zu lösen oder isoliert es, sodass das Office Programm trotz dieses Problems erfolgreich gestartet werden kann. Der abgesicherte Modus ist in der Titelleiste des Office Anwendungsfensters zu erkennen (Hinweis "Abgesicherter Modus").
Hinweise für VBA-Programmierer
Wenn Sie in einem VBA-Makro ermitteln möchten, ob das Office-Programm im abgesicherten Modus läuft, können Sie die Beschriftung des Anwendungsfensters abfragen (als Beispiel: Abfrage im Direktfenster des VBA-Editors):
?Application.Caption
?Right(Application.Caption, 19) = "Abgesicherter Modus"
Microsoft Excel - Mappe1 - Abgesicherter Modus
Microsoft Excel - Abgesicherter Modus
Automatisch aktivierter abgesicherter Modus
Während dem Startvorgang überprüft das Programm nach Problemen wie beispielsweise nach einem nicht startbaren Add-In oder Programmmodul, oder nach beschädigten Ressourcen, Dateien, Registryeinträgen und Vorlagen. Eine Hinweismeldung wird beim nächsten Programmstart angezeigt, welche das Problem beschreibt und fragt Sie, ob die problematische Programmteil bzw. das fehlerhafte Element deaktiviert werden soll.
Eine Liste mit den deaktivierten Elementen befindet sich auf dem Dialogfenster "Deaktivierte Elemente" (Menübefehl Hilfe/Info bzw. Über Microsoft <Programmname>. In diesem Dialog können Sie deaktivierte Elemente wieder aktivieren. Die Aktivierung kann unter Umständen dazu führen, dass das Office-Programm neu gestartet, ein Add-In neu installiert oder eine Datei neu geöffnet werden muss. Beachten Sie, dass die Aktivierung eines Elementes nicht zwangsläufig bedeutet, dass das Problem behoben ist. Dies gilt insbesondere für beschädigte Dateien: Die Tatsache, dass eine Datei aktiviert ist, garantiert nicht, dass Excel die Datei öffnen kann. Die Datei kann weiterhin schwerwiegende Fehler verursachen. Ein aktiviertes Element kann beim nächsten Start durch Excel wieder deaktiviert werden.
Siehe auch MS KB-Artikel:
Fehlermeldung "Das Dokument verursachte
einen schwerwiegenden Fehler, als es zuletzt geöffnet wurde."
http://support.microsoft.com/?kbid=286017
Durch Benutzer aktivierter abgesicherter Modus
Jedes Office-Programm von Microsoft Office XP kann im abgesicherten Modus gestartet werden, indem während dem Start die Strg-Taste gedrückt wird oder der Startparameter "/safe" verwendet wird (Anmerkung des Autors:
The following restrictions apply when you open a program in user-initiated Office Safe Mode. (Some items listed below do not apply to all Office programs.)
Verwandte Themen |
|
|
|
Zuletzt aktualisiert am 07.02.2006 / 17:30 Uhr
Zuletzt kontrolliert am 01.01.2009 / 10:00 Uhr
© 2002-2009 by Philipp von Wartburg, Schweiz