Allgemeines über Fragen und Antworten
[01] Lassen sich mit Excel 2000 gespeicherte Arbeitsmappen problemlos in Excel 97 öffnen?
[02] Kann man eine Arbeitsmappe absichtlich zerstören?
[03] Lässt sich eine Arbeitsmappe modifizieren, sodass sie nie mehr gespeichert werden kann?
[04] Warum treten bei Exceldateien häufiger Probleme auf als bei anderen Dateien?
[05] Wozu sind duale Dateiformate gut (z.B. "Excel 97 & 5.0/95-Arbeitsmappe)"?
[06] Kann man eigene
Excel-Startparameter definieren? ![]()
[07] Was kann ich tun, damit mein Excel 97/2000 VBA-Projekt nicht geöffnet werden kann?
[08] Gibt es Richtlinien bezüglich Namensgebung von Dateien und Ordnern?
[10] Welche Datei- und Verzeichnis-Schlüsselwörter existieren in VBA?
[11] Wie heissen die Registry-Einträge für Datei-, Verzeichnis- und vergleichbare Informationen?
[12] Wie wird verhindert, dass beim Öffnen/Schliessen einer Mappe VBA-Code ausgeführt wird?
[13] Wie wird der Dateityp im Öffnen-Dialog standardmässig auf "Alle Dateien (*.*)" gesetzt?
[14] Wie findet Excel ein zu startendes Makro, das sich in einer anderen Datei befindet?
[15] Welche Parameter stehen zum Starten von Excel zur Verfügung?
[16] Wo befinden sich die Exceldateien mit den benutzerspezifischen Einstellungen?
[17] Wie wird verhindert, dass eine Mappe geöffnet aber nicht gespeichert werden kann?
[18] Welche Dateitypen können von Excel erkannt werden?
[19] Welchen Zweck besitzen Dateien mit den Endungen mso, box und dergleichen?
[20] Wozu sind die von der VBE automatisch generierten exd- und twd-Dateien gut?
[21] Wie gross darf eine Arbeitsmappendatei maximal sein?
[22] Welche Zugriffsrechte (Permissions) muss ein Benutzer für Excel-Dateien besitzen?
[23] Was sollte man über XML-Dateien wissen und wo findet man diese Informationen?
[24] Warum
wird beim Klicken eines Hyperlinks zu einer anderen Datei die Mappe geschlossen? ![]()
[25] Was kann ich tun, wenn beim Öffnen mehrerer Mappen nicht alle Formeln berechnet werden?
[26] Wie kann man feststellen, ob eine Excel-Anwendung/-Instanz noch antwortet bzw. nicht hängt?
[28] Wo findet man Informationen über Excel-Dateikonvertierung?
[29] Wie kann ein zum Programmstart benötigtes OCX automatisch registriert werden?
[31] Kann
es sein, dass die Ausführung von Auto-Makros mittels RunAutoMacros nicht richtig
funktioniert? ![]()
[32] Was bedeuten die Begriffe "Saved Dirty" und "UnSaved Dirty"?
[33] Wo finde ich Informationen über Zugrifftechniken für sequentielle und binäre Dateien?
[34] Wie kann man die
Datenquelle einer Pivot-Tabelle ändern? ![]()
[35] Wie findet man am einfachsten das Temp-Verzeichnis heraus?
[36] Kann man von allen Dateien mit benutzerspezifischen Einstellungen Sicherheitskopien anlegen?
[37] Wie
kann ich herausfinden, ob eine Datei ein Kennwort verwendet, ohne sie in Excel öffnen zu
müssen? ![]()
[38] Weshalb erscheint "Kann Makro <Pfad/Datei/Makro> nicht finden" obwohl das Makro existiert?
[39] Was bedeutet der Ausdruck "round-trip" im Zusammenhang mit Datei öffnen und speichern?
[40] Wieso kann eine freigegebene Mappe manchmal nicht geöffnet oder gespeichert werden?
[41] Wo finde ich Informationen über Dateitypen und Dateinamenerweiterungen (File Associations)?
[42] Wie
findet man heraus, von welchem Excel-Benutzer eine bestimmte Mappe gerade bearbeitet wird?
![]()
[43] Kann
eine mit Schreibschutz geöffnete Mappe nachträglich auf Schreib-Lese-Zugriff umgestellt
werden? ![]()
[44] Warum wird der Vorgabe-Dateiname bei "Application.GetSaveAsFilename" in Hochkommas angezeigt?
[45] Wie kann ich die Sperrung des "Speichern unter"-Menübefehles ohne VBA-Makro umgehen?
[46] Kann es passieren, dass man eine sehr grosse Arbeitsmappe nicht mehr speichern werden kann?
[47] Welchen Zweck besitzt der MIME-Typ 'application/vnd.ms-excel' für Exceldateien?
[48] Wieso werden externe Verknüpfungen trotz Verneinen von "Verknüpfungen aktualisieren?" aktualisiert?
[50] Wie kann ich einstellen, welches Programm beim Öffnen einer Datei gestartet wird?
[51] Warum stimmt das Erstellungsdatum der Excel-Datei nicht mit demjenigen der Excel-Mappe überein?
[52] Kann man nach einem Excel-Absturz aus liegengebliebenen Temp-Dateien brauchbare Daten retten?
[54] Muss ich ActiveX-Controls in VBA-Projekten beim Wechsel auf eine neuere Excel-Version upgraden?
[55] Wie lässt sich mit VBA eine Anwendung starten und dabei ihre Prozess-Basispriorität bestimmen?
[56] Kann
man die am linken Fensterrand der Office 2000-Dateidialoge angezeigten Links/Symbole
ändern? ![]()
[58] Was sind "Office Server Extensions (OSE)"?
[59] Warum ersetzt der Update ein Add-In nicht, trotz neuerer Add-In-Version im Updatepaket?
[60] Wie kann ich eine Datei mit VBA verschieben ohne das FileSystemObject-Objekt zu verwenden?
[61] Kann man eine irrtümlich gelöschte Excel-Arbeitsmappe zurückholen?
[62] Wie
kann man mit VBA am einfachsten einen Dateidialog zum Löschen einer Datei programmieren?
![]()
[63] Wieso löscht Excel die von meinem Add-In erzeugten Registry-Einträge unter "Init Commands"?
[64] Kann man mit VBA einen
Systemprozess abschiessen? ![]()
[65] Wie kann ich einen Dialog der Windows Systemsteuerung mit VBA öffnen?
[66] Gibt es eine Möglichkeit, Datum und Zeit automatisch in eine Logdatei einzutragen?
[67] Warum sehe ich nach dem Start von Excel keine Menü- und Symbolleisten?
[68] Wie
verhindert man, dass bei neuen Verknüpfungen der Text "Verknüpfung mit"
hinzugefügt wird? ![]()
[69] Wie kann ich mit VBA die
aktive Arbeitsmappe löschen? ![]()
[71] Wird eigentlich VBA-Code nach Schliessen der Arbeitsmappe (Close-Methode) noch ausgeführt?
[74] Welche
Möglichkeiten gibt es für das Abfragen und Ändern von Dokumenteigenschaften mittels
VBA? ![]()
[75] Wie
kann man mit VBA eine beliebige Datei für andere Benutzer und Programme sperren? ![]()
[76] Was muss ich beim Erstellen eines eigenen Add-Ins beachten?
[78] Warum ist eine Arbeitsmappendatei plötzlich grösser, obwohl keine Änderungen vorgenommen wurden?
[79] Welche Codeprozeduren laufen beim Öffnen einer Arbeitsmappe ab?
[81] Was sollte man beim Upgrade von Excel 2001 (Macintosh) auf Excel X (Macintosh) beachten?
[82] Wie kann ich eine Mappe schliessen, auf die ein Verweis in einem anderen VBA-Projekt existiert?
[83] Wie
starte ich am einfachsten den Windows Explorer direkt aus Excel heraus? ![]()
[85] Welche
Hintergrund-Informationen gibt es über die xlb-Datei von Excel? ![]()
[86] Kann man Microsoft Excel auch starten, ohne dass das Anwendungsfenster erscheint?
[88] Wie lautet der genaue Name der xlb-Datei und wo ist sie abgelegt?
[90] Kann man verhindern, dass eine Excel 97-Arbeitsmappe mit einer neueren Excelversion geöffnet wird?
[91] Kann man verhindern, dass eine Excel 2002-Arbeitsmappe mit Excel 97 oder Excel 2000 geöffnet wird?
[92] Lässt
sich eine Dateiliste auf einem Tabellenblatt auch ohne VBA erstellen? ![]()
[93] Wie
kann der Name des Excel-Benutzers ohne VBA in eine Zelle eingetragen werden? ![]()
[95] Kann
man die Makroausführung erzwingen, trotz Makrovirus-Schutz und hoher Sicherheitsstufe?
![]()
[96] Wie lässt sich Excel mit einer bestimmten Fenstergrösse und -position starten?
[97] Wie
öffnet man eine Arbeitsmappe aus dem Web in Excel statt im Browserfenster? ![]()
[98] Wie kann ich mit
VBA den Excel-Startordner XlStart herausfinden? ![]()
[100] Wie erreicht man, dass eine Arbeitsmappe aus dem Web als Datei gespeichert und nicht geöffnet wird?
[102] Wie kann man eine einzelne Symbolleiste auf die Arbeitsstationen vieler Benutzer kopieren?
[103] Welche Möglichkeiten gibt es zum Verkleinern einer Arbeitsmappendatei?
[104] Wie kann man jederzeit den gesamten Dateipfad der aktiven Arbeitsmappe sehen?
[105] Wie speichert man mehrere Zellbereiche als eine einzige HTML-Datei?
[106]
Gibt
es eine Möglichkeit, alle Diagramme einer Mappe als GIF-Dateien zu speichern (ohne VBA!)?
![]()
[107] Wie kann man einen Zellbereich aus einer geschlossenen Arbeitsmappe kopieren?
[109] Warum findet GetObject eine laufende Excel-Instanz nicht?
[110]
Wie
kann man den Windows-Dialog "Öffnen mit" aufrufen und eine Datei übergeben?
![]()
[111]
Kann man über
eine Schaltfläche einen Excel Restart auslösen? ![]()
[113]
Gibt
es eine Möglichkeit, die Ausführung eines Makros im Makro-Dialog zu sperren? ![]()
[114] Wer weiss das Kennwort einer kennwortgeschützten Arbeitsmappe?
[115]
Wie
stellt man im Makro aufzeichnen-Dialog standardmässig "Persönliche
Makro-Arbeitsmappe" ein? ![]()
[116]
Kann
die Liste der zuletzt geöffneten Dateien ausgeblendet werden, ohne sie zu löschen? ![]()
[117]
Wie
werden Gitternetzlinien für neue Mappen unterdrückt, ohne eine Vorlagemappe zu
verwenden? ![]()
[118] Gibt es Objektbibliotheken oder DLLs mit Funktionen, die besser als diejenige von VBA sind?
[119] Wie kann ich Titel und Beschreibung eines installierten Add-Ins herausfinden?
[120] Welche Dialogfenster von Windows und Excel kann man mit VBA-Programmcode öffnen?
Allgemeines über Fragen und Antworten
Auf dieser Seite werden Fragen und Antworten vorgestellt, die sich mit dem Thema "Dateien, Verzeichnisse und Programme" und verwandten Themen beschäftigen. Die Antworten sind in der Regel sehr ausführlich formuliert, sodass auch eher ungeübte Excel-Benutzer die beschriebenen Lösungen und Vorgehensweisen problemlos verstehen und umsetzen können. Nehmen Sie sich genügend Zeit zum Lesen der Beiträge, denn Sie werden viele interessante, nützliche Informationen entdecken, die Sie vorher vermutlich noch nicht kannten; es ist viel Know-how von Excel-Profis enthalten. Nicht alle aufgeführten Fragen wurden tatsächlich an mich gestellt beziehungsweise nicht mit exakt dem hier wiedergegebenen Wortlaut. Einige Informationen habe ich in eine Frage und die entsprechende Antwort verpackt, weil sich bestimmte Sachverhalte auf diese Art und Weise schlicht einfacher und verständlicher formulieren lassen.
Besonders lesenswerte Beiträge
Natürlich sind alle auf dieser Seite vorgestellten Fragen und
Antworten interessant. Bei den im Inhaltsverzeichnis mit einem animierten Stern
gekennzeichneten Fragen handelt es sich jedoch um besonders lesenswerte Beiträge.
Beiträge für spezifische
Excelversionen
Die Beiträge beziehen sich auf alle gängigen
Excel-Versionen, ausser die betroffene Excel-Version ist explizit angegeben. Dies erkennen
Sie an dieser Markierung am Anfang eines Beitrages:
Je nach betroffener Excelversion steht 'Microsoft Excel 97', 'Microsoft Excel 2000', 'Microsoft Excel 2002' oder 'Microsoft Excel 2003', beziehungsweise 'Microsoft Excel 98 for Mac', 'Microsoft Excel 2001 for Mac', 'Microsoft Excel X for Mac' oder 'Microsoft Excel 2004 for Mac' bei den Excel für Macintosh-Versionen.
Suchen von Informationen /
Tipps zur Navigation
Da die Beiträge nicht nach Themen gruppiert bzw. sortiert
sind und Sie eine bestimmte Antwort suchen, verwenden Sie am besten die Suchen-Funktion
Ihres Webbrowsers (gewöhnlich über den Menübefehl Bearbeiten/Suchen
oder Strg+F aufrufbar).
Zum Verschieben des Seiteninhaltes nach oben und nach unten können Sie wie üblich den Schiebebalken am rechten Fensterrand, das Mausrad oder die mittlere Maustaste benutzen. Noch einfacher geht es über die Tastatur: Mit der Bild Auf-Taste (Page Up) blättern Sie eine Seite nach oben (sie können dazu auch die Leerschlag-Taste benutzen); mit der Bild Ab-Taste (Page Down) wird eine Seite nach unten geblättert (oder mit Umschalt+Leertaste).
Mit der Tastenkombination Alt+Pfeil rechts springen Sie jeweils zur vorhergehenden Textstelle bzw. Seite (das geht auch mit der Rücktaste/Backspace); mit Alt+Pfeil links rufen Sie die nachfolgende Textstelle bzw, Seite auf (oder mit Umschalt+Rücktaste).
Ausdrucken der Beiträge
Selbstverständlich dürfen Sie diese
Internetseite ausdrucken. Beachten Sie bitte, dass dazu über 120 Seiten A4-Papier
benötigt werden.
[01] Lassen sich mit Excel 2000 gespeicherte Arbeitsmappen problemlos in Excel 97 öffnen?
Grundsätzlich ja, denn Microsoft Excel 97 verwendet das gleiche Dateiformat für Arbeitsmappen wie Excel 2000 (und auch Excel 2002 sowie Excel 98 für Macintosh). Allerdings muss man berücksichtigen, dass Excel 2000 ein paar Features bietet, die in Excel 97 nicht existieren. Das bedeutet, dass eine mit Excel 97 geöffnete Arbeitmappe unter Umständen nicht alle in der Datei gespeicherten Funktionalitäten anbieten bzw. berücksichtigen kann.
Speichern einer Arbeitsmappe in Excel 97 bzw. Excel 98
Beschreibung folgt...
The Office 2000 binary file format is the same as the binary file format used in Office 98. For example, an Excel 98 user can open, read, and edit a workbook saved as an Excel 2000 file, and vice versa, without any conversions. Although advanced features and formatting specific to Office 2000 files are not visible when the files are opened in the Office 98 application, the underlying data is still available when the file is opened again in Office 2000.
Office 98 Macintosh Edition users are accustomed to the convenience of saving their files in HTML format, which allows them to publish a snapshot of the file and post it on a Web site. In Office 2000, HTML is a companion file format to the binary format. This gives you another way to work with HTML documents - documents that can be viewed on a Macintosh with Internet Explorer 4.x.
Although Office 98 programs can open any Office 2000 file without a converter, certain formatting options available in Office 2000 are not available in Office 98, because Office 98 does not recognize these features.
The following tables describe the Office 2000 features that are not supported in Office 98 and what happens when a file is opened in Office 98.
When Microsoft Excel 2000 users save workbooks in Excel 97-2000 format, all worksheet and chart data, formatting, macros, and other Excel 2000 features are preserved in Excel 98 (Macintosh) and Excel 97 (Windows). However, if an Excel 98 or Excel 97 user saves the workbook in an earlier file format, some formatting and data might be lost.
System Policy Tip
You can use a system policy to define the default value for the Save as type
option in the Save As dialog box (File menu). In the System Policy Editor,
set the Microsoft Excel 2000\Tools | Options\Transition\Save Excel files as
policy. For more information about the System Policy Editor, see Using the System Policy
Editor.
The following table describes new features in Excel 2000 that might affect your data or formatting in Excel 97 and Excel 98.
| Excel 2000-Feature | Beschreibung | Resultat im Excel 97-/Excel 98-Format |
| External data ranges | Data ranges extracted from external data sources can be automatically refreshed, formatted, filtered and sorted. | Auto-refresh, column formatting, filtering, and sorting do not work. |
| Indented format PivotTable reports | Allows you to create professional-looking database-style reports with various levels of indentation. | If edited, reports change to nonindented layout but maintain character and cell formatting. |
| OLAP PivotTable and PivotChart reports | Enables you to create PivotTable views against any OLE DB for OLAP provider. | Appear as read-only. |
| PivotChart reports | Charts can be linked to data views in a Pivot-Table. | Appear as regular charts. Multiple-level category labels are modified, and value axis display units convert to literal values. |
Weitere Informationen
Detaillierte Informationen über die verfügbaren Dateitypen und das Excel-Dateiformat BIFF finden Sie hier:
Weitere Informationen |
|
Weitere Dokumente und Artikel finden Sie hier:
| Dokument / Artikel | Link |
| Compatibility Issues with Office 98 Macintosh Edition | http://support.microsoft.com/?scid=kb;en-us;234300 |
| Use Workbooks in Different Versions of Microsoft Excel | http://office.microsoft.com/assistance/2000/exfiles.aspx |
| File Sharing in a Heterogeneous Office Environment (Office 2000) | |
| Converting Files Between Different Office Versions | |
| Microsoft Office File Format Migration | http://www.microsoft.com/office/techinfo/enterprisezone/itcolumn02.asp |
[02] Kann man eine Arbeitsmappe absichtlich zerstören?
Ja, das kann man tatsächlich. Es gibt mehrere Wege eine Arbeitsmappe zu zerstören, wobei an dieser Stelle die "harten" Methoden wie beispielsweise die direkte Dateimanipulation mittels File-/Hex-Editor nicht näher betrachtet werden, weil sich mit einem Hex-Editor, z.B. dem Freeware Tool FX Edit 2.7 von Gregory Braun, jede beliebige Datei zerstören lässt. Viel interessanter sind diejenigen Möglichkeiten, die sich in Microsoft Excel zum Zerstören von Arbeitsmappen anbieten.
Das wohl grösste Risiko stellt das Ändern der Codename-Eigenschaft von Arbeitsblättern und Codemodulen eines VBA-Projektes dar. Die Abfrage der Eigenschaft Codename ist jedoch absolut ungefährlich. Sehr gefährlich ist dagegen die direkte Verwendung des Codenamens zum Aufrufen von Methoden sowie das Ändern des Codenamens mittels VBA während der Ausführungszeit des VBA-Programmcodes.
Anmerkung des Autors
Das Tool FxEdit können Sie auf der Download-Seite
herunterladen:
Möglichkeiten für das Zerstören einer Arbeitsmappe
Arbeitsblatt löschen und dann Arbeitsmappe als E-Mail versenden
XL97:
Fehler beim Öffnen einer versendeten Arbeitsmappe in E-Mail
http://support.microsoft.com/default.aspx?scid=kb;de;D38158
XL97: Invalid Page Fault Opening Workbook Sent in E-mail
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q192061
Arbeitsblatt umbenennen, Codename ändern und dann speichern
XL97:
Datei lässt sich nach Ändern des Blatt-Codenamens nicht öffnen
http://support.microsoft.com/default.aspx?scid=kb;de;D37485
XL97: Unable to Open File After Changing Code Name of Sheet
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q172500
Arbeitsblatt in "dir" umbenennen und dann speichern
XL97:
Fehlermeldung "Ungültiges Datenformat" beim Öffnen einer Arbeitsmappe (dir)
http://support.microsoft.com/default.aspx?scid=kb;de;D37617
XL97: Error Message "Invalid Data Format" Opening Workbook
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q193650
Arbeitsblatt über Objektname löschen und dann speichern
XL2000:
Fehler beim Öffnen einer Arbeitsmappe mit Makros
Fehlermeldung "Ungültiger Vorgang", "Seitenfehler",
"Anwendungsfehler" oder "Zugriffsverletzung"
http://support.microsoft.com/default.aspx?scid=kb;de;D41124
XL2000: Error Opening Workbook That Contains Macro
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q199212
XL2000: Workbook Corrupted If You Delete, Copy, and
Save in Macro Procedure
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q265305
Dieses Problem wurde in Microsoft Office 2000 Service
Pack 2 behoben.
XL97: Cannot Open File After Pasting More Than 2000
Characters
http://support.microsoft.com/default.aspx?scid=kb;en-us;190248
Dieses Problem wurde in Microsoft Office 97 Service
Release 2 behoben.
[03] Lässt sich eine Arbeitsmappe modifizieren, sodass sie nie mehr gespeichert werden kann?
Einleitung
Durch Ausnützen eines Bugs im VBA-Editor bzw. im Excel-Objektmodell lässt sich eine Arbeitsmappe so manipulieren, dass sie zwar problemlos geöffnet werden kann, das Speichern der Mappe jedoch nie mehr möglich ist! Auch das "Speichern unter" ist nicht mehr möglich. Nachdem man die Mappe manipuliert hat, gibt es allerdings kein Zurück mehr. Mit anderen Worten: Das Rückgängig machen des ausgenützten Bugs bzw. die Wiederherstellung der Mappe ist nicht möglich. Daher sollte vor der Manipulation unbedingt eine Kopie der Mappe erstellt werden.
Arbeitsmappe manipulieren
Nun zur Frage, wie die Arbeitsmappe manipuliert werden kann. Zuerst aber ein paar Informationen zum in der Einleitung erwähnten Bug.
Bekanntlich kann im Eigenschaften-Fenster des VBA-Editors unter anderem der Name eines Projektmoduls geändert werden. Auch die Arbeitsmappe selbst und alle Arbeitsblätter werden aus Projektsicht Module genannt. Jedes Modul besitzt einen Namen - den sogenannten Codename. Dieser steht im Eigenschaften-Fenster gewöhlich zuoberst in der Liste als Eintrag "(Name)".

Abbildung: Eigenschaften-Fenster mit Codename
Tippt man für den Codenamen eines Arbeitsblattes das Wort "dir" ein, so wird dieser neue Name anstandslos vom VBA-Editor akzeptiert, was aber nicht der Fall sein dürfte. Der VBA-Editor müsste den Namen als ungültig ablehnen.
Es gibt zwei mögliche Gründe, weshalb "dir" nicht erlaubt ist. Meiner Meinung nach ist der zweite Grund der wahrscheinlichere.
Grund 1
Der Begriff "dir" ist ein von VBA verwendeter Bezeichner für
die Dir-Funktion, d.h. ein geschütztes Schlüsselwort. Die Änderung eines
Tabellenblattnamens in "dir" hat Excel-intern fatale Folgen. So gerät
beispielsweise die im Speicher verwaltete Datenstruktur des VBA-Projektes gänzlich
durcheinander. Ich nehme an, dass der VBA Component Manager mit dem Modulnamen
"dir" nicht umgehen kann.
Weitere Informationen über den VBA Component Manager finden Sie hier:
Weitere Informationen |
|
Grund 2
Der Begriff "dir" ist ein Schlüsselwort in dem von
Arbeitsmappen verwendeten Dateiformat BIFF8. In einem mit BIFF8 formatierten Structured
Storage File gibt es mehrere sogenannte Storages und Streams. Tatsächlich existiert im
Storage namens "VBA" ein Stream mit der Bezeichnung "dir". Ich nehme
an, dass der Blattname "dir" zu einem Problem führt, da im gleichen Storage
"VBA" auch die Streams der Arbeitsblätter abgelegt sind (sofern sie
VBA-Programmcode enthalten).
Nach der Änderung des Tabellenblattnamens in "dir" sieht die Projektstruktur wie folgt aus:

Abbildung: VBA-Projekt im Projekt-Explorer
Weitere Informationen über das BIFF-Dateiformat finden Sie hier:
Weitere Informationen |
|
Fehlermeldung beim Öffnen des Tabellenblatt-Moduls und anderen Vorgängen
Nachdem Sie die Arbeitsmappe manipuliert, gespeichert, geschlossen und neu geöffnet haben, können Sie versuchen, das Codemodul des Tabellenblattes "dir" im VBA-Editor zu öffnen. Sobald Sie das tun, erhalten Sie diese Fehlermeldung:

Abbildung: Fehlermeldung des VBA-Editors "Ungültiges
Datenformat"
Weitere Informationen über diese und andere Fehlermeldungen finden Sie hier:
Weitere Informationen |
|
Muster einer manipulierten Arbeitsmappe
Damit Sie sich ein Bild einer mittels Dir manipulierten Arbeitsmappe machen können, habe ich eine kleine Mustermappe erstellt, die Sie hier herunterladen können:
|
Download von Mustermappe "Defekte-Mappe.xls" |
Defekte-Mappe.zip (6 KB, komprimierte zip-Datei)
Die Exceldatei wurde auf Viren geprüft und enthält keine Makros. Beim Öffnen, Speichern oder Schliessen der Arbeitsmappe werden keinerlei System-, Office-, Excel- oder Benutzer-Einstellungen verändert.
|
[04] Warum treten bei Exceldateien häufiger Probleme auf als bei anderen Dateien?
Diese Frage ist gar nicht so unberechtigt, wie man vielleicht zuerst denken mag. Bei Exceldateien treten tatsächlich öfter Probleme auf als bei Word- oder PowerPoint-Dateien. Woran das liegt, kann man nicht abschliessend sagen. Betrachtet man aber Excel und Arbeitsmappen-Dateien etwas genauer, dann kann man grössere Unterschiede zu anderen Office-Programmen bzw. -Dateien feststellen:
1) Eine Arbeitsmappe wird immer zuerst in
einer temporären Datei gespeichert. Erst wenn dieser Vorgang erfolgreich durchgeführt
werden konnte, wird die Originaldatei gelöscht und die temporäre Datei in den original
Dateinamen umbenannt. Kann der gesamte Vorgang (inklusive Umbenennung) nicht
ordnungsgemäss durchgeführt werden - beispielsweise infolge ungenügenden
Benutzerrechten (z.B. fehlendes Modify- oder Delete-Recht) oder wegen einem kurzen
Netzwerk-Unterbruch - wird eine Fehlermeldung angezeigt, und die Arbeitsmappe wurde
folglich nicht gespeichert. Die Speicherung via Temp-Datei ist gegenüber der direkten
Speicherung somit komplexer und anfälliger auf Probleme, da
- die temporäre Datei eine Art Zwischenspeicherung darstellt, was den Prozess
umfangreicher und komplizierter macht,
- der Benutzer die Berechtigung zum Löschen von Dateien (Delete) besitzen muss,
- zum Speichern einer Datei doppelt so viel Speicherplatz wie die endgültige
Dateigrösse benötigt wird,
- Drittprogramme wie insbesondere Virenscanner während des Speichern-Prozesses die
Datei blockieren können.
2) Excel verwendet für das Lesen und
Schreiben von Daten eine spezielle Technik genannt "Back Seeking". Diese Technik
ist verglichen mit anderen I/O-Techniken fehleranfälliger, da der Datenzugriff
komplizierter ist (Anmerkung des Autors: Dies ist meine persönliche Meinung).
Eine genaue Beschreibung der Back Seeking-Technik finden Sie hier.
3) Ein Excel-Dokument (Arbeitsmappe) enthält gewöhnlich mehr als nur ein einziges Arbeitsblatt oder Diagrammblatt. Word- und PowerPoint-Dokumente dagegen besitzen keine weitere Unterteilung, also sozusagen Unter-Dokumente. Eine Word-Dokumentdatei umfasst immer genau ein Dokument. Eine Excel-Dokumentdatei umfasst zwar auch immer genau ein Dokument (Arbeitsmappe), welche ihrerseits aber mehrere Tabellenblätter, Diagrammblätter, Makroblätter usw. enthält (bzw. enthalten kann).
4) Eine Arbeitsmappendatei ist sehr viel komplexer strukturiert als zum Beispiel eine Dokumentdatei von Microsoft Word.
Arbeitsmappe
Arbeitsblatt
Spalte
Zeile
Zelle
Zellinhalt

Abbildung: Excel-Architektur
Weitere Informationen |
|
[05] Wozu sind duale Dateiformate gut (z.B. "Excel 97 & 5.0/95-Arbeitsmappe")?
Inhalt
Einleitung
Ein kurzer geschichtlicher
Rückblick
Zweck des dualen Dateiformates
Gefahren des dualen Dateiformates
Weitere Informationsquellen
Microsoft Excel bietet die Möglichkeit, Arbeitsmappen mit einem so genannten dualen Dateiformat zu speichern. Ein duales Dateiformat wird oft auch "Kombiniertes Dateiformat" oder "Hybrides Dateiformat" und in englischer Sprache "Dual Stream File Format" genannt.
Nachfolgend wird die Frage beantwortet, wozu duale Dateiformate gut sind, und es werden mehrere Hintergrundinformationen vorgestellt.
Ein kurzer geschichtlicher Rückblick
Das Excel-Dateiformat wird seit der ersten Excel-Version für Windows "BIFF" genannt (BIFF steht für "Binary Interchange File Format"). Die erste Excel-Version für Windows war Excel 2.0 und erschien im Jahre 1987. Bis und mit Excel Version 4.0 speicherte BIFF (BIFF2, BIFF3, BIFF4) die Daten in einem Stream-Format (d.h. alle Records sind sequentiell angeordnet), ab Version 5.0 speichert BIFF (BIFF5, BIFF7, BIFF8) alle Daten im OLE2 Storage Format (auch als "Structured Storage" bezeichnet). Das OLE2 Storage Format - eine Datei, die dieses Format verwendet, wird "OLE2 Compound File" genannt - enthält mehrere Streams für die verschiedenen Typen von Daten.
Hinweis
Es existierte nie eine Version 6.0 von Excel. Aus diesem Grund gibt es auch
kein BIFF-Formatversion mit der Bezeichnung "BIFF6".
Hier eine Auflistung der Streams in einer Exceldatei (Liste nicht abschliessend):
| Stream Name | Inhalt |
| Book | BIFF5/BIFF7 workbook stream |
| Workbook | BIFF8 workbook stream |
| SummaryInformation | Document settings |
| DocumentSummaryInformation | Document settings |
| User Names | User names in shared workbooks |
| Revision Log | Change tracking log stream |
Weitere Informationen über das BIFF-Dateiformat erhalten Sie hier:
Weitere Informationen |
|
Zweck des dualen Dateiformates
Wie der Name "duales Dateiformat" schon andeutet, besitzt eine derartige Datei nicht nur ein einziges Format sondern zwei Formate. Die Informationen über die Arbeitsmappe sind zwei Mal in der Datei abgelegt. Eine Datei kann man sich als Datenstrom vorstellen, welcher einen Beginn (BOF = Begin Of File) und ein Ende (EOF = End Of File) besitzt.
Gefahren des dualen Dateiformates
Das duale Dateiformat besitzt meiner Meinung nach eine nicht zu unterschätzende Schwachstelle bezüglich Schutz von VBA-Projekten. Wenn Sie eine Arbeitsmappe, die VBA-Programmcode enthält, mit dem dualen Dateiformat "Microsoft Excel 97 & 5.0/95-Arbeitsmappe" speichern, kann der Programmcode in Microsoft Excel 95 und Microsoft Excel 5.0 angezeigt werden, auch wenn Sie das VBA-Projekt mittels Kennwort geschützt haben. Der Grund liegt am fehlenden Kennwortschutz für VBA-Projekte in diesen beiden älteren Versionen 5.0 und 95.
Weitere Informationen über duale Dateiformate finden Sie auf diesen Seiten:
Weitere Informationen |
|
|
[06] Kann man eigene Excel-Startparameter definieren?
Ja, man kann eigene Parameter definieren, die beim Ausführen von Microsoft Excel in der Befehlszeile angegeben werden können. Mittels einer Windows API-Funktion und ein paar Zeilen VBA-Code lässt sich die Befehlszeile dann in Excel recht einfach auslesen. Dies erledigt man am besten im Workbook_Open-Ereignis oder im Auto_Open-Makro einer Arbeitsmappe.
Weitere Informationen |
|
|
Anmerkung des Autors
Ich muss zugeben, dass ich lange nicht wusste, dass es tatsächlich
einen Weg mit VBA gibt, eigene Start-Parameter für Excel zu definieren. Meine eigenen
Versuche mit VBA konzentrierten sich jeweils auf die beiden Anweisungen Command$
und Environ$, die ich von Visual Basic her kannte. Beide führten jedoch nicht
zum erhofften Erfolg.
[07] Was kann ich tun, damit mein Excel 97/2000 VBA-Projekt nicht geöffnet werden kann?
Gelegentlich hört oder liest man die Frage, wie ein VBA-Projekt optimal geschützt werden kann. Das Schützen eines VBA-Projektes mittels Kennwort ist die Standardmethode, wie sich ein Projekt gegen Anzeige/Änderung des Programmcodes sperren lässt. Dieser Schutz ist zwar sehr gut aber keineswegs unüberwindbar. Damit Sie Ihren Programmcode trotzdem möglichst gut und mit den standardmässig von Microsoft Excel zur Verfügung gestellten Funktionen schützen können, hier ein paar persönliche Empfehlungen von mir:
Vergeben
Sie ein möglichst langes Kennwort für Ihr VBA-Projekt. Je mehr Zeichen das Kennwort
besitzt, desto länger benötigen Passwort Crack-Programme zum Herausfinden des
Kennwortes. Ich kenne beispielsweise Programme, die relativ kurze Passwörter problemlos
und erst noch sehr schnell herausfinden. Mit sehr langen Passwörtern kommen sie jedoch
überhaupt nicht zurecht, d.h. es gelingt ihnen nicht, das Passwort zu ermitteln.
Verwenden
Sie im Kennwort nicht nur Buchstaben. Benutzen Sie auch die Ziffern 0 bis 9 sowie andere
erlaubte Zeichen wie "+", "-", "*", "/",
"%", "&", "(", ")", "=",
"?" und "!". Viele Passwort Crack-Programme probieren oft
Zeichenfolgen systematisch der Reihe nach durch und versuchen auf diese Weise ein Passwort
herauszufinden. In der Regel werden dabei zuerst die Buchstaben A bis Z durchprobiert, da
die Kennwörter vieler Benutzer meistens ausschliesslich aus diesen Zeichen bestehen. Je
mehr Sonderzeichen Sie benutzen, desto grösser ist die Wahrscheinlichkeit, dass ein
Crack-Programm sehr viel Zeit benötigt oder das Kennwort vielleicht sogar gar nicht
herausfinden wird. Ich gehe davon aus, dass die Person, welche Ihr Projektkennwort
herausfinden möchte, ziemlich schnell erkennt, dass das Crack-Programm sehr lange laufen
wird; das heisst viele Stunden, Tage oder auch Wochen. Diese Person wird sich dann
überlegen, ob sich der Aufwand wirklich lohnt und wahrscheinlich das Vorhaben abbrechen.
Speichern
Sie die Arbeitsmappe im Standard-Dateiformat von Microsoft Excel (Arbeitsmappendatei mit
der Dateinamenerweiterung "xls") und nicht mit einem dualen Dateiformat wie z.B.
dem Format "Microsoft Excel 97 & 5.0/95-Arbeitsmappe" oder "Microsoft
Excel 97-2000 & 5.0/95-Arbeitsmappe". Der Grund ist einfach: Die Arbeitsmappe
lässt sich wegen dem dualen Format problemlos in Microsoft Excel Version 5.0 und Version
95 öffnen. Da diese beiden Excel-Versionen keinen Projektschutz kennen und demzufolge
kein Projekt-Kennwort verlangen, liegt nach Öffnen der Arbeitsmappe der enthaltene
VBA-Programmcode in ungeschützter Form vor und kann vom Benutzer praktisch ohne
Einschränkung angesehen werden. Der Kennwortschutz für VBA-Projekte wurde erst mit
Microsoft Excel 97 eingeführt.
Sperren
Sie bei Bedarf zusätzlich das Hauptfenster des VBA-Editors, damit Benutzer den VBA-Editor
nicht mehr öffnen können. Sie können beispielsweise beim Öffnen Ihrer Arbeitsmappe den
VBA-Editor sperren und erst wieder freigeben, wenn die Mappe geschlossen wird. Bedenken
Sie jedoch, dass der VBA-Editor generell und für alle geöffneten Arbeitsmappen gesperrt
ist.
Den dazu benötigten VBA-Programmcode finden Sie hier:
Weitere Informationen |
|
|
Geben Sie
die Arbeitsmappe mit dem VBA-Programmcode für die gemeinsame Bearbeitung durch mehrere
Benutzer frei. Dies wird über den Excel-Menübefehl Extras/Arbeitsmappe
freigeben vorgenommen. Der Vorteil ist, dass das VBA-Projekt überhaupt nicht mehr
angezeigt werden kann, auch nicht durch Eingabe eines Projekt-Kennwortes. Es wird diese
Meldung erscheinen:

Abbildung: VBA-Editor-Meldung "Projekt gesperrt"
Bei einem geschützten VBA-Projekt einer nicht freigegebenen Arbeitsmappe wird dagegen der Kennworteingabe-Dialog angezeigt:

Abbildung: VBA-Editor-Dialog zum Eingeben des Projektkennwortes
Den entsprechenden VBA-Programmcode finden Sie hier:
Weitere Informationen |
|
Bei einer freigegebenen Mappe kann man kein Kennwort eingeben und dadurch den Projektschutz aufheben, da bei freigegebenen Arbeitsmappen grundsätzlich keine Makros angezeigt, eingegeben, geändert bzw. gelöscht werden können.
Weitere Einschränkungen werden hier vorgestellt:
Weitere Informationen |
|
[08] Gibt es Richtlinien bezüglich Namensgebung von Dateien und Ordnern?
Auf der Website Phil's Office Secrets finden Sie sämtliche Namenskonventionen mit vielen Empfehlungen, Tipps und Beispielen. Die Internetseite finden Sie hier:
Weitere Informationen |
|
|
[09] Welche Excel-Objekte, -Methoden und -Eigenschaften sind für Datei- und Verzeichnis-Zugriffe zuständig?
Bekanntlich enthält das Objektmodell von Microsoft Excel eine Vielzahl Objekte, Methoden, Eigenschaften und mehr, die im Zusammenhang mit Datei-, Ordner- und Laufwerk-Operationen eingesetzt werden.
Detaillierte Informationen zu allen im Excel-Objektmodell enthaltenen Objekten, Eigenschaften, Methoden und Ereignissen finden Sie auf der Seite Excel-Objektmodell.
[10] Welche Datei- und Verzeichnis-Schlüsselwörter existieren in VBA?
Die Übersicht und Beschreibung aller VBA-Befehle und -Funktionen zum Thema "Dateien, Ordner, Laufwerke und Programme" finden Sie auf der Seite VBA-Befehle und -Funktionen.
http://msdn.microsoft.com/library/en-us/vbcon98/html/vbconFolderFileProcessing.asp
[11] Wie heissen die Registry-Einträge für Datei-, Verzeichnis- und vergleichbare Informationen?
Eine Liste der Windows Registry-Einträge von Microsoft Excel finden Sie auf der Seite Registry-Einträge.
[12] Wie wird verhindert, dass beim Öffnen/Schliessen einer Mappe VBA-Code ausgeführt wird?
Arbeitsmappe öffnen
Das
Drücken und Halten der Alt-Taste während dem Öffnen einer
Arbeitsmappe bewirkt, dass die im VBA-Projekt der Mappe referenzierten
xls-Dateien nicht geöffnet werden.
Das
Drücken und Halten der Umschalt-Taste während dem Öffnen einer
Arbeitsmappe bewirkt, dass das Auto_Open-Makro und die Ereignisprozedur Workbook_Open
der Arbeitsmappe nicht ausgeführt werden. Durch die Umschalt-Taste wird der Entwurfsmodus
für diese Arbeitsmappe eingeschaltet. Solange der Entwurfsmodus eingeschaltet ist, werden
keinerlei Ereignisprozeduren dieser Mappe ausgeführt.
Das
Einschalten des Entwurfsmodus vor dem Öffnen einer Arbeitsmappe
besitzt keinerlei Auswirkung auf Ereignisse und Auto-Makros.
Arbeitsmappe schliessen
Das
Drücken und Halten der Umschalt-Taste während dem Schliessen
einer Arbeitsmappe bewirkt, dass das Auto_Close-Makro der Arbeitsmappe
nicht ausgeführt wird. Das Workbook_BeforeClose-Ereignis wird dagegen
ausgelöst, wie auch das Workbook_WindowDeactivate- und Workbook_Deactivate-Ereignis.
Das
Einschalten des Entwurfsmodus vor dem Schliessen einer
Arbeitsmappe bewirkt, dass Programmcode im Workbook_BeforeClose-Ereignis
der Arbeitsmappe nicht ausgeführt wird. Das Auto_Close-Makro wird jedoch
ausgeführt.
Weitere Informationen über Tastenkombinationen und Startparameter von Microsoft Excel finden Sie hier:
Weitere Informationen |
|
[13] Wie wird der Dateityp im Öffnen-Dialog standardmässig auf "Alle Dateien (*.*)" gesetzt?
Wenn der Öffnen-Dialog (Menübefehl Datei/Öffnen) aufgerufen wird, steht der Dateityp standardmässig auf "Microsoft Excel-Dateien". Es existiert in Microsoft Excel keine direkte Möglichkeit, beispielsweise über den Optionen-Dialog den vorgeblendeten Dateityp einzustellen. Es gibt jedoch eine VBA-Lösung, die hier vorgestellt wird.

Abbildung: Datei öffnen-Dialog von Microsoft Excel
Angenommen Sie arbeiten sehr oft mit Textdateien im CSV-Format und mit Lotus 1-2-3-Dateien (Dateiendung .wk*), so wäre es doch wünschenswert, wenn der Dateityp standardmässig auf "Alle Dateien (*.*)" eingestellt wäre. Durch ein kleines VBA-Makro lässt sich dies bewerkstelligen.
Vorgehen
Schritt
1: Geben Sie diese drei Programmzeilen in ein Standardmodul der Makro-Arbeitsmappe
"Personl.xls" ein:
Sub OeffnenDatei()
Application.Dialogs(xlDialogOpen).Show Arg1:="*.*"
End Sub
Schritt
2: Führen Sie den Menübefehl Ansicht/Symbolleisten/Anpassen
aus, klicken dann mit der linken Maustaste auf das Menü Datei und anschliessend
mit der rechten Maustaste auf den Menübefehl Öffnen, damit das Kontextmenü
für die Modifikation des Menüeintrages erscheint.
Schritt
3: Führen Sie im Kontextmenü den Befehl Makro zuweisen aus, geben im Feld Makroname
den Namen der oben erstellten Prozedur samt Arbeitsmappennamen ein (d.h.
"Personl.xls!OeffnenDatei"), oder markieren Sie die Prozedur in der Liste der
verfügbaren Makros und klicken dann auf OK.
Schritt
4: Das gleiche Makro weisen Sie der Symbolleisten-Schaltfläche Öffnen
zu.
[14] Wie findet Excel ein zu startendes Makro, das sich in einer anderen Datei befindet?
Wenn im VBA-Projekt eines Add-Ins ein Verweis auf ein anderes Add-In existiert, sollten Sie beim Ausbreiten des Add-Ins darauf achten, dass das referenzierte Add-In auf der Zielarbeitsstation vorhanden ist, sodass es vom aufrufenden Add-In gefunden wird. Die von Microsoft empfohlene Strategie ist, das referenzierte Add-In im gleichen Ordner wie das aufrufende Add-In zu speichern.
Sobald Sie das VBA-Projekt eines Add-Ins kompilieren, speichert Microsoft Excel den Pfad zum referenzierten Add-In in der Arbeitsmappe mit dem Add-In VBA-Projekt. Wenn Sie das Add-In auf eine andere Arbeitsstation kopieren oder verschieben (z.B. zwecks Ausbreitung und zur Verfügungstellung für andere Benutzer), sucht Excel das referenzierte Add-In im gespeicherten Pfad. Da das Add-In in diesem Fall nicht gefunden werden kann, tritt die nachfolgend beschriebene Situation ein.
Microsoft Excel 97 (Windows) sucht das aufgerufene Add-In in verschiedenen Ordnern gemäss dieser Reihenfolge:
Microsoft Excel 98 (Macintosh) sucht das aufgerufene Add-In nicht.
[15] Welche Parameter stehen zum Starten von Excel zur Verfügung?
Eine umfassende Beschreibung sämtlicher Startparameter von Excel 97, Excel 2000, Excel 2002/XP und Excel 2003 finden Sie auf der Seite Excel-Startparameter.
Hinweis
Man kann auch eigene Startparameter definieren und diese beim
Starten von Excel beziehungsweise beim Öffnen einer Arbeitsmappe mittels VBA-Programm
auslesen.
Informationen darüber erhalten Sie hier:
Weitere Informationen |
|
|
|
[16] Wo befinden sich die Exceldateien mit den benutzerspezifischen Einstellungen?
Die nachfolgendeTabelle zeigt die Pfade zu den Dateien mit den Benutzereinstellungen.
Hinweis
Die Liste bezieht sich auf Microsoft Excel 2000. Gegenüber Excel 97,
Excel 2002/XP und Excel 2003 existieren zum Teil grössere Abweichungen.
| Benutzerprofil-Datei | Pfad / Einstellung |
| Add-In Programme (.xla) | Root\OS\Profiles\User_name\Application
Data\Microsoft\Addins Root\Program Files\Microsoft Office\Office\Library (does not travel, and provided for backward compatibility only) |
| Zusätzlicher Startordner | Specified by the user. On the Tools menu, click Options, and then click the General tab. |
| AutoKorrektur-Listen (.acl) | Root\OS\Profiles\User_name\Application Data\Microsoft\Office |
| Benutzer-Wörterbuch (.dic) | Root\OS\Profiles\User_name\Application Data\Microsoft\Proof |
| Standardarbeitsordner | Can be specified by the user. On the Tools menu, click Options, and then click the General tab. |
| Office Symbolleiste | Root\OS\Profiles\User_name\Application Data\Microsoft\Shortcut Bar |
| Personal information profiles (.pip) | Root\OS\Profiles\User_name\Application Data\Microsoft\Office |
| Zuletzt verwendete Dateien | Root\OS\Profiles\User_name\Application Data\Microsoft\Office\Recent |
| Vorlagen (.xlt) | Root\OS\Profiles\User_name\Application
Data\Microsoft\Templates (Templates also may be located in the XLStart folder) |
| Abfragen (.iqy) | Root\OS\Profiles\User_name\Application Data\Microsoft\Queries |
| Startordner (XLStart) | Root\OS\Profiles\User_name\Application
Data\Microsoft\Excel\XLStart Root\Program Files\Microsoft Office\Office\XLStart |
| Benutzerdefinierte Symbolleisten (.xlb) | Root\OS\Profiles\User_name\Application
Data\Microsoft\Excel C:\Documents and Settings\username\Application Data\Microsoft\Excel |
| Diagramm-Galerie (xl8galry.xls und xlusrgal.xls) | Root\OS\Profiles\User_name\Application Data\Microsoft\Excel |
Umfassende Informationen über die obigen Dateien und Ordner finden Sie hier:
Weitere Informationen |
|
Ausführliche Informationen über die xlb-Datei von Microsoft Excel erhalten Sie hier:
Weitere Informationen |
|
|
|
Office 2000 Save My Settings Wizard
http://office.microsoft.com/downloads/2000/o2ksmsdd.aspx
Office XP Save My Settings Wizard
http://office.microsoft.com/assistance/2002/articles/oSaveSettingsWizard.aspx
Save Your Office XP Settings
Do you use Microsoft Office XP on more than one computer? Do you want the security of knowing you can restore your Office settings? If you've spent time creating custom templates, adding words to a custom dictionary, and setting up Office to work the way you want, you probably wish that there was a quick and easy way to use all these Office settings on another computer, or restore these settings on your own computer. Now you can.
The Office Save My Settings Wizard allows you to save your Office settings - called your profile - store them on the Web, a network, or your computer, and then restore and use them on your own or another computer.
Microsoft Web site
You can easily restore the settings to another computer when you are away from your
computer. So even if you are not using your own computer, you can still access your
settings as long as you have an Internet connection. This location gives you the broadest
access to your Office settings.
A network
You can restore the settings to another computer or your own as long as you have
access to the network from the computer you want to restore the settings to.
Your computer
You can restore the settings to your own computer from the location you choose
on your computer, or from a floppy disk.
Your Office settings, or profile, are a group of settings that defines your Office program preferences and options. These settings include the following:
Note
Your Office Speech Recognition settings are not saved.
[17] Wie wird verhindert, dass eine Mappe geöffnet aber nicht gespeichert werden kann?
Die Speicherung einer Datei kann man unterbinden, indem man zwei Vorkehrungen trifft:
1. Die Option "Schreibgeschützt" muss für die Arbeitsmappe aktiviert werden.
2. In der Ereignisprozedur "Workbook_BeforeSave" muss eine Codezeile eingegeben werden:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI
As Boolean, Cancel As Boolean)
If SaveAsUI Then Cancel = True
End Sub
Definition "Schreibgeschützt"
Eine Option, die bewirkt, dass eine Datei gelesen, jedoch nicht geändert werden
kann. Sie können eine schreibgeschützte Arbeitsmappe öffnen und anzeigen, jedoch keine
Änderungen an der Arbeitsmappendatei speichern. Wenn Sie die schreibgeschützte
Arbeitsmappe bearbeiten, können Sie die Änderungen nur dann speichern, wenn Sie der
Arbeitsmappe einen neuen Namen geben oder eine Kopie an einem anderen Ort speichern.
Weitere Informationen |
|
|
[18] Welche Dateitypen können von Excel erkannt werden?
Microsoft Excel erkennt Dateitypen, die folgende Dateinamenerweiterungen besitzen:
- xls
- txt
- dbf
- wk1
- wk3
- wq1
- slk
- csv
- dif
Wenn Sie versuchen eine Datei zu öffnen, die keine Dateinamenerweiterung besitzt, und im gleichen Ordner befindet sich eine andere, gleichnamige Datei, die eine der obigen Dateinamenerweiterungen verwendet, so wird stattdessen letztere Datei geöffnet.
[19] Welchen Zweck besitzen Dateien mit den Endungen mso, box und dergleichen?
Die beiden Tabellen zeigen die wichtigsten Dateiendungen/Dateitypen, die von Microsoft Excel bzw. Microsoft Office verwendet werden. Ein Excel- bzw. Office-Benutzer kommt gewöhnlich nicht in direkten Kontakt mit diesen Dateien.
| Dateiendung | Dateityp (englisch) | Dateityp (deutsch) | Beschreibung |
| xla | Excel Add-In | Excel Add-In | - |
| xlb | Excel Toolbar | Excel Symbolleiste | - |
| xlc | Excel Chart | Excel Diagramm | - |
| xld | Excel Dialogsheet | Excel Dialogblatt | - |
| xlk | Excel Backup | Excel Sicherungskopie | - |
| xll | Excel Compiled Add-In | Excel Kompiliertes Add-In | - |
| xlm | Excel Macrosheet | Excel Makroblatt | - |
| xls | Excel Worksheet (Workbook) | Excel Tabellenblatt (Arbeitsmappe) | - |
| xlt | Excel Template | Excel Vorlage | - |
| xlv | Excel VBA Module | Excel VBA Modul | - |
| xlw | Excel Workspace | Arbeitsbereichdatei | - |
| pxl | Pocket Excel Spreadsheet | Pocket Excel Tabellenblatt | - |
| Dateiendung | Dateityp (englisch) | Dateityp (deutsch) | Beschreibung |
| acl | Auto Correct List | Autokorrektur-Liste | Die acl-Dateien enthalten
die Einträge der Autokorrektur-Liste der Funktion "AutoKorrektur" von Microsoft
Office-Programmen. Hinweis Weitere Informationen |
| box | Toolbox (VBE) | Werkzeugsammlung (VBE) | Speichert die
Informationen der Werkzeugsammlung des VBA-Editors. Jedes Office-Programm (bzw. jeder
VBA-Editor des Office-Programmes) besitzt eine eigene box-Datei: EXCEL.box (Microsoft
Excel), WINWORD.box (Microsoft Word), POWERPNT.box (Microsoft PowerPoint) und OUTLOOK.box
(Microsoft Outlook).
Wenn eine Toolbox-Datei gelöscht, verschoben oder umbenannt wird, generiert der VBA-Editor automatisch eine neue "box"-Datei, was gewöhnlich beim Schliessen des Fensters "Werkzeugsammlung" passiert. |
| cag | ClipArt Gallery | Clip Art Galerie | - |
| dic | Dictionary | Wörterbuch | Enthält ein benutzerdefiniertes Wörterbuch für die Rechtschreibprüfung. |
| dqy | Data Query | Datenabfrage | - |
| dsn | Data Source Name | Datenquelle | - |
| emf | Enhanced Windows Metafile | Enhanced Windows Metafile | - |
| exd | Beschreibung siehe hier. | ||
| mso | (Microsoft Office) | (Microsoft Office) | Dateien mit der Endung "mso" werden unter anderem im Zusammenhang mit Arbeitsmappen verwendet, die als Webseite gespeichert werden. |
| ocx | OLE (Custom) Control Extension | Zusatzsteuerelement | - |
| pag | VBE Toolbox Page | Werkzeugsammlung-Seite (VBE) | Eine pag-Datei enthält
eine einzelne Seite der Werkzeugsammlung und wird nur erstellt, wenn ein Benutzer eine
Werkzeugsammlung-Seite exportiert. Hinweis |
| pip | Personal Information Profile | Personal Information Profile | Speichert Informationen über zuletzt verwendete Menübefehle, ausgeblendete Menübefehle und Animationseinstellung der Menüleisten. Die benutzerdefinierten Menübefehle, Symbolleisten und Symbolleistenschaltflächen sind in der xlb-Datei abgelegt. |
| twd | Beschreibung siehe hier. |
[20] Wozu sind die von der VBE automatisch generierten exd- und twd-Dateien gut?
Wenn Sie oft mit dem VBA-Editor arbeiten und sich ab und zu etwas genauer die Festplatte Ihres PCs anschauen, wird Ihnen vielleicht die Existenz von Dateien mit den Endungen "exd" und "twd" aufgefallen sein. Dateien dieser beiden Dateitypen werden von Microsoft Office, d.h. genauer gesagt vom VBA-Editor, intensiv benutzt.
Datei mit exd wird automatisch erstellt, sobald ein ActiveX-Control zum ersten Mal auf einem Benutzerformular angeordnet wird.
exd ist eine Kopie
exd im Temp\App (z.B. Temp\VBE oder Temp\Excel8.0)
twd im OS\System (z.B. WinNT\System32)
When a control is added to a VBA-enabled application, Visual Basic for Applications (VBA) creates a copy of its type library in a file with an .exd or a .twd extension. This file is used to merge the type information of the control with that of a host-provided extender object, which helps give the control added functionality while running inside the VBA-enabled application. This article describes the techniques required when either the control or the VBA-enabled application is upgraded.
[1] ...dass die exd-Dateien im Temp-Verzeichnis auf Ihrer Festplatte Informationen zu denjenigen ActiveX-Controls enthalten, die Sie irgend wann einmal in einem VBA-Projekt verwendet haben? Sobald Sie ein Zusatz-Steuerelement das erste Mal benutzen, generiert die VBE automatisch ein binäres File mit dem Namen des Controls und der Endung "exd". Wurde diese Datei einmal erstellt, laufen alle späteren Control-Verwendungen in der VBE um einiges schneller ab, da die VBE die benötigten Informationen über das Control bereits kennt. Die exd-Dateien können Sie bedenkenlos löschen, denn beim nächsten Gebrauch eines ActiveX-Controls wird die erforderliche Datei wieder automatisch erstellt.
| exd | Extended | When a user accesses VBA for the first time, VBA creates a file named MSForms.exd in the user's temporary folder. This file is a type library that VBA caches for a COM object and is required for FM20/MSForms to function correctly. Once VBA creates the type library file, it then attempts to register it; if the user does not have write access to required registry keys, the registration fails. Consequently, VBA fails to initialize properly and various errors might occur on attempts to use VBA in Office 97 applications. |
| twd | Type oder Temporary (?) | Kopie einer exd-Datei (gewöhnlich ein paar KB kleiner als das Original) |
Office 97/2000: http://support.microsoft.com/default.aspx?scid=kb;EN-US;158875
Office 2000: http://support.microsoft.com/default.aspx?scid=kb;en-us;199830
Office XP: http://support.microsoft.com/default.aspx?scid=kb;en-us;290537
INFO: Upgrade Techniques for Controls and Extenders
with the VBA SDK
http://support.microsoft.com/default.aspx?scid=kb;EN-US;244064
[21] Wie gross darf eine Arbeitsmappendatei maximal sein?
Microsoft Excel-Arbeitsmappendateien besitzen keine Limitation bezüglich der maximalen Dateigrösse. Theoretisch und natürlich auch praktisch kann eine xls-Datei 100 MB, 200 MB oder noch grösser sein. Die einzige Beschränkung stellen die verschiedenen Excel-Limitationen dar, die nicht überschritten werden dürfen.
Anmerkung des Autors
Die grösste jemals von mir selbst angetroffene Exceldatei hatte
eine Grösse von 227 MB.
Hinweis
Microsoft Word-Dokumentdateien besitzen im Gegensatz zu
Exceldateien eine Limitation bezüglich ihrer maximalen Grösse.
Weitere Informationen |
|
Weitere Informationen
Weitere Informationen über Dateigrösse,
-formate und -typen erhalten Sie hier:
Weitere Informationen |
|
Alles über Limitationen, Spezifikationen und Grenzen in Microsoft Excel und anderen Programmen finden Sie hier:
Weitere Informationen |
|
[22] Welche Zugriffsrechte (Permissions) muss ein Benutzer für Exceldateien besitzen?
Zur Bearbeitung von Exceldateien, die auf einem anderen Computer gespeichert sind, beispielsweise einem Netzwerk-Server, muss ein Benutzer entsprechende Zugriffsrechte besitzen.
Gelegentlich treten Fehlermeldungen beim Speichern von Arbeitsmappen auf, die auf ungenügende Berechtigungen zurückzuführen sind.

Abbildung: Fehlermeldung "Fehler beim Löschen der
Datei"
You Don't Have Delete Permissions
If you are opening a file stored on another computer, verify that you have sufficient permissions to the folder or file. To delete a file, you must have either Full permissions or the following base permissions for the file or folder on the computer hosting the file:
Operating Windows NT Windows NT
system (NTFS) (FAT) Windows 95 Windows 98
-------- ---------- ---------- ---------- ----------
File: RWXD N/A N/A N/A
Folder: RWXD Change DF DF
R = Read
W = Write
X = Execute
D = Delete
F = List Files
N/A = Not Available
NOTE
: When using other network operating systems such as Novell Netware, similar requirements to Microsoft Windows NT (NTFS) are required.
Sie haben keine Löschberechtigung für die Datei:
Stellen Sie sicher, dass ausreichende Berechtigungen für Sie eingerichtet sind. Um eine Datei löschen zu können, müssen Sie entweder alle oder mindestens die folgenden Berechtigungen für den entsprechenden Ordner auf dem Computer besitzen, auf dem diese Datei verwaltet wird:
Weiterführende Informationen:
Wenn Microsoft Excel eine Datei öffnet, wird diese gesperrt und kann gleichzeitig nur
noch mit ausschliesslicher Leseberechtigung geöffnet werden. Eine Datei kann nicht
gelöscht werden, während sie gesperrt ist.
[23] Was sollte man über XML-Dateien wissen und wo findet man diese Informationen?
In Excel 2002 haben Sie die Möglichkeit, Exceldateien im XML-Format (XML steht für "Extensible Markup Language") zu öffnen und zu speichern. Hier ein paar Links zu interessanten Informationen von Microsoft Support:
XL2002: Microsoft Excel 2002 and XML
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q288215
XL2002: Opening XML Files in Excel
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q282161
XL2002: Excel speichert XML-Dateien im XML
Tabellenblatt-Format
http://support.microsoft.com/default.aspx?scid=kb;de;D287734
XL2002: Excel Saves XML Files in the XML Spreadsheet
Format
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q287734
[24] Warum wird beim Klicken eines Hyperlinks zu einer anderen Datei die Mappe geschlossen?
Die Datei wird nicht wirklich geschlossen sondern nur verborgen. Über den Menübefehl Fenster/Einblenden kannst Du die Datei wieder sichtbar machen. Die Exceldatei wird immer dann automatisch verborgen, wenn seit ihrer letzten Speicherung keine Änderungen vorgenommen wurden (mehr dazu weiter unten).
Ursache
Der Grund für dieses (teilweise störende) Verhalten liegt am Umstand, dass
ein Hyperlink eigentlich den Zweck besitzt, das Springen zu einem anderen Ort bzw. zu
einer anderen Datei zu ermöglichen - und nicht das Öffnen von Dateien. Genau wie im
Internet Explorer wird die Zieldatei des Links geöffnet und im gleichen Fenster
angezeigt, wobei die "alte" Datei verschwindet (im Internet Explorer ist immer
nur eine einzige HTML-Datei zu sehen). Mit der "Zurück"-Schaltfläche der
Symbolleiste "Web" von Microsoft Excel kann man übrigens zur Ursprungsdatei
zurückspringen, und zwar unabhängig davon, ob sie ein- oder ausgeblendet ist. Mit der
"Vorwärts"-Schaltfläche wird wieder zur Zieldatei gewechselt, also genau
gleich wie im Internet Explorer. Übrigens sind in der Web-Leiste über den "Wechseln
zu"-Button alle Dateien des Verlaufes aufgelistet, egal ob verborgen oder nicht.
Wenn Du eine Arbeitsmappe öffnest und unmittelbar danach einen Hyperlink anklickst, verschwindet wie oben erwähnt die Mappe, da in ihr (in der Regel) keine Änderungen vorgenommen wurden.
Lösung
Um das zu verhindern, kannst du z.B. die Formel "=JETZT()" in irgend eine
Zelle einfügen. Die Zelle kann beispielsweise in einer Spalte ganz rechts (z.B. Spalte Z)
stehen, wobei Du dann die Spalte auch ausblenden könntest. Die Formelzelle bewirkt, dass
beim Datei öffnen diese Zelle automatisch neu berechnet wird und folglich die Mappe eine
aktuelle, nicht gespeicherte Änderung enthält. Klickst Du nun auf einen Hyperlink,
verschwindet die Mappe nicht mehr und die Zielmappe wird zusätzlich geöffnet. Sobald Du
die Mappe (mit der JETZT-Formelzelle) speicherst, verschwindet Sie beim nächsten
Hyperlink-Klick. Da man in der Regel nicht darum herumkommt, ab und zu die Mappe zu
speichern, einfach nach erfolgter Speicherung kurz die Taste F9 drücken, und schon
enthält sie wieder eine nicht gespeicherte Änderung - sprich: Sie verschwindet nicht.
Weitere Informationen |
|
[25] Was kann ich tun, wenn beim Öffnen mehrerer Mappen nicht alle Formeln berechnet werden?
Zuverlässigkeit der berechneten Formelergebnisse
Zuerst möchte ich festhalten, dass Excel trotz einiger Bugs grundsätzlich richtig rechnet und auch sämtliche Formeln und Funktionen bei einer Berechnung mit einbezieht. Dennoch findet man gelegentlich im Internet in Excel-Newsgroups Anfragen von Benutzern, die Probleme bei der Neuberechnung von Zellformeln haben. Insbesondere wenn eine komplexe Excel-Anwendung mit mehreren Arbeitsmappen geöffnet wird, scheint Excel nicht zuverlässig diejenigen Zellen zu berechnen, obwohl es notwendig wäre. Ganz hundertprozentig kann wahrscheinlich niemand gewährleisten, dass die Berechnung in jeder denkbaren Situation und bei jeder Zellen-, Blatt- und Mappen-Konstellation tatsächlich immer absolut korrekt ist.
Beispiel eines kuriosen Berechnen-Bugs
Es gab in der Vergangenheit ein paar wirklich kuriose Fälle, in denen einzelne Zellformeln bei der Berechnung vergessen wurden. Mir ist ein Fall in Excel 97 gut in Erinnerung geblieben, da die zum Problem führende Konstellation der Formelzellen praktisch einmalig ist. Der Fehler trat nur auf, wenn alle diese Bedingungen zutrafen:
1. In einem Arbeitsblatt befindet sich ein
Bereich von 18 oder mehr Zellen, die alle auf der gleichen Zeile befinden.
- und -
2. Jede dieser Zellen enthält eine Formel, die sich direkt auf
die links angrenzende Zelle bezieht (Beispiel: Zelle B33 enthält einen Bezug auf A33,
Zelle C33 auf B33, Zelle D33 auf C33 usw.).
- und -
3. Der Zellbereich befindet sich auf einer Zeile, deren
Zeilennummer ein Mehrfaches von 16 plus 1 ist, bzw. durch 16 mit Rest 1 teilbar ist
(Beispiel: Zeile 17 dividiert durch 16 ergibt Rest 1, Zeile 33 diviert durch 16 ergibt
ebenfalls Rest 1, so auch Zeile 49, 65 usw.).
- und -
4. Die Formel einer anderen Zelle (die nicht im Zellbereich liegt)
bezieht sich auf eine Zelle des Zellbereiches.
- und -
5. Die Formel einer beliebigen Zelle bezieht sich auf eine Zelle,
die sich oberhalb des Zellbereiches befindet.
Nur wenn alle fünf Bedingungen erfüllt waren, wurde die in Punkt 4 erwähnte Zelle sowie weitere hier nicht genannte Zellen nicht korrekt berechnet, d.h. bereits nach Eingabe der Formel wurde diese nicht berechnet. Dieser Fehler wurde übrigens im Office 97 Service Pack 2 behoben.
Massnahmen zum Vermeiden bzw. Beheben eines Berechnen-Problems
Doch was kann man tun, wenn trotz installierten Service Packs nach dem Mappe-Öffnen einzelne Zellformeln tatsächlich nicht aktualisiert werden?
Es gibt mehrere Massnahmen, um die Wahrscheinlichkeit einer korrekten und vollständigen Berechnung zu erhöhen. Bei den hier vorgestellten Massnahmen wird davon ausgegangen, dass die Optionen, die zu einer unvollständigen Berechnung führen können, korrekt eingestellt sind (u.a. Berechnen-Modus = Automatisch, Iteration = Ausgeschaltet, Eigenschaft EnableCalculation der Tabellenblätter = True usw.).
Weitere Informationen folgen in Kürze...
[26] Wie kann man feststellen, ob eine Excel-Anwendung/-Instanz noch antwortet bzw. nicht hängt?
Bei intensivem Einsatz von Automation mit den unterschiedlichsten Office-Programmen oder auch anderen Programmen wie dem Internet Explorer ist es gelegentlich notwendig, den Ausführungsstatus dieses Programmes zu kennen. Es soll mit VBA abgefragt werden, ob die Anwendung reagiert oder nicht. Der Windows NT Task-Manager beispielsweise zeigt in der Spalte "Status", ob eine Anwendung antwortet (Status "Wird ausgeführt") oder hängt (Status "Keine Rückmeldung").

Abbildung: Windows Task-Manager mit Liste der laufenden
Anwendungen
Den erforderlichen VBA-Programmcode finden Sie unter Prüfen, ob ein ausgeführtes Programm hängt/nicht mehr reagiert.
[27] Kann ich herausfinden, ob eine in Excel 2000 geöffnete Excel 97-Mappe vollständig neuberechnet wurde?
In bestimmten Situationen - auch wenn diese selten vorkommen - ist es wichtig zu wissen, ob eine Excel 97-Arbeitsmappe, die in Excel 2000 geöffnet wurde, bereits vollständig neuberechnet wurde oder nicht. Wenn Sie beispielsweise eine Excel 97-Mappe zukünfig als Excel 2000-Mappe verwenden möchten, genügt es gewöhnlich, die Mappe ganz einfach in Excel 2000 zu öffnen und dann neu zu speichern. Damit die Mappe jedoch wirklich zu 100 Prozent eine Excel 2000-Mappe wird, sollte sie vor dem Speichern vollständig neuberechnet werden.
Wenn der Berechnen-Modus auf Manuell eingestellt ist oder einzelne Arbeitsblätter von der Berechnung ausgeschlossen sind (was man im VBA-Editor durch Setzen der Tabellenblatt-Eigenschaft EnableCalculation auf False erreichen kann), ist die vollständige Neuberechnung nicht gewährleistet.
Ob eine in Excel 2000 geöffnete Excel 97-Arbeitsmappe vollständig neuberechnet wurde, findet man mit einer einfachen Abfrage heraus:
If Application.CalculationVersion
<> ActiveWorkbook.CalculationVersion Then
MsgBox "Mappe ist vollständig neuberechnet."
Else
MsgBox "Mappe ist nicht vollständig neuberechnet."
End If
Die erste Codezeile mit der If-Anweisung vergleicht die Versionsnummer der sogenannten Calculation Engine von Excel mit der aktuell verwendeten Version der Calculation Engine der aktiven Arbeitsmappe. Stimmt die Nummer nicht überein, wurde die Mappe nicht vollständig neuberechnet.
[28] Wo findet man Informationen über Excel-Dateikonvertierung?
Hier ein paar nützliche Internet-Links zum Thema "Dateikonvertierung in Microsoft Excel":
Converting Documents from Other File FormatsConverting Lotus 123 Worksheets to
Microsoft Excel
http://www.microsoft.com/office/ork/018/018.htm#CH018H206
Sharing Documents with Lotus 123
http://www.microsoft.com/office/ork/018/018.htm#CH018H207
[29] Wie kann ein zum Programmstart benötigtes OCX automatisch registriert werden?
Wenn Sie eine Excel-Anwendung (bzw. eine Office-Anwendung) ausliefern, die ein nicht standardmässig auf der Ziel-Arbeitsstation installiertes ActiveX-Control verwendet, müssen Sie das Control auf diesem PC registrieren. Wenn für die Anwendung ein Setup-Paket erstellt wird, übernimmt das Installationsprogramm normalerweise die Registrierung derartiger Komponenten. Damit nicht für jede (noch so kleine) Anwendung ein Installationspaket erstellt werden muss, kann das ActiveX-Control auch ganz einfach auf den Zielrechner kopiert und anschliessend manuell registriert werden. Die manuelle Registrierung erfolgt gewöhnlich mit dem Hilfsprogramm namens "RegSvr32", welches sich mit hoher Wahrscheinlichkeit bereits auf dem Zielrechner befindet.
Anstelle der manuellen Registrierung können Sie das Programm "RegSvr32.exe" im VBA-Programm anhand der Shell-Funktion aufrufen und Pfad sowie Dateiname des zu registrierenden OCX-Controls übergeben. Hier ein Beispiel:
Sub RegistryOCX()
Shell "RegSvr32.exe /s C:\WinNT\System32\MyControl.ocx"
End Sub
Der Schalter "/s" bewirkt, dass nach der Registrierung keine Hinweismeldung bezüglich der erfolgten Registrierung erscheint.
Das Utility RegSvr32 kennt weitere Schalter. Diesen Meldungsdialog erhalten Sie bei Ausführen von "RegSvr32.exe" ohne Angabe einer OCX- bzw. DLL-Datei:

Abbildung: Dialogfenster mit den Programmparametern von
RegSvr32.exe
[30] Wie kann eine Mappe beim Start automatisch geöffnet werden, ohne sie ins XLStart-Verzeichnis zu stellen?
Es gibt insgesamt drei Möglichkeiten, eine Arbeitsmappe beim Excelstart automatisch zu öffnen, ohne dass die xls-Datei in das Start-Verzeichnis 'XlStart' von Excel abgelegt werden muss.
Möglichkeit 1: Datei-Verknüpfung im Startordner erstellen
Abgesehen von xls-, xlt-, xlw- und xla-Dateien akzeptiert Microsoft Excel auch Datei-Verknüpfungen (d.h. Dateien mit der Dateinamenerweiterung "lnk") im Startordner 'XlStart'.
Weitere Informationen |
|
Möchten
Sie wissen, wie Excel andere Dateitypen (z.B. 'exe', 'bmp' und 'dat') |
Damit eine Datei beim Start automatisch geöffnet wird, kann somit eine eine Datei-Verknüpfung auf die zu öffnende Arbeitsmappe im XlStart-Verzeichnis angelegt werden.
Vorgehen
Die Datei-Verknüpfung wird erstellt, indem Sie im Windows
Explorer wie folgt vorgehen:
Schritt 1: Ordner mit der
Arbeitsmappe öffnen und Arbeitsmappendatei (xls-Datei) selektieren
Schritt 2: Menübefehl Kopieren
ausführen (Menü Bearbeiten) oder Strg+C drücken
Schritt 3: Excel-Startverzeichnis
"XlStart" öffnen
Schritt 4: Menübefehl Verknüpfung
einfügen ausführen (Menü Bearbeiten oder Kontextmenü der rechten
Maustaste)
Nach obigen vier Schritten ist die Datei-Verknüpfung erstellt, wie in der nächsten Abbildung zu sehen ist:

Abbildung 1: Verknüpfte Arbeitsmappe im Excel-Startordner
(Ausschnitt des Windows Explorers)
So sehen die Datei-Eigenschaften der Verknüpfung aus:

Abbildung 2: Datei-Eigenschaften der
Arbeitsmappen-Verknüpfung
Hinweis für
VBA-Programmierer
Datei-Verknüpfungen können auch mit VBA einfach erstellt werden. Mehr dazu
erfahren Sie hier:
Weitere Informationen |
|
Möglichkeit 2: Datei als Startparameter angeben
C:\Programme\Microsoft Office\Office\Excel.exe D:\NeueDaten\Vorlage-Mappe.xls
Möglichkeit 3: Datei im Registry-Eintrag 'OPEN' eintragen
Die andere Möglichkeit besteht im Hinzufügen eines 'OPEN'-Eintrages in der Windows Registry:
Zweig:
HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel
Eintrag: OPEN[x] (Eintragtyp "Zeichenfolge")
Wert: Pfad und Dateiname der Arbeitsmappe
Der Platzhalter 'x' steht für eine Ganzzahl.
Hier ein Ausschnitt aus der Windows Registry:

Abbildung: Registry-Eintrag "OPEN" (Ausschnitt von
RegEdit)
Wie in der obigen Abbildung zu sehen ist, ist beim Eintrag "OPEN2" der Parameter '/r' vor dem Dateipfad angegeben. Dieser Parameter bewirkt, dass die Datei schreibgeschützt geöffnet wird (der Buchstabe 'r' steht für read-only).
Falls der Pfadpfad ein Leerzeichen enthält, so muss er in Klammern eingefasst werden.
Wenn Sie OPEN-Einträge erfassen, darf Microsoft Excel nicht laufen. Anderenfalls werden Ihre Einträge beim Beenden von Excel gelöscht.
Verwendung mehrerer 'Open'-Einträge
Sie können mehrere 'OPEN'-Einträge anlegen. Dazu müssen Sie die Einträge mit einer fortlaufenden Nummer (Ganzzahl) versehen. Der erste Eintrag besitzt die Bezeichnung "OPEN", der zweite Eintrag die Bezeichnung "OPEN1", der dritte Eintrag die Bezeichnung "OPEN2" und so weiter. Beim Excelstart werden alle in diesen Einträgen angegebenen Dateien in genau dieser Reihenfolge automatisch geöffnet.
Beachten Sie bitte, dass die 'OPEN'-Einträge immer ohne Unterbruch durchnummeriert und mit Dateinamen gefüllt sein müssen, da sonst die Abarbeitung der zu öffnenden Datei nicht erfolgt bzw. abgebrochen wird. Sobald ein Eintrag nicht existiert oder leer ist, werden keine weiteren Dateien mehr geöffnet.
Beispiele:
- Wenn Sie den Eintrag "OPEN" löschen, sodass nur noch "OPEN1"
und "OPEN2" existiert, wird keine Datei geöffnet.
- Wenn Sie den Eintrag "OPEN1" löschen, sodass nur noch "OPEN"
und "OPEN2" existiert, wird nur die Datei von "OPEN" geöffnet.
- Wenn Sie den Inhalt von Eintrag "OPEN" löschen, sodass bei
"OPEN" keine Datei angegeben ist, wird keine Datei geöffnet.
- Wenn Sie den Inhalt von Eintrag "OPEN1" löschen, sodass bei
"OPEN1" keine Datei angegeben ist, wird nur die Datei von "OPEN"
geöffnet.
Doppelte oder fehlerhafte Dateinamen
Wenn eine Datei nicht vorhanden ist, erscheint beim Start die übliche, bekannte Fehlermeldung:

Abbildung: Fehlermeldung "<Datei> wurde nicht
gefunden"
Wenn zwei oder mehrere Einträge den identischen Pfad und Dateinamen enthalten, so wird dieser Eintrag automatisch übersprungen. Es wird keine Fehlermeldung eingeblendet.
Wenn ein Eintrag einen Dateinamen enthält, der bereits in einem anderen, vorhergehenden Eintrag verwendet wurde, der Dateipfad jedoch unterschiedlich ist, erscheint diese Fehlermeldung:

Abbildung: Fehlermeldung "Eine Datei mit dem Namen
<Datei> ist bereits geöffnet"
[31] Kann es sein, dass die Ausführung von Auto-Makros mittels RunAutoMacros nicht richtig funktioniert?
Ja, das Starten von Auto-Makros mittels der RunAutoMacros-Methode funktioniert in bestimmten Situationen tatsächlich nicht korrekt. Immer wenn zwei Auto-Makros nacheinander innerhalb der gleichen Prozedur aufgerufen werden, wird der zweite Aufruf nicht ausgeführt.
Beispiel 1
Das folgende Beispiel verdeutlicht dieses ungewöhliche Verhalten. Fügen
Sie die drei Sub-Prozeduren in ein Standard-Modul des VBA-Projektes ein.
Sub Auto_Open()
Debug.Print "Auto_Open-Makro"
End Sub
Sub Auto_Close()
Debug.Print "Auto_Close-Makro"
End Sub
Sub RunAutoCode()
Debug.Print "Start"
ThisWorkbook.RunAutoMacros which:=xlAutoOpen
ThisWorkbook.RunAutoMacros which:=xlAutoClose
Debug.Print "End"
End Sub
Wenn Sie die Prozedur "RunAutoCode" ausführen, müsste eigentlich zuerst das Auto_Open-Makro und anschliessend das Auto_Close-Makro aufgerufen werden. So jedenfalls steht's im Programmcode. Nach der Ausführung werden Sie feststellen, dass im Direktfenster die Meldung "Auto_Close-Makro" fehlt. Lediglich die Meldungen "Start", "Auto_Open-Makro" und "End" sind zu sehen. Das Auto_Close-Makro wurde tatsächlich nicht ausgeführt, obwohl es explizit mit "ThisWorkbook.RunAutoMacros which:=xlAutoClose" gestartet wurde.
Bevor wir uns auf die Suche nach irgend einem versteckten Fehler machen, im Auto_Close-Makro testhalber andere Anweisungen eintragen, die Syntax von RunAutoMacros hinterfragen oder die beiden Konstanten xlAutoOpen und xlAutoClose miteinander tauschen, müssen wir das seltsame Verhalten von RunAutoMacros ganz einfach akzeptieren. Es ist wirklich so, dass der zweite Auto-Makro-Aufruf schlicht übergangen wird. Genau genommen wird nicht nur der zweite Aufruf übergangen sondern immer jeder zweite Aufruf. Das heisst, der zweite Aufruf, der vierte, der sechste und so weiter.
Beispiel 2
An diesem Beispiel lässt sich die Ausführung jedes zweiten Aufrufes gut
erkennen:
Sub RunAutoCode2()
Debug.Print "Start"
ThisWorkbook.RunAutoMacros which:=xlAutoOpen
ThisWorkbook.RunAutoMacros which:=xlAutoClose
ThisWorkbook.RunAutoMacros which:=xlAutoClose
ThisWorkbook.RunAutoMacros which:=xlAutoOpen
Debug.Print "End"
End Sub
Im Direktfenster stehen nach Ausführen der Prozedur die Meldungen "Start", "Auto_Open-Makro", "Auto_Open-Makro" und "End". Gemäss Programmcode müsste jedoch zweimal "Auto_Open-Makro" und ebenfalls zweimal "Auto_Close-Makro" ausgegeben werden. Dem ist jedoch nicht so, da das erste Auto_Close-Makro und das zweite Auto_Open-Makro nicht ausgeführt wurden.
Möchten Sie mehr über Auto-Makros wissen? Hier finden Sie weitere Informationen:
Weitere Informationen |
|
[32] Was bedeuten die Begriffe "Saved Dirty" und "UnSaved Dirty"?
Gelegentlich findet man in Dokumentationen die Begriffe "Saved Dirty" und "UnSaved Dirty". Doch was bedeuten diese? Hier finden Sie die Erklärung.
Begriffsserklärung "Saved", "UnSaved" und "Dirty"
Eine UnSaved Arbeitsmappe ist eine Mappe, die während der aktuellen
Excel-Sitzung nicht gespeichert wurde; beispielsweise eine nicht gespeicherte neue
Arbeitsmappe oder eine existierende geöffnete Arbeitsmappe, die sie geändert aber nicht
gespeichert haben.
Eine Saved Arbeitsmappe ist eine Mappe, die während der aktuellen
Excel-Sitzung gespeichert wurde.
Eine Arbeitsmappe wird als Dirty bezeichnet, wenn in ihr Änderungen
während der aktuellen Excel-Sitzung vorgenommen wurden.
Kombinationen von "Saved", "UnSaved" und "Dirty"
Die folgende Tabelle zeigt alle Kombinationen, die eine Arbeitsmappe in Microsoft Excel 97 besitzen kann.
Excel 97 |
Excel 97 SR-1/SR-2 |
|||
| Aktion | Saved Dirty | UnSaved Dirty | Saved Dirty | UnSaved Dirty |
| Save | Nein | Ja | Nein | Ja |
| SaveAs | Ja | Ja | Ja | Ja |
| Close | Nein | Ja | Nein | Ja |
| Quit (Exit) | Nein | Nein | Ja | Ja |
Unterschied zwischen
Microsoft Excel 97 mit und ohne Service Release
Wie in der obigen Tabelle zu sehen ist, gibt es einen Unterschied zwischen
Microsoft Excel 97 ohne Service Releases und Excel 97 mit SR-1/SR-2 bezüglich der 'Excel
beenden'-Aktion. Microsoft Excel 97 ohne installierte(n) Service Release(s) verhält sich
tatsächlich nicht gleich wie Microsoft Excel 97 mit Service Release(s).
Hinweis
Ich habe es zwar nicht getestet, nehme aber an, dass sich Arbeitsmappen in
Microsoft Excel 2000 und Excel 2002 gleich wie Arbeitsmappen in Excel 97 (mit
installiertem SR-1/SR-2) verhalten.
[33] Wo finde ich Informationen über Zugrifftechniken für sequentielle und binäre Dateien?
Mit Standard VBA-Befehlen und -Funktionen kann man sehr einfach auf beliebige Dateien zugreifen, egal welches Format sie besitzen. Insbesondere die Anweisungen Open, Input, Line Input, Print und Close sowie die Funktionen EOF und FreeFile werden häufig benutzt.
Eine Beschreibung dieser Befehle und Funktionen finden Sie hier:
Weitere Informationen |
|
Eine ausführliche Dokumentation zum Thema
"Dateizugriff mit VBA" finden Sie hier:
Controlling File Access with Visual Basic for
Applications
http://support.microsoft.com/default.aspx?scid=/support/excel/content/fileio/fileio.asp
[34] Wie kann man die Datenquelle einer Pivot-Tabelle ändern?
Microsoft Excel stellt tatsächlich keine Funktion bereit, mit der man die Datenquelle einer bestehenden Pivot-Tabelle ändern kann. Auch Datenquellen von Pivot-Diagrammen (Pivot Charts) und externen Datenbereichen (Query Tables) lassen sich, nachdem sie eingerichtet wurden, nicht mehr über die Excel-Arbeitsoberfläche ändern. Es existiert jedoch eine Möglichkeit: Mittels VBA-Programmcode kann die Datenquelle modifiziert werden.
Durch Anpassen der entsprechenden Eigenschaften der Pivot-Tabelle ist die Änderung eigentlich recht einfach vollzogen - wären da nicht ein paar Dinge, die das Ganze ziemlich kompliziert gestalten:
Wenn nur
das Verzeichnis der Quelldatei geändert hat, braucht man lediglich in den
Verbindungsinformationen (der sogenannte Connection-String) den alten Pfad durch den neuen
Pfad zu ersetzen. Diese Art Änderung ist somit schnell und einfach durchgeführt.
Übrigens
Wenn der
Name der Quelldatei geändert hat, muss man in der Abfragedefinition (SQL-String) den
alten Dateinamen durch den neuen ersetzen. Auch diese Änderung ist nicht kompliziert. Hat
zusätzlich der Pfad geändert, ist dieser wie oben beschrieben in den
Verbindungsinformationen anzupassen.
Wenn die
Datenquelle eine Textdatei ist und die Dateinamenerweiterung der neuen Quelldatei nicht
...
Informationen von Microsoft mit einem einfachen Beispiel
findet man hier:
Excel 2000: HOW TO Change the ODBC Data Source
for a PivotTable in Excel 2000
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q272922
[35] Wie findet man am einfachsten das Temp-Verzeichnis heraus?
Es existieren verschiedene Möglichkeiten zum Ermitteln des Temp-Verzeichnisses von Windows. Am weitaus kürzesten und schnellsten ist wahrscheinlich die Abfrage der Umgebungsvariable Temp, auf die sehr einfach anhand der Environ-Funktion von VBA zugegriffen werden kann.
Hier der VBA-Code zum Ausgeben der Temp-Umgebungsvariable mittels Meldungsdialog:
MsgBox Environ("temp")
Der von Environ zurückgegebene Wert kann auch direkt in einer Anweisung verwendet werden. Beispielsweise so:
Open Environ("temp") & "\~dbx001.bmp" For Input As #1
Es spielt übrigens keine Rolle, ob das Wort "Temp" in Gross- oder Kleinbuchstaben geschrieben wird.
Eine andere Möglichkeit ist das Aufrufen der Windows API-Funktion GetTempPath. Diese Lösung führt zwar zum gleichen Ergebnis, ist aber einiges aufwändiger zu realisieren.
Tatsächlich existieren nochmals zwei weitere Möglichkeiten. Mehr dazu erfahren Sie hier:
Weitere Informationen |
|
|
[36] Kann man von allen Dateien mit benutzerspezifischen Einstellungen Sicherheitskopien anlegen?
Für Microsoft Office 2000 gibt es ein Tool von Microsoft mit dem Titel "Save My Settings Wizard". Mit diesem Wizard können diese Daten gesichert werden:
Die Produktinfo-Seite mit Download-Möglichkeit finden Sie
hier:
Office 2000 Save My Settings Wizard
http://office.microsoft.com/downloads/2000/o2ksmsdd.aspx
Bei Microsoft Office XP ist der Wizard bereits im Lieferumfang enthalten und steht nach Installation von Microsoft Office XP automatisch zur Verfügung.
Die Produktinfo-Seite zur Office XP-Version des Wizards
enthält detailliertere Informationen als die Seite der Microsoft Office 2000-Version und
ist daher einen Blick wert:
Save Your Office XP Settings
http://office.microsoft.com/assistance/2002/articles/oSaveSettingsWizard.aspx
[37] Wie kann ich herausfinden, ob eine Datei ein Kennwort verwendet, ohne sie in Excel öffnen zu müssen?
Inhalt
Einleitung
Möglichkeit 1: Notepad/Editor
Möglichkeit 2: BIFF Viewer
Möglichkeit 3: FileFox
Möglichkeit 4: XLock
Möglichkeit 5: EFEX
Möglichkeit 6: BIFF-Workbench
Möglichkeit 7: VBA/VB-Programm
Weitere Informationen und Links
Ohne Microsoft Excel ist es nicht ganz einfach herauszufinden, ob eine Arbeitsmappe ein Dateikennwort (sog. Lesen-/Schreibkennwort) verwendet. Es gibt mehrere Möglichkeiten, wobei diese mehr oder weniger zuverlässig sind, zum Teil gutes Fachwissen voraussetzen oder spezielle Tools benötigen. Wohlgemerkt geht es hier nicht um das Herausfinden eines Arbeitsmappenkennwortes sondern lediglich um das Überprüfen, ob eine Arbeitsmappe mit einem Dateikennwort geschützt ist.
Interessanterweise geht es mit Abstand am einfachsten mit einem VBA- bzw. VB-Programm. Mit einer einzigen Codezeile lässt sich der Kennwortschutz tatsächlich zuverlässig abfragen. Allerdings benötigt man dazu eine zusätzliche Bibliothek namens "OLE Document Properties Reader" (Datei "dsofile.dll"), welche von Microsoft entwickelt wurde und zur freien Verwendung zur Verfügung steht.
Möglichkeit 1: Notepad/Editor (Utility von Windows)
Öffnen Sie die Arbeitsmappendatei im Windows Editor (Notepad.exe).

Abbildung: Vergleich zweier Arbeitsmappen (Bild anklicken zum
Vergrössern)
Möglichkeit 2: BIFF Viewer (Tool aus dem Microsoft Excel 97 SDK)
Öffnen Sie die Arbeitsmappendatei mit dem BIFF Viewer, einem kleinen Tool aus dem Microsoft Excel 97 SDK.
Suchen Sie im Stream "Workbook" den Record "WRITEACCESS" und öffnen Sie ihn. Wenn in diesem Record ein Benutzername in lesbarer Form steht, besitzt die Datei kein Kennwort. In der folgenden Abbildung ist der Name "Peter Meier" zu sehen.

Abbildung: Hex-Dump einer Arbeitsmappe ohne Dateikennwort
Die nächste Abbildung zeigt den Record "WRITEACCESS" einer kennwortgeschützten Mappe. Hier enthält der Record keinen lesbaren Benutzernamen sondern nur lauter Sonderzeichen, da der Benutzername verschlüsselt ist. Folglich ist die Datei durch ein Kennwort geschützt. Das zweite Indiz ist der Record "FILEPASS" (in der Abbildung mit einem gelben Kreis markiert), der nur in kennwortgeschützten Arbeitsmappen vorhanden ist.

Abbildung: Hex-Dump einer Arbeitsmappe mit Dateikennwort
Download und Beschreibung dieses Tools siehe unter Weitere Informationen und Links.
Möglichkeit 3: FileFox (Freeware Tool)
Öffnen Sie die Arbeitsmappendatei mit dem Freeware Tool FileFox. Wie in der nächsten Abbildung zu erkennen ist, ist das Merkmal "Kennwortschutz" mit "Ja" angegeben.

Abbildung: Kennwortgeschützte Arbeitsmappe in FileFox
Download und Beschreibung dieses Tools siehe unter Weitere Informationen und Links.
Möglichkeit 4: XLock (Freeware Tool)
Öffnen Sie die Arbeitsmappendatei mit dem Freeware Tool XLock. Wenn die nachfolgendend abgebildete Hinweismeldung erscheint, besitzt die Datei ein Kennwort.

Abbildung: Hinweismeldung von XLock bei einer
kennwortgeschützten Arbeitsmappe
Download und Beschreibung dieses Tools siehe unter Weitere Informationen und Links.
Möglichkeit 5: EFEX (Freeware Tool)
Öffnen Sie den Ordner mit der Arbeitsmappendatei mit dem Freeware Tool EFEX. In der Spalte "Benutzer" ist bei der Datei "Kennwortmappe.xls" der Hinweis "(Dateikennwort)" angegeben (vergleiche Abbildung).

Abbildung: Kennwortgeschützte Arbeitsmappe in EFEX
Download und Beschreibung dieses Tools siehe unter Weitere Informationen und Links.
Möglichkeit 6: BIFF-Workbench (Freeware Tool)

Abbildung: BIFF-Workbench mit dem Dump einer
kennwortgeschützten Arbeitsmappe
Download und Beschreibung dieses Tools siehe unter Weitere Informationen und Links.
Möglichkeit 7: VBA/VB-Programm
Die wie eingangs erwähnt mit Abstand einfachste Methode stellt ein VBA- bzw. VB-Programm unter Benutzung der "OLE Document Properties Reader"-Bibliothek dar. Benötigt wird lediglich eine einzige Codezeile:
MsgBox CreateObject("DSOleFile.PropertyReader").GetDocumentProperties("C:\Daten\EineMappe.xls").LocaleInfo
Wenn ein Fragezeichen '?' ausgegeben wird, so besitzt die Arbeitsmappe ein Dateikennwort. Wenn etwas anderes angezeigt wird, z.B. "Germany", dann ist kein Kennwort vorhanden.
Download und Beschreibung dieses Bibliothek siehe unter Weitere Informationen und Links.
Weitere Informationen und Links
Die oben vorgestellten Programme FileFox, XLock, EFEX und BIFF-Workbench sowie die Bibliothek OLE Document Properties Reader können auf der Downloadseite heruntergeladen werden.
Weitere Informationen zum Thema "Kennwort" finden Sie hier:
Verwandte Themen |
|
|
[38] Weshalb erscheint "Kann Makro <Pfad/Datei/Makro> nicht finden" obwohl das Makro existiert?
Bevor die Ursache und Lösung vorgestellt wird, zuerst ein paar Worte zu der Situation, in welcher die Fehlermeldung "Microsoft Excel kann das Makro <Pfad/Datei/Makro> nicht finden" auftritt.
Problem
Es geht um diese Fehlermeldung:

Abbildung: Fehlermeldung "Microsoft Excel kann Makro nicht
finden"
Als bei dem Benutzer die Fehlermeldung erschien, war die im Meldungtext angegebene Datei "D:\NeueDaten\Zeitverzögertes Speichern.xls" in Microsoft Excel als aktive Arbeitsmappe geöffnet. Das Makro "AutomatischSpeichern" existierte auch in dieser Mappe. Die Sub-Prozedur des Makros war korrekt als öffentliche Prozedur mittels Public deklariert. Folgedessen sollte Excel das Makro eigentlich finden können.
Ursache
Die Prozedur "AutomatischSpeichern" befand sich fälschlicherweise
im Codemodul von "DieseArbeitsmappe" und nicht in einem Standardmodul des
VBA-Projektes.
Lösung
"DieseArbeitsmappe.AutomatischSpeichern" oder
"AutomatischSpeichern" in Standardmodul.
[39] Was bedeutet der Ausdruck "round-trip" im Zusammenhang mit Datei öffnen und speichern?
Den Ausdruck "round-trip" könnte man auf Deutsch wörtlich mit "Rundgang" übersetzen. Sinngemäss bedeutet er jedoch eher "Umweg".
Gemeint ist der folgende Vorgang:
Schritt 1: Arbeitsmappe mit einer neuen Excelversion erstellen und speichern (z.B. Excel
2002)
Schritt 2: Arbeitsmappe in einer älteren Excelversion öffnen und speichern (z.B. Excel
97)
Schritt 3: Arbeitsmappe wieder mit der im ersten Schritt verwendeten neuen Excelversion
öffnen (d.h. Excel 2002)
Wenn nach Schritt 3 der Inhalt der Mappe absolut identisch ist mit demjenigen Mappeninhalt, der in Schritt 1 gespeichert wurde, so war der "round-trip" erfolgreich, d.h. führte nicht zu einer Veränderung der Arbeitsmappe oder sogar zu einem Datenverlust.
Wenn beispielsweise eine bestimmte Einstellung (bzw. Feature) durch obigen Vorgang verändert wird, weil die ältere Excelversion die Einstellung nicht erkennt und daher beispielsweise zurücksetzt, so ist die Einstellung nicht "round-trip"-fähig. Das Microsoft Excel 2002-Feature "Fehlerwerte als" ist so eine Einstellung.
Weitere Informationen mit einem Beispiel eines
nicht "round-trip"-fähigen Features:
XL2002: Einstellung "Fehlerwerte
als" geht beim Öffnen und Speichern von Arbeitsmappe in niedrigerer Version verloren
http://support.microsoft.com/?scid=kb;de;D282406
XL2002: "Print Cell Errors As" Setting Is Lost When You
Open and Save Workbook in Earlier Version
http://support.microsoft.com/?scid=kb;en-us;282406
[40] Wieso kann eine freigegebene Mappe manchmal nicht geöffnet oder gespeichert werden?
Es kann gelegentlich passieren, dass eine freigegebene Arbeitsmappe von einem Benutzer nicht geöffnet oder gespeichert werden kann. Das Öffnen bzw. Speichern ist also nicht möglich, obwohl die Mappe zur gemeinsamen Bearbeitung freigegeben wurde. In diesen Situationen dauert das Öffnen/Speichern unverhältnis lange oder führt zu dieser Fehlermeldung:

Abbildung: Fehlermeldung "Die Datei ist gesperrt"
Der Grund für dieses "Problem" liegt an der Art und Weise, wie Microsoft Excel Dateien öffnet, speichert und sogar schliesst. Hier eine kurze Beschreibung dieser Vorgänge:
Datei öffnen
Das Öffnen einer Arbeitsmappendatei findet immer im exklusiven Zugriffsmodus
statt.
Datei speichern
Das Speichern einer Arbeitsmappendatei findet immer im exklusiven Zugriffsmodus
statt.
Datei schliessen
Das Schliessen einer Arbeitsmappendatei findet immer im exklusiven Zugriffsmodus
statt.
Als weiterer Grund kommt auch die exklusive Bearbeitung durch ein anderes Programm in Frage. So kann es vorkommen, dass Sie eine freigegebene Arbeitsmappe gerade bearbeiten und dann ein anderes Programm die Arbeitsmappendatei exklusiv öffnet (oder zumindest exklusiv darauf zugreift). Wenn Sie dann versuchen die Mappe zu speichern, während das andere Programm die Datei immer noch sperrt, erhalten Sie die oben abgebildete Fehlermeldung. Als mögliche Verursacher
Die freigegebene Mappe wurde während ihrer Bearbeitung mit dem BIFF Viewer exklusiv geöffnet. Ein User versuchte dann, die Datei zu speichern.
Eine ausführliche Beschreibung der Vorgänge "Excel starten", "Datei öffnen", "Datei speichern", "Datei schliessen" und "Excel beenden" finden Sie hier:
Weitere Informationen |
|
[41] Wo finde ich Informationen über Dateitypen und Dateinamenerweiterungen (File Associations)?
Microsoft Windows verwendet zum Spezifizieren des Dateityps einer Datei grundsätzlich die so genannte Dateinamenerweiterung (File Extension) der Datei. Wenn beispielsweise eine Datei die Dateinamenerweiterung "xls" trägt, so besitzt die Datei den Dateityp "Microsoft Excel-Arbeitsmappe". Da sich beim Umbenennen einer Datei (sofern die Dateinamenerweiterung geändert wird) zwangsläufig der Dateityp ändert, zeigt der Windows Explorer vor dem Umbenennen eine Sicherheitsrückfrage:

Abbildung: Rückfrage des Explorers beim Umbenennen einer Datei
Die Zuordnungen zwischen Dateityp und Dateinamenerweiterung (beziehungsweise umgekehrt) sind in der Windows Registry abgelegt. Die folgenden drei Dialogfenster des Windows Explorers dienen zum manuellen Bearbeiten dieser Zuordnungen.



Eine ausführliche Dokumentation zum Thema "Verstehen
von Dateityp-Zuordnungen" finden Sie hier:
Understanding Microsoft Windows File
Associations
http://www.microsoft.com/TechNet/prodtechnol/win98/maintain/assoc.asp
Informationen über Änderungen in Windows 2000 und Windows
Server 2003 finden Sie hier:
Changes in File
Types and File Association Features in Windows 2000 and Windows Server 2003
http://support.microsoft.com/?scid=kb;EN-US;257592
Weitere Informationen |
|
|
[42] Wie findet man heraus, von welchem Benutzer eine bestimmte Mappe gerade bearbeitet wird?
Es ist eigentlich ganz einfach, den Benutzer einer momentan bearbeiteten Arbeitsmappe herauszufinden. Dazu braucht man lediglich die gewünschte Mappe zu öffnen. Wenn das Fenster "Dateireservierung" erscheint, so ist die Arbeitsmappe gerade in Bearbeitung. Auf dem Fenster ist erwähnt, wie der Name des aktuellen Benutzers lautet.

Abbildung: Dateireservierung "<Datei> wird
bearbeitet von <Benutzer>"
Es existieren allerdings eine Einschränkung. Das obige Dialogfenster erscheint nicht, wenn es sich um eine freigegebene Arbeitsmappe handelt. Da eine derartige Mappe von mehreren Benutzern gleichzeitig bearbeitet werden kann, gibt es folglich keine Dateireservierung.
Etwas schwieriger wird es, wenn Sie den Bearbeiter herausfinden wollen, ohne die Arbeitsmappe in Microsoft Excel zu öffnen. Es gibt insbesondere zwei Situationen, in denen Sie dies möchten beziehungsweise müssen:
1. Auf dem Computer ist kein Microsoft Excel installiert
In den meisten Firmen - zumindest in den grösseren - ist Microsoft Office
gewöhnlich auf allen Arbeitsstationen installiert, da man eine Firmenlizenz von Microsoft
Office besitzt oder aus organisatorischen Überlegungen oder schlicht der Einfachheit
halber jeden Rechner identisch mit Software ausrüstet. Dennoch gibt es viele Computer,
auf denen kein Excel installiert ist, wie zum Beispiel einem Netzwerk-Dateiserver oder
einem Webserver. So kann es durchaus vorkommen, dass Sie als PC-/LAN-Supporter vor einem
Rechner sitzen und ohne Microsoft Excel herausfinden möchten, wer eine bestimmte Datei
gerade bearbeitet (oder mit anderen Worten blockiert).
2. Sie wollen nicht als letzter Benutzer vermerkt werden
Wenn Sie eine Arbeitsmappe öffnen, trägt Excel Ihren Benutzernamen in die
xls-Datei ein. Dadurch werden Sie als aktueller Bearbeiter registriert. Wenn Sie die Datei
schliessen, bleibt Ihr Name weiterhin in der Datei eingetragen. Ihr Name verbleibt in der
Datei, auch wenn Sie die Mappe nicht speichern. Dadurch werden Sie als letzter Benutzer
dieser Datei registriert. Nehmen wir an, die in der Mappe gespeicherten Daten wurden
unsachgemäss verändert oder sogar gelöscht, so wird man wahrscheinlich den in der Datei
registrierten Benutzernamen abfragen, um herauszufinden, wer die Datei zuletzt bearbeitet
hat und somit der Verursacher des fehlerhaften Dateiinhaltes ist. Man wird Sie
verdächtigen, da Ihr Name in der Datei eingetragen ist - und das, obwohl Sie die Datei
nur kurz geöffnet hatten, um den aktuellen Bearbeiter zu erfahren.
Die Aufgabe besteht nun darin, den Namen des in der Arbeitsmappendatei eingetragenen Benutzters herauszufinden, ohne dass Microsoft Excel vorhanden sein muss (vergleiche Situation 1) und ohne dass der eigene Benutzername in die Datei geschrieben wird (vergleiche Situation 2). Es gibt dazu eine zuverlässige VBA-Lösung, die jedoch ziemlich aufwändig ist und viel Code enthält.
Den VBA-Programmcode finden Sie hier:
Weitere Informationen |
|
|
[43] Kann eine mit Schreibschutz geöffnete Mappe nachträglich auf Schreib-Lese-Zugriff umgestellt werden?
Man kann den Zugriffsmodus einer geöffneten Arbeitsmappe tatsächlich während der aktuellen Excel-Sitzung nachträglich ändern. Es ist möglich, sowohl eine mit Schreibschutz (read-only) geöffnete Mappe auf Lese-Schreib-Zugriff als auch eine im Schreib-Lese-Zugriffsmodus geöffnete Mappe nachträglich auf read-only umzustellen.
Die Umstellung lässt sich allerdings nur mit einem VBA-Makro durchführen; in Excel selbst ist dies nicht möglich. Hier der dazu benötigte VBA-Programmcode:
VBA-Programmcode
Zugriffsmodus auf "Schreibgeschützt" umstellen:
ActiveWorkbook.ChangeFileAccess xlReadOnly
Zugriffsmodus auf "Lese-Schreib-Zugriff" umstellen:
ActiveWorkbook.ChangeFileAccess xlReadWrite
Wenn Sie nicht sicher sind, welchen Zugriffsmodus die geöffnete Mappe gerade verwendet, müssen Sie vor der Umstellung zuerst den aktuellen Modus ermitteln. Hier ein Beispiel für die Änderung des Zugriffsmodus auf "Lese-Schreib-Zugriff":
If ActiveWorkbook.ReadOnly = True Then
ActiveWorkbook.ChangeFileAccess xlReadWrite
End If
Wenn eine mit Schreibschutz geöffnete Arbeitsmappe nachträglich auf "Lese-Schreib-Zugriff" gesetzt wird, und ein anderer Benutzer hat inzwischen Änderungen in der Mappe vorgenommen, so lädt Excel automatisch die neueste Version der Datei.

Abbildung 3: Dateireservierung "Dateizugriff ändern"
Hinweis
Wenn der Zugriffsmodus bei einer mit Schreibschutz geöffneten Arbeitsmappe auf
"Schreibgeschützt" oder bei einer mit Lese-Schreib-Zugriff geöffneten
Arbeitsmappe auf "Lese-Schreib-Zugriff" gestellt wird, erscheint der
VBA-Laufzeitfehler 1004:

Abbildung: Laufzeitfehler 1004 "Anwendungs- oder
objektdefinierter Fehler"
[44] Warum wird der Vorgabe-Dateiname bei "Application.GetSaveAsFilename" in Hochkommas angezeigt?
Nun, diese Frage ist leicht zu beantworten. Die Methode GetSaveAsFilename blendet diesen Dateidialog ein:

Abbildung: Speichern unter-Dialog mit Dateiname in Hochkommas
Wenn der Dateityp (Argument FileFilter)
weggelassen wird, erscheint der Vorgabe-Dateiname in Hochkommas:
strFilename =
Application.GetSaveAsFilename("NeueMappe.xls")
Bei spezifiziertem Dateityp wird der Dateiname ohne
Hochkommas angezeigt:
strFilename =
Application.GetSaveAsFilename("NeueMappe.xls", "Excel-Arbeitsmappen
(*.xls),*.xls")
[45] Wie kann ich die Sperrung des "Speichern unter"-Menübefehles ohne VBA-Makro umgehen?
Bevor diese Frage beantwortet wird, sollte kurz die Situation erläutert werden, die zu dieser Frage führte. Folgende Gegebenheiten treffen bei einer Arbeitsmappe zu:
1. Die Ereignisprozedur "Workbook_BeforeSave" enthält diesen VBA-Code:
Private Sub
Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then Cancel = True
End Sub
Erläuterung:
Durch das Setzen des Cancel-Parameters auf True wird verhindert,
dass der Menübefehl "Speichern unter" aufgerufen werden kann. Genauer gesagt
kann der Menübefehl schon aufgerufen werden; das Dialogfenster "Speichern
unter" erscheint jedoch nicht.
2. Das VBA-Projekt der Arbeitsmappe ist durch ein Kennwort geschützt (und das Kennwort ist nicht bekannt). Der in der Mappe enthaltene VBA-Programmcode (siehe oben) kann somit weder angezeigt noch geändert werden.
3. Das Anwendungsfenster des VBA-Editors ist gesperrt. Das bedeutet, dass der VBA-Editor nicht geöffnet werden kann.
Lösung
1. In Excel die Symbolleiste
"Steuerelement-Toolbox" einblenden
2. Schaltfläche "Entwurfsmodus" klicken (dadurch wird der Entwurfsmodus
aktiviert)
3. Menübefehl "Speichern unter" ausführen
[46] Kann es passieren, dass man eine sehr grosse Arbeitsmappe nicht mehr speichern kann?
Ja, es kann tatsächlich vorkommen, dass eine grosse Arbeitsmappe nicht mehr gespeichert werden kann. Die Gründe dafür sind allerdings praktisch immer die selben, sodass man die Ursache für das Speichernproblem eigentlich schnell findet.
- Es existieren zu viele verschiedene Zellformate in der
Arbeitsmappe
- Es werden zu viele externe Verknüpfungswerte gespeichert
[47] Welchen Zweck besitzt der MIME-Typ 'application/vnd.ms-excel' für Exceldateien?
Was ist MIME?
MIME ist die Abkürzung von "Multipurpose Internet Mail Extensions". Es ist ein Protokoll zum Definieren von Dateianlagen (File Attachments) für das Internet.
Was ist der Zweck des MIME-Typs?
Die Bezeichnung "MIME-Typ" wird auf Deutsch offiziell mit "Inhaltstyp" übersetzt, was zugegebenermassen etwas ungenau ist. Der Inhaltstyp definiert, wie ein Dokument aus dem Internet geöffnet wird. Bei Exceldateien ist der Inhaltstyp mit "application/vnd.ms-excel" angegeben.
Vermutlich haben Sie schon einmal im Windows Explorer den Menübefehl Extras/Optionen ausgeführt, welcher folgendes Dialogfenster öffnet:

Abbildung: Optionen-Dialog des Windows Explorers

Abbildung: Dialogfenster "Dateityp bearbeiten" des
Windows Explorers
However, because an XLA is just an XLS in disguise, it shares the same CLSID as an Excel Workbook ("{00020820-0000-0000-C000-000000000046}") and is represented by the same Multipurpose Internet Mail Extensions (MIME) type ("application/vnd.ms-excel").
[48] Wieso werden externe Verknüpfungen trotz Verneinen von "Verknüpfungen aktualisieren?" aktualisiert?
Es geht hier um diesen Rückfragedialog, welcher beim Öffnen von Arbeitsmappen mit Verknüpfungen zu anderen Mappen erscheint:

Abbildung: Excel-Rückfrage "Automatische Verknüpfungen
aktualisieren"
In einer speziellen Situation werden die Verknüpfungen in der Arbeitsmappe aktualisiert, obwohl die Frage mit "Nein" beantwortet wird. Doch warum findet in diesem Fall die Aktualisierung trotzdem statt? Hier der Grund:
Wenn Sie eine Arbeitsmappe öffnen, die eine Zellverknüpfung auf eine andere Mappe (die sogenannte Quellmappe) enthält, werden Sie gefragt, ob die Verknüpfung aktualisiert werden soll. Bei dieser Frage können Sie "Ja" oder "Nein" anklicken, worauf Microsoft Excel je nach Antwort die Verknüpfungen aktualisiert oder eben nicht. Wenn Sie nun eine weitere Arbeitsmappe öffnen, die ebenfalls eine Verknüpfung enthält, werden Sie wiederum betreffend Aktualisierung gefragt. Und hier wird's interessant: Falls die Verknüpfung auf die gleiche Quellmappe zeigt wie bei der ersten geöffneten Arbeitsmappe, so muss Excel die in der zweiten zu öffnenden Mappe enthaltene Verknüpfung so aktualisieren, dass anschliessend alle offenen Arbeitsmappen den gleichen konsistenten Datenstand besitzen.
egal ob Sie die Rückfrage mit "Ja" oder "Nein" beantworten. Gleiches findet beim Öffnen einer dritten sowie allen weiteren Arbeitsmappen statt: Sobald eine Verknüpfung mit der identischen Quellmappe existiert, wird Ihre Antwort ignoriert und automatisch aktualisiert. Die nächste Abbildung zeigt eine solche Situation:
Wie in der Abbildung zu sehen ist, besitzen die drei Mappe 1 bis 3 je eine Zellverknüpfung (Zelle A1) auf die gleiche Quellmappe. In der Quellmappe enthält die Zelle A1 die Zahl 500. Beim Öffnen von Mappe 1 wurde keine Aktualisierung der Verknüpfung gewünscht, sodass die Zelle A1 von Mappe 1 den Wert 100 enthält.

Abbildung: Mehrere Verknüfungen auf eine identische Quellmappe
Weitere Informationen finden Sie hier:
Weitere Informationen |
|
[49] Warum wird eine CSV-Datei über "Datei öffnen" korrekt geöffnet, bei Doppelklick im Explorer jedoch nicht?
Es ist tatsächlich so, dass eine CSV-Datei (CSV steht für "Comma Separated Values)", also eine durch ein bestimmtes Trennzeichen (z.B. Komma oder Semikolon) getrennte Textdatei, über den Excel-Dialog "Datei öffnen" (Menübefehl Datei/Öffnen) korrekt geöffnet wird, bei Doppelklicken der CSV-Datei im Windows Explorer jedoch nicht.
Beispiel
Nehmen wir einmal an, folgende CSV-Datei soll in Microsoft Excel geladen werden:

Abbildung: Eine CSV-Datei im Windows Editor
Die Datei enthält drei Zeilen mit Daten, die in fünf Spalten (Name, Vorname, Von, Bis und Total) eingefüllt werden sollen.
Verhalten von Excel
Wenn Sie diese Datei öffnen, indem Sie in Excel den "Datei öffnen"-Dialog (Menübefehl Datei/Öffnen) verwenden oder die Datei in der Liste der zuletzt verwendeten Dateien auswählen (Menü Datei), so werden die Daten erwartungsgemäss importiert. In Excel werden Sie diese Tabelle sehen:

Abbildung: Korrekt importierte CSV-Datei
Wird jedoch die Datei mittels Doppelklick im Windows Explorer geöffnet (oder Kontext-Menübefehl "Öffnen" oder Enter-Taste), wird der Import nicht korrekt durchgeführt, wodurch Sie folgendes Bild erhalten:

Abbildung: Falsch importierte CSV-Datei
Lösung
Das Öffnen-Verhalten wird geändert, indem Sie im Windows Explorer wie folgt vorgehen:
Schritt 1: Windows Explorer öffnen.
Schritt 2:
Menübefehl Ansicht/Optionen ausführen (Dialog "Optionen" erscheint).

Abbildung: Optionen-Dialog des Windows Explorers
Schritt 3: Im Dialog "Optionen" auf die Registerseite "Dateitypen"
wechseln.
Schritt 4: In
der Liste "Registrierte Dateitypen" den Eintrag "Microsoft Excel - Komma
getrennte Dateien (CSV)" markieren.
Schritt 5:
Schaltfläche "Bearbeiten" klicken (Dialog "Dateityp bearbeiten"
erscheint).

Abbildung: Dialogfenster "Dateityp bearbeiten"
des Windows Explorers
Schritt 6: Unter "Vorgänge" den Eintrag "open" markieren.
Schritt 7:
Schaltfläche "Bearbeiten" klicken (Dialog "Vorgang bearbeiten für
..." erscheint).

Abbildung: Dialogfenster "Vorgang bearbeiten für
Typ: <Dateityp>" des Windows Explorers
Schritt 8: Im Eingabefeld "DDE-Nachricht" steht
"[open("%1")]". Das Wort "open" durch "öffnen"
ersetzen, sodass neu "[öffnen("%1")]" eingetragen ist.
Schritt 9: OK
klicken (Dialog schliessen).
Schritt 10:
Zwei Mal auf Schliessen klicken (restliche Dialoge schliessen).
Nun funktioniert der Doppelklick auf eine CSV-Datei wie erwartet.
[50] Wie kann ich einstellen, welches Programm beim Öffnen einer Datei gestartet wird?
Beschreibung folgt...
Change the program that starts when you open a file
Many file types in Microsoft Windows are registered to be opened by a particular program. For example, Notepad starts when you want to open a text (.txt) file. You can change the program that starts when you open a file of a certain type.
Do one of the following:
For Windows 2000 and Windows Millennium Edition:
For Windows 98 and Windows NT 4.0:
Informationen über Änderungen in Windows 2000 und Windows
Server 2003 finden Sie hier:
Changes in File Types and File Association
Features in Windows 2000 and Windows Server 2003
http://support.microsoft.com/?scid=kb;EN-US;257592
Weitere Informationen |
|
|
[51] Warum stimmt das Erstellungsdatum der Excel-Datei nicht mit demjenigen der Excel-Mappe überein?
Im Windows Explorer können bekanntlich die Eigenschaften einer Datei über den Menübefehl Eigenschaften (rechte Maustaste) eingesehen und teilweise auch geändert werden. Auch in Microsoft Excel kann man die Datei-Eigenschaften ansehen; und zwar über den Menübefehl Datei/Eigenschaften.
Interessant ist, dass es auf dem Fenster "Eigenschaften von <Datei>" zwei Felder für das Erstellt-Datum gibt. Das eine Feld befindet sich auf der Registerseite "Allgemein":

Abbildung: Eigenschaften-Dialog mit Registerseite
"Allgemein"
Das andere Erstellt-Feld ist auf der Registerseite "Statistik" zu finden:

Abbildung: Eigenschaften-Dialog mit Registerseite
"Statistik"
Wenn Sie diese beiden Felder anschauen, werden Sie feststellen, dass das angezeigte Datum nicht identisch ist.
Sub GetCreationDates()
MsgBox "Erstellungsdatum des Dokumentes: " &
ThisWorkbook.BuiltinDocumentProperties(11)
MsgBox "Erstellungsdatum der Datei: " &
CreateObject("Scripting.FileSystemObject").GetFile(ThisWorkbook.FullName).DateCreated
End Sub
Sub SetCreationDate()
ThisWorkbook.BuiltinDocumentProperties(11) = CDate("25.09.04 11:05:37")
MsgBox "Erstellungsdatum des Dokumentes: " &
ThisWorkbook.BuiltinDocumentProperties(11)
End Sub
Achtung: AntiVirus-Programme
Das Erstellungsdatum der Datei kann sich ändern!

Abbildung: Eigenschaften-Dialog mit fehlerhaftem Erstellt-Datum
(Registerseite "Allgemein")
[52] Kann man nach einem Excel-Absturz aus liegengebliebenen Temp-Dateien brauchbare Daten retten?
Die Chance, nach einem Excel-Absturz aus liegengebliebenen temporären Dateien brauchbare Daten retten zu können, ist verschwindend klein. So klein, dass es sich kaum lohnt, überhaupt einen Versuch zu starten.
Speicherorte von temporären Dateien
Während der Arbeit legt Microsoft Excel an zwei Orten auf
der Festplatte temporäre Dateien ab:
- Im Ordner mit der Datei der geöffneten, aktiven Arbeitsmappe
- Im Temp-Verzeichnis von Windows
Speichern einer Arbeitsmappe
Beim Speichern einer Arbeitsmappe schreibt Excel die Mappendaten zuerst in eine temporäre Datei, die einen automatisch generierten, rein zufällig gewählten Dateinamen erhält. Der Dateiname besteht aus einem achtstelligen Hex-Wert und besitzt keine Dateinamenerweiterung (z.B. "14b68100"). Erst wenn diese Datei vollständig und korrekt erstellt ist, d.h. beim Speichern kein Fehler auftrat, wird die Originaldatei, zum Beispiel "MeineMappe.xls", gelöscht und die temporäre Datei umbenannt.
Durch dieses dreistufige Vorgehen - temporäre Datei erstellen, Originaldatei löschen, temporäre Datei umbenennen - wird die Gefahr eines kompletten Datenverlustes beim Speichern auf ein Minimum reduziert.

Abbildung: Temporäre Datei "14b68100" einer
Arbeitsmappe im Arbeitsverzeichnis der Mappe
Auslagern von Daten während der Arbeit
Für jede neue in Excel erstellte Arbeitsmappe (Menübefehl Datei/Neu) werden zwei temporäre Dateien angelegt.
~DFxxxx.tmp
~DF3B25.tmp
~DF3BD0.tmp
3BD0 - 3B25 = AB (=171)
- Jede Mappe belegt ca. 40-50 KB Speicher
- Pro Mappe werden 2 tmp-Dateien im Temp-Ordner erstellt:
- ~DFxxxx.tmp (xxxx=Hex-Wert, basierend auf aktueller Zeit), 0 Bytes gross
- x.tmp (x=Hex-Laufnummer, beginnend bei 2, wenn Excel neu gestartet wurde und keine
tmp-Dateien im Temp-Ordner liegen, stimmen die Dateienamen mit den Mappennamen überein,
d.h. 190.tmp ist Mappe 400, 1F4.tmp ist Mappe 500), 1536 Bytes gross, Datei besitzt das
BIFF-Format, Inhalt all dieser tmp-Dateien ist identisch
- Belastung des Arbeitsspeichers ist sehr klein!
- Ressourcen werden stark belastet (langsame Anzeigegeschwindigkeit)
- Excel verwendet viele Handles, immer 5 pro jede weitere Mappe (wegen tmp-Dateien), bei
500 Mappen sind es 2851 Handles
- CPU-Auslastung steigt beim Anlegen einer weiteren Mappe immer mehr an
- Temporäre Datei zum Auslagern von Daten der Anwendung
"Microsoft Excel"
- Temporäre Datei zum Speichern einer Arbeitsmappe

Abbildung: Temporäre Datei von Excel im Windows
Temp-Verzeichnis
Weitere Informationen über temporäre Dateien und Datenrettung erhalten Sie hier:
Weitere Informationen |
|
[53] Gibt es bekannte Probleme beim Speichern einer Spreadsheet Web Component-Tabelle als Excel-Arbeitsblatt?
Ja. In bestimmten Fällen können Probleme auftreten. Es handelt sich hierbei allerdings weniger um echte Probleme sondern eher um technische Limitationen, die - in seltenen Situationen - einen Einfluss haben.
Es gibt insbesondere zwei Probleme beim Speichern:
1. Die Tabelle enthält zu viele Zeilen und/oder Spalten
2. Eine Formel enthält mehr als 7 verschachtelte Funktionen
(Verschachtelungstiefe)

Abbildung: Fehlermeldung "HTML-Importfehler"

Abbildung: Eine Exceltabelle im Webbrowser
Ausführliche Informationen über die Limitationen der Office Web-Komponenten finden Sie hier:
Weitere Informationen |
|
Weitere Informationen von Microsoft erhalten Sie hier:
Office XP Tool: Web Components
http://office.microsoft.com/downloads/2002/owc10.aspx
http://download.microsoft.com/download/OfficeXPStandard/owc10/1033/WIN98MeXP/EN-US/owc10.exe
[54] Muss ich ActiveX-Controls in VBA-Projekten beim Wechsel auf eine neuere Excel-Version upgraden?
Informationen von Microsoft zu diesem Thema erhalten Sie
hier:
Upgrading Applications that Use the Windows
Common Controls
http://msdn.microsoft.com/library/en-us/vbcon98/html/vbconupgradingapplicationsthatusewindowscommoncontrols.asp
[55] Wie lässt sich mit VBA eine Anwendung starten und dabei ihre Prozess-Basispriorität bestimmen?
Beschreibung folgt...
Weitere Informationen |
|
|
[56] Kann man die am linken Fensterrand der Office 2000-Dateidialoge angezeigten Links/Symbole ändern?
Microsoft Office 2000 verwendet eigene Dateidialoge für "Öffnen" und "Speichern unter". Die nachfolgende Abbildung zeigt den Öffnen-Dateidialog:

Abbildung: Öffnen-Dialog von Microsoft Office 2000
Im linken Fensterbereich sind fünf Symbole/Links für den
Schnellzugriff auf diese Ordner zu sehen:
- Verlauf
- Eigene Dateien
- Desktop
- Favoriten
- Webordner
Viele Anwender suchen nach einer Möglichkeit, diese Symbole individuell anzupassen, so dass sie genau auf die Verzeichnisse zeigen, die bei der täglichen Arbeit verwenden werden. Eine dokumentierte Funktion gibt es dafür nicht.
Vorgehen
1. Starten Sie den Registrierungseditor, indem Sie das Menü Start-Ausführen anwählen, "regedit" eingeben (ohne Anführungszeichen) und mit Ok bestätigen.
2. Klicken Sie sich durch die Datenbankstruktur bis auf die
folgende Ebene:
\HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\Open Find\Places
3. Wenn Sie nun den Zweig "StandardPlaces" öffnen, wird dort für jeden zur Zeit vorgegebenen Eintrag in der Symbolleiste ein Schlüssel angezeigt. Bevor Sie Ihre eigenen Verzeichnisse in der Symbolleiste plazieren können, müssen Sie diese Standardvorgaben verdecken. Zu diesem Zweck klicken Sie als erstes den Eintrag "Desktop" mit der rechten Maustaste an und rufen das Kontextmenü NEU-DWORD-WERT auf.
4. Ersetzen Sie den vorgegebenen Namen für den Eintrag durch "Show" (ohne Anführungszeichen) und bestätigen mit Return. Der Wert wird automatisch auf "0" gesetzt und kann unverändert bleiben
5. Wiederholen Sie die Schritte 3 und 4 nun für die übrigen Einträge unter "StandardPlaces". Die Symbolleiste in den Dateidialogen ist damit leer und kann nun um neue Einträge ergänzt werden. Klicken Sie dazu den Eintrag "UserDefinedPlaces" mit der rechten Maustaste an und rufen Sie das Kontextmenü Neu-Schlüssel auf.
6. Geben Sie "Place1" als Schlüsselnamen ein und bestätigen Sie mit OK.
7. Wiederholen Sie die Schritte 5 und 6 viermal und erstellen Sie die Schlüssel "Place2", "Place3", "Place4" und "Place5"
8. Klicken Sie den Eintrag "Place1" mit der rechten Maustaste an und rufen Sie das Kontextmenü Neu-Zeichenfolge auf.
9. Geben Sie "Name" als Bezeichnung für den Eintrag ein und klicken Sie ihn gleich darauf zweimal an.
10. Auf dem Bildschirm erscheint daraufhin das Dialogfeld Zeichenfolge bearbeiten. Geben Sie hier die Bezeichnung ein, unter der das Verzeichnis in der Symbolleiste aufgeführt sein soll und bestätigen Sie mit Ok.
11. Klicken Sie noch einmal "Place1" mit der rechten Maustaste an und erstellen Sie diesmal mit Neu-Zeichenfolge einen Eintrag "Path".
12. Per Doppelklick auf "Path" erscheint wieder das Dialogfeld, in das Sie nun den kompletten Pfad zu dem gewünschten Verzeichnis eingeben. Dabei kann es sich auch um Netzwerkpfade handeln!
13. Beginnen Sie nun wieder bei Schritt 8 und legen Sie die Einträge "Name" und "Path" auch für die Schlüssel "Place2" bis "Place5" an.
Quelle: SmartTools Publishing (www.smarttools.de)
[57] Gibt es eine Möglichkeit, in Excel v.X (Mac) VBA-Makros von Excel 5.0/95-Arbeitsmappen zu konvertieren?
![]()
Der VBA Converter für Excel v.X konvertiert Makros von Visual Basic für Applikationen, die im Microsoft Excel 5.0/95-Arbeitsmappenformat geöffnet oder gespeichert werden.
Weitere Informationen von Microsoft erhalten Sie hier:
VBA Converter für Excel X
http://www.microsoft.com/downloads/details.aspx?FamilyID=3056ed01-7274-4aa2-8355-67031a43c332&displaylang=de
[58] Was sind "Office Server Extensions (OSE)"?
Working with Office Server Extensions (OSE)
Office Server Extensions (OSE) are software components that make it possible for Office 2000 users to publish to a Web (intranet) site as if they are saving to a file server. This intranet is a dynamic place where people can easily use Web technology to share documents. Office 98 users can use Internet Explorer 4.x to access and read these documents. However, they are unable to take part in shared threaded discussions around documents and Web pages or to receive automatic e-mail notification when relevant Web pages and documents have been commented on or have changed.
[59] Warum ersetzt der Update ein Add-In nicht, trotz neuerer Add-In-Version im Updatepaket?
Wenn Sie ein Microsoft Office 2000-Service Pack oder -Update installieren, werden einige versionslose Office 2000-Dateien auf Ihrer Festplatte möglicherweise nicht wie vorgesehen aktualisiert. Versionslose Dateien in Microsoft Office 2000 weisen die folgenden Dateinamenerweiterungen auf:
.aw
.chm
.lex
.mda
.mde
.ppa
.xla
acwz*.mde
| Versionslose Dateien Als versionslose Dateien werden Dateien bezeichnet, die keine Versionsnummern besitzen. |
Dieses Problem tritt auf, wenn versionslose Dateien auf irgendeine Weise geändert werden. Beispielsweise werden einige Dateien automatisch von Office 2000 geändert, wenn Sie eine Funktion eines Office 2000-Programms verwenden. Windows Installer behandelt diese Dateien als vom Benutzer geänderte versionslose Dateien.
Wenn eine Datei geändert wird, wird in den Eigenschaften der Datei für Geändert am ein späteres Datum als für Erstellt angegeben. Klicken Sie zum Anzeigen der Datumseigenschaften einer Datei mit der rechten Maustaste auf die Datei, klicken Sie auf Eigenschaften und klicken Sie anschliessend auf die Registerkarte "Allgemein". Windows Installer vergleicht bei versionslosen Dateien das Erstellt-Datum mit dem Geändert am-Datum, um zu ermitteln, ob die vorhandene Datei sicher mit der in dem Service Pack oder Update enthaltenen Version aktualisiert werden kann. Mit diesem Mechanismus soll sichergestellt werden, dass keine vom Benutzer geänderten versionslosen Dateien auf der Festplatte überschrieben werden.
Wenn Sie also ein Office 2000-Service Pack oder -Update installieren, das eine aktualisierte Version einer geänderten versionslosen Datei enthält, erkennt Windows Installer die geänderte Version der Datei auf der Festplatte und aktualisiert sie folglich nicht mit der in dem Service Pack oder Update enthaltenen Version.
Weitere Informationen von Microsoft erhalten Sie hier:
OFFICE2000: Versionslose Dateien werden
nach der Installation eines Office 2000-Service Packs oder -Updates nicht aktualisiert
http://support.microsoft.com/?scid=kb;de;331976
OFFICE2000: Unversioned Files Are Not Updated After You Install an
Office 2000 Service Pack, Hotfix, or Patch
http://support.microsoft.com/?scid=kb;en-us;331976
[60] Wie kann ich eine Datei mit VBA verschieben ohne das FileSystemObject-Objekt zu verwenden?
Die Programmiersprache VBA besitzt tatsächlich einen Befehl, mit dem man Dateien verschieben kann. Dieser Befehl heisst allerdings nicht etwa Move (wie man eigentlich erwarten würde) oder FileMove (in Anlehnung an den FileCopy-Befehl) und ist somit bei den VBA-Programmierern eher unbekannt. Obwohl, bekannt ist der Befehl schon, aber nur wenige wissen, dass sich damit Dateien verschieben lassen. Der Befehl heisst Name.
Mit Name kann eine Datei nicht nur umbenannt sondern auch verschoben werden. Eine Einschränkung existiert jedoch: Das Zielverzeichnis, d.h. der Ort, an den die Datei hinverschoben werden soll, muss sich auf dem gleichen Laufwerk befinden wie das Ursprungsverzeichnis.
MoveFile-Methode des FileSystemObject-Objektes
Move-Methode des File-Objektes
Weitere Informationen |
|
|
[61] Kann man eine irrtümlich gelöschte Excel-Arbeitsmappe zurückholen?
Bei Microsoft Excel 97 und 2000 ist es leider nicht möglich, eine gelöschte Arbeitsmappe zurückzuholen. Sobald Sie eine Arbeitsmappendatei (xls-Datei) löschen, wird sie von der Festplatte (beziehungsweise Diskette, Wechselplatte o.ä.) entfernt. Zwar werden nicht die Informationen des von der Datei belegten Speicherbereiches gelöscht, sondern "nur" der Dateieintrag aus der sogenannten TOC (Table of Contents, auf deutsch "Datei-Inhaltsverzeichnis") entfernt. Trotzdem lässt sich die Datei nicht wiederherstellen - ausser Sie besitzen ein entsprechendes Tool, welches eine derartige Funktionalität zur Verfügung stellt.
Bei Microsoft Excel 2002 und 2003 gibt es eine Möglichkeit. Man kann Arbeitsmappen wiederherstellen, die Sie irrtümlich gelöscht, verloren, überschrieben oder nicht gespeichert haben. Der Einfachheit halber hier der Originaltext eines Artikels aus der Microsoft Knowledge Base:
Den vollständigen Artikel finden Sie hier:
XL2002: So stellen Sie eine verlorene
Arbeitsmappe oder eine verlorene Version einer Arbeitsmappe wieder her
http://support.microsoft.com/?scid=kb;de;324521
XL2002: How to Recover a Lost Worksheet or Lost Version of a
Worksheet
http://support.microsoft.com/?scid=kb;en-us;324521
[62] Wie kann man mit VBA am einfachsten einen Dateidialog zum Löschen einer Datei programmieren?
Microsoft Excel besitzt ein spezielles Dialogfenster zum Löschen von Dateien. Es gleicht dem Öffnen-Dialogfenster, ausser dass es mit "Löschen" betitelt ist und anstelle der Öffnen-Schaltfläche eine mit "Löschen" beschriftete Schaltfläche zu sehen ist. Nur wenige Excel-Programmierer wissen, dass dieses Dialogfenster in Microsoft Excel existiert.
Sub DeleteFileWithDialog()
Application.Dialogs(xlDialogFileDelete).Show
End Sub
Übrigens lassen sich auch mehrere andere Dialoge von Windows und Microsoft Excel mit VBA aufrufen und in eigene Anwendungen integrieren. Mehr dazu siehe hier:
Verwandte Fragen |
|
|
[63] Wieso löscht Excel die von meinem Add-In erzeugten Registry-Einträge unter "Init Commands"?
Normalerweise tastet Microsoft Excel die im Registry-Zweig "Init Commands" (sowie auch "Init Menus") abgelegten Einträge nicht an. Es gibt allerdings eine kaum bekannte Ausnahme:
Wenn der Dateiname des Add-Ins mit einem Unterstrich (_) beginnt, so werden beim Beenden von Microsoft Excel die Registry-Einträge unter "Init Commands" und "Init Menus" automatisch entfernt.
Registry-Eintrag im Zweig
"HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Init Commands"
10,&Datei,Als H&TML speichern...,'D:\Programme\Microsoft
Office\Office\MAKRO\Html.xla'!DoHTMLCommand,Arbeitsbereich speichern...,,,
Weitere Informationen |
|
[64] Kann man mit VBA einen Systemprozess abschiessen?
Ja, man kann mit VBA einen Systemprozess abschiessen. Es existieren sogar mehrere Möglichkeiten, wie man einen Windows-Prozess beenden kann.
Anwendungsprozess beenden
Wenn der zu beendende Prozess ein Fenster besitzt, handelt es sich bei ihm gewöhnlich um einen Anwendungsprozess, auch Task genannt. Die auf einem Computer ausgeführten Tasks sind im Task-Manager auf der Registerseite "Anwendungen" ersichtlich:

Abbildung: Windows NT Task-Manager mit Taskliste
In Falle eines Anwendungsprozesses ist es einfacher, die entsprechende Anwendung zu schliessen, wodurch der Prozess automatisch beendet wird. Das Schliessen der Anwendung wird erledigt, indem man ihr Anwendungsfenster sucht (mit der API-Funktion FindWindow) und diesem die Aufforderung schickt, es solle sich schliessen (mit der API-Funktion PostMessage). Den vollständigen VBA-Programmcode finden Sie hier:
Weitere Informationen |
|
Systemprozess beenden
Nicht ganz so einfach ist es, wenn der abzuschiessende Prozess ein "echter" Prozess (d.h. ein Prozess ohne Anwendungsfenster). Ein solcher Prozess wird Systemprozess genannt. Hier empfehle ich die Verwendung des Utilities "Kill.exe", ein kleines MS-DOS-Programm, welches sich auf der Windows-CD befindet. Das Utility wird bei der Windows-Installation nicht automatisch auf die Festplatte kopiert. Es muss somit nachträglich auf den Computer kopiert werden, am besten in das Windows-Verzeichnis.
Möchte man einen Prozess beenden, muss man gewöhnlich seine ID (die Prozess-ID, PID) kennen, da man Windows ja irgendwie mitteilen muss, welcher Prozess beendet werden soll. Das Programm Kill.exe bietet diesbezüglich einen grossen Vorteil: Statt der PID kann man auch den Namen des Prozesses verwenden. Es ist sogar möglich, den Prozess anhand des Anwendungsfenstertitels zu beenden, sofern der Prozess eine Anwendung darstellt, die ein Fenster besitzt.

Abbildung: Windows NT Task-Manager mit Prozessliste
Soll beispielsweise der Prozess "TAPISRV.EXE" beendet werden, so braucht man nicht dessen PID zu wissen (gemäss obiger Abbildung wäre die PID 98). Normalerweise kennt man eher den Prozessnamen, d.h. in unserem Fall TAPISRV.EXE. Obwohl der Aufruf von MS-DOS-Programmen nicht immer ganz einfach ist, genügt hier eine einzige Shell-Funktion ohne Angabe von irgendwelchen Parametern.
Übrigens gibt Kill.exe keine Rückmeldung, falls der angegebene Prozess nicht existiert.
Prozess anhand Anwendungsfenstertitel beenden
Der Anwendungsfenstertitel wird ohne Anführungszeichen angegeben, auch wenn er Leerzeichen enthält. Dieses Beispiel beendet die Anwendung mit dem Fenstertitel "Microsoft Excel - Mappe1". Wenn es mehr als eine Anwendung mit dem gleichen Fenstertitel gibt, so werden alle diese Anwendungen beendet.
Sub KillProcess()
Shell "Kill.exe Microsoft Excel - Mappe1"
End Sub
Ist der genaue Anwendungsfenstertitel nicht bekannt, kann das Platzhalterzeichen '*' verwendet werden. Dieses Beispiel beendet alle Anwendungen, deren Fenstertitel mit "Microsoft Excel" beginnen.
Sub KillProcess()
Shell "Kill.exe Microsoft Excel*"
End Sub
Prozess anhand Prozessname beenden
Durch Angabe des Prozessnamens wird derjenige Prozess beendet, der diesen Namen besitzt. Wenn es mehrere gleichnamige Prozesse gibt, so werden alle diese Prozesse beendet (beispielsweise mehrere Excel-Instanzen, die bekanntlich alle den gleichen Namen EXCEL.EXE besitzen).
Sub KillProcess()
Shell "Kill.exe TAPISRV.EXE"
End Sub
Prozess anhand Prozess-ID beenden
Sub KillProcess()
Shell "Kill.exe 98"
End Sub
Prozess-Beendigung erzwingen
Kill.exe ist übrigens knallhart. Der als Argument übergebene Prozess wird erbarmungslos ohne Rückfrage abgeschossen; auch wenn es sich um einen wichtigen Systemprozess handelt. Gehört der Prozess einer Anwendung, in welcher noch nicht gespeicherte Daten vorhanden sind (beispielsweise Microsoft Word mit einem noch nicht gespeicherten Dokument), wird ebenfalls einfach beendet, d.h. ohne die Daten zu speichern oder eine Meldung auszugeben. Auch ein modal geöffneter Dialog (z.B. das "Datei öffnen"-Dialogfenster von Microsoft Word) wird von Kill.exe automatisch geschlossen. Falls der Prozess trotz allem nicht beendet werden kann (beispielsweise wenn der Prozess gegen diese Art und Weise der Beendigung geschützt ist), können Sie zusätzlich den Parameter 'f' vor dem Prozessnamen bzw. der Prozess-ID angeben ('f' steht für das englische Wort 'force'): Die Codezeile
Shell "Kill.exe -f 98"
beendet den Prozess mit der ID 98 auch dann, wenn sich dieser sozusagen gegen seine Beendigung wehrt.
Prozesse mit mehreren Anwendungsfenstern
Schwieriger wird es, wenn sich mehrere Anwendungsfenster einen einzigen Prozess teilen. Dies ist unter anderem beim Windows Explorer der Fall: Auch wenn mehrere Explorerfenster geöffnet sind, existiert immer nur ein einziger Prozess (gemäss der Abbildung weiter oben ist der Prozess "EXPLORER.EXE" genau ein Mal mit der PID 164 aufgeführt). Beendet man diesen Prozess mit Kill.exe, so werden gleich alle Explorerfenster geschlossen. In diesem Fall ist es also besser, nicht den Prozess zu beenden sondern das gewünschte Anwendungsfenster zu schliessen.
Den zum Schliessen des Fensters benötigten Programmcode finden Sie hier:
Weitere Informationen |
|
Erfolg der Prozess-Beendigung überprüfen
...
Geht nur mit Prozess-ID.
Sub KillProcess()
Shell "Command.com /c Kill.exe 98 >C:\KillLog.txt"
End Sub
In der Ausgabedatei steht:
process #98 killed
[65] Wie kann ich einen Dialog der Windows Systemsteuerung mit VBA öffnen?
Das Öffnen eines Dialoges der Windows Systemsteuerung kann mit der VBA Shell-Funktion vorgenommen werden. Der Pfadname-Parameter unterscheidet sich jedoch von den sonst üblichen Pfadnamen, da es sich bei Systemdialogen nicht um ausführbare Anwendungen handelt. Stattdessen wird Rundll32.exe mit mehreren Parametern aufgerufen.

Abbildung: Windows Systemsteuerungsdialog
"Ländereinstellungen"
Das oben abgebildete Dialogfenster "Ländereinstellungen" wird mit diesem VBA-Code aufgerufen:
Sub OpenControlPanel
Shell "RunDll32.exe Shell32.dll,Control_RunDLL intl.cpl,,0"
End Sub
Die Information, welcher Systemsteuerungdialog zu öffnen ist, wird anhand des Dateinamens des Dialoges angegeben. Im obigen Beispiel ist dies die Datei 'intl.cpl'. Die Dateinamenerweiterung 'cpl' deutet darauf hin, dass es sich bei der Datei um eine sogenannte Systemsteuerungsoption von Windows handelt, einer speziellen DLL-Datei (Systembibliothek). Diese wird auch als Systemsteuerungs-DLL bezeichnet.
Beim Aufrufen des Systemsteuerungdialoges ist der letzte Parameter von Bedeutung (im obigen Codebeispiel die Zahl 0). Dieses Argument gibt an, welche Registerseite des Dialogfensters angezeigt werden soll: 0 steht für die erste Registerseite, 1 für die zweite Seite, 2 für die dritte Seite und so weiter. Im obigen VBA-Beispiel wird wegen der Zahl 0 die erste Registerseite des Ländereinstellungen-Dialogfensters angezeigt, d.h. die Seite "Gebietsschema". Würde man den Wert 2 angeben, so erschiene die nachfolgend abgebildete dritte Registerseite "Währung".

Abbildung: Windows Systemsteuerungsdialog
"Ländereinstellungen" mit Registerseite "Währung"
Übrigens führt ein zu hoher Parameterwert nicht zu einem Fehler. Wird der Wert grösser als die Anzahl existierender Registerseiten - beispielsweise mit 7, 18, 296 oder noch grösser - angegeben, so erscheint immer die erste Registerseite angezeigt.
Das Ansteuern einer bestimmten Registerseite ist somit sehr einfach, gäbe es nicht ein paar Ausnahmen:
Beschreibung der Ausnahmen folgt...
Hier eine Aufstellung der gebräuchlichsten cpl-Dateien von Windows (Liste nicht abschliessend, nach Dateiname sortiert):
| Datei | Bezeichnung |
| access.cpl | Eingabehilfen |
| appwiz.cpl | Software |
| console.cpl | Konsole |
| desk.cpl | Anzeige |
| devapps.cpl | PCMCIA Controller |
| inetcpl.cpl | Internet |
| intl.cpl | Ländereinstellungen |
| main.cpl | Maus |
| mlcfg32.cpl | |
| mmsys.cpl | Multimedia |
| modem.cpl | Modem |
| ncpa.cpl | Netzwerk |
| odbccp32.cpl | ODBC Datenquellen |
| ports.cpl | Anschlüsse |
| srvmgr.cpl | Server |
| sysdm.cpl | System |
| telephon.cpl | Telefon |
| timedate.cpl | Datum/Uhrzeit |
| ups.cpl | USV |
Die obigen Dateien befinden sich gewöhnlich im Systemverzeichnis von Windows (z.B. "C:\WinNT\System32" bei Windows NT 4.0).
Ausführliche Informationen von Microsoft zur Rundll32.exe
erhalten Sie in diesem Knowledge Base-Artikel:
INFO: Windows-Schnittstellen RUNDLL und RUNDLL32
http://support.microsoft.com/?scid=kb;de;164787
INFO: Windows Rundll and Rundll32 Interface
http://support.microsoft.com/?scid=kb;en-us;164787
[66] Gibt es eine Möglichkeit, Datum und Zeit automatisch in eine Logdatei einzutragen?
Der Editor von Windows (Notepad/Notizblock) besitzt ein praktisch unbekanntes Feature. Beim Öffnen einer Textdatei kann man sich nämlich automatisch einen Timestamp (d.h. aktuelle Uhrzeit und Datum) auf die letzte Zeile anfügen lassen. Damit dies funktioniert, muss man lediglich als erste Zeile der Text- bzw. Logdatei die Zeichenfolge ".LOG" (alles Grossbuchstaben) schreiben.
Hier ein Muster einer Logdatei:

Abbildung: Logdatei mit automatischem Timestamp
Wie man sieht, steht auf der ersten Zeile ".LOG". Sobald die Datei (im obigen Beispiel LogFile.txt) mit dem Windows-Editor geöffnet wird, fügt der Editor aufgrund der Schlüsselinformation ".LOG" automatisch einen Timestamp auf der letzten Zeile der Datei hinzu. Dieser zeigt die aktuelle Uhrzeit in Stunden und Minuten sowie das aktuelle Datum. Das Format des Datums entspricht demjenigen, welches in den Ländereinstellungen (Windows-Systemsteuerung) als kurzes Datumsformat eingestellt ist.
Der Timestamp kann auch manuell eingefügt werden, und zwar anhand des Menübefehls Uhrzeit/Datum im Menü Bearbeiten.
Hinweis
Wenn man die Datei mit VBA, d.h. mit der Open-Anweisung, öffnet, wird
kein Timestamp eingefügt. Auch das Öffnen der Datei mit einem anderen Programm wie
beispielsweise WordPad/Write oder Microsoft Word erzeugt keinen Timestamp.
[67] Warum sehe ich nach dem Start von Excel keine Menü- und Symbolleisten?
Mir selbst ist es schon passiert, dass nach dem Starten von Microsoft Excel zwar das Anwendungsfenster und eine leere Arbeitsmappe erschienen, aber weder Menüzeile noch Symbolleisten zu sehen waren. Auch die sonst bei Drücken der rechten Maustaste eingeblendeten Kontextmenüs waren verschwunden. Die Abbildung zeigt, wie sich Microsoft Excel präsentierte:

Abbildung: Microsoft Excel ohne Menü- und Symbolleisten
Die Ursache für diese unvollständige Anzeige war schnell gefunden: Es lag an der Datei mit den benutzerspezifischen Symbolleisten-Einstellungen (sie besitzt die Dateinamenerweiterung "xlb"). Diese Datei war offensichtlich defekt. Da ich wusste, dass Excel-Symbolleisten in dieser Datei abgelegt sind, war es für mich natürlich einfach, den Fehler zu finden und auch zu beheben. Ich musste lediglich die Daten mit der Endung ".xlb" löschen (bzw. umbenennen) und schon startete Excel wieder wie erwartet. Allerdings gingen dadurch alle meine benutzerspezifischen Änderungen an den Symbolleisten verloren.
Weitere Informationen zum Thema Symbolleisten erhalten Sie hier:
Weitere Informationen |
|
|
[68] Wie verhindert man, dass bei neuen Verknüpfungen der Text "Verknüpfung mit" hinzugefügt wird?
Wenn Sie in Windows eine neue Verknüpfung erstellen, so fügt Windows dem Dateinamen der Verknüpfung den Textzusatz "Verknüpfung mit" hinzu. Der Zusatz wird ebenfalls hinzugefügt, wenn Sie im Windows Explorer eine Datei (oder auch mehrere Dateien) in die Zwischenablage kopieren und anschliessend über den Menübefehl "Verknüpfung einfügen" die Verknüpfung(en) erstellen. Diesen von Windows automatisch vorangestellten Text betrachten viele Benutzer als störend.
![]()
Abbildung: Dateiverknüpfung
Anhand einer kleinen Änderung in der Windows Registry kann man verhindern, dass der Textzusatz "Verknüpfung mit" automatisch hinzugefügt wird:
Schlüssel
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer
Eintrag
Link
Wert (Binär)
00 00 00 00

Abbildung: Binärwert des Eintrages "Link" in der
Windows Registry
Wie in der Abbildung zu sehen ist, besitzt "Link" den Binärwert 1C 00 00 00. Ändern Sie den Hex-Wert 1C auf 00. Wenn der Eintrag "Link" nicht existiert, dann über Neu/Binärwert erstellen.
[69] Wie kann ich mit VBA die aktive Arbeitsmappe löschen?
Die Datei der aktiven Arbeitsmappe kann normalerweise gar nicht gelöscht werden, da sie geöffnet und somit gesperrt ist. Dies gilt jedoch nur, wenn die aktive Mappe zur Bearbeitung im Schreib-Lese-Zugriffsmodus (auch Exklusivmodus genannt) geöffnet wurde, was normalerweise der Fall ist. Eine Arbeitsmappe, die schreibgeschützt geöffnet wurde (read-only) oder die für die gemeinsame Bearbeitung freigegeben wurde, kann dagegen ohne weiteres gelöscht werden, da in diesem Fall die xls-Datei nicht gesperrt ist. Damit eine "normal" geöffnete Arbeitsmappe gelöscht werden kann, muss der Zugriffsmodus für diese Arbeitsmappendatei zuerst auf "Schreibgeschützt" umgestellt werden.
Die folgende VBA-Prozedur löscht die Datei der aktiven Arbeitsmappe und schliesst danach die Mappe ohne Änderungen zu speichern. Der Programmcode ist in die aktive Arbeitsmappe einzufügen.
Sub KillActiveWorkbookFile()
ActiveWorkbook.ChangeFileAccess xlReadOnly
Kill ActiveWorkbook.FullName
ThisWorkbook.Close False
End Sub
Bitte beachten Sie, dass das obige VBA-Makro die aktive Arbeitsmappe sofort und endgültig löscht; sowohl von der Festplatte als auch aus dem Arbeitsspeicher.
Weitere Informationen |
|
[70] Wie wird verhindert, dass beim Schliessen des CD-ROM Laufwerkes die eingelegte CD automatisch startet?
Nun, der automatische Start einer soeben eingelegten CD kommt manchmal ja schon ziemlich ungelegen. Oft möchte man lediglich eine CD im CD-ROM Laufwerk deponieren, insbesondere wenn man vorübergehend eine andere CD benutzt hat und somit eigentlich nur den ursprünglichen Zustand wieder herstellen will. In diesem Fall möchte man jedoch nicht, dass diese ursprünglich eingelegte CD automatisch ausgeführt wird. Bei Audio-CDs ist es oft ganz ähnlich: Man möchte nur die CD einlegen aber nicht mit dem CD-Player abspielen. Für diese Situationen gibt es einen Trick:
Halten Sie die Umschalt-Taste, während das CD-ROM Laufwerk geschlossen wird. Und zwar so lange, bis Windows die CD erkannt und die benötigten Datenträger-Informationen ausgelesen hat. Dies sind u.a. Datenträger-Bezeichnung (Volume Name), Datenträger-Nummer (Serial Number), Speicherplatz (Available Space, Free Space, Total Size) und Inhaltsverzeichnis (TOC/Table Of Contents). Durch das Drücken der Umschalt-Taste wird eine allfällig auf der CD vorhandene Autorun.inf-Datei nicht ausgeführt und somit das in dieser Datei eingetragene Programm nicht gestartet. Wenn Sie eine Audio-CD einlegen und beim Schliessen des Laufwerkes die Umschalt-Taste drücken, wird der CD-Player nicht gestartet.
[71] Wird eigentlich VBA-Code nach Schliessen der Arbeitsmappe (Close-Methode) noch ausgeführt?
Es geht hier um folgende Situation: In einem VBA-Projekt existiert eine Sub-Prozedur, in der die Arbeitsmappe geschlossen wird, welche den ausgeführten Programmcode enthält. Diese Prozedur könnte beispielsweise so aussehen:
Sub CloseWorkbook()
ThisWorkbook.Close
MsgBox "Arbeitsmappe wurde geschlossen"
End Sub
Die Codezeile "ThisWorkbook.Close" schliesst die den Programmcode enthaltende Mappe. Die Frage ist nun, ob die Meldung "Arbeitsmappe wurde geschlossen" nach Schliessen der Mappe noch erscheint oder nicht. Die Antwort ist Nein. Die Meldung "Arbeitsmappe wurde geschlossen" erscheint nicht, da die Ausführung des VBA-Programmes wegen der Mappen-Schliessung gestoppt wird.
Vielleicht denken Sie jetzt, es ist ja logisch, dass nach Close kein Programmcode mehr ausgeführt wird. Eigentlich ist es schon logisch - aber: Es ist erst seit Microsoft Excel Version 97 der Fall, dass die Codeausführung gestoppt wird. Bis Excel 95 war dies nicht so, d.h. die Meldung "Arbeitsmappe wurde geschlossen" im obigen Beispiel erscheint in Excel 95. Auf derartige Spezialitäten sollten Sie insbesondere achten, wenn Sie noch alte Excel 95-Makros antreffen, die Sie in eine neuere Excel-Version übernehmen müssen oder ein Makro schreiben, welches sowohl in Excel 95 als auch in nachfolgenden Versionen ausgeführt werden soll.
Beachten Sie, dass bei Schliessen der aktiven Arbeitsmappe der Programmcode durchaus weiter ausgeführt werden kann. Dies ist der Fall, wenn sich der Programmcode nicht in der aktiven Mappe sondern in einer anderen Mappe oder einem Add-In befindet. Das folgende Beispiel schliesst die aktive Arbeitsmappe:
Sub CloseWorkbook()
ActiveWorkbook.Close
MsgBox "Arbeitsmappe wurde geschlossen"
End Sub
Weitere Informationen über Close und die anderen Methoden des Workbook-Objektes finden Sie hier:
Weitere Informationen |
|
[72] Wie erreicht man die Anzeige der Meldung "Projekt kann nicht angezeigt werden" anstelle der Kennworteingabe?
Wenn Sie auch schon mit dem VBA-Editor gearbeitet haben und den VBA-Programmcode einer Arbeitsmappe oder eines Add-Ins von einem anderen Autor anschauen wollten, ist Ihnen vielleicht aufgefallen, dass entweder der Programmcode angezeigt wurde, oder der Kennwort-Eingabedialog erschien (Abbildung 1) oder dann die Meldung "Projekt kann nicht angezeigt werden" auftrat (Abbildung 2).

Abbildung 1: VBA-Editor-Dialog "Kennwort von
VBA-Projekt"

Abbildung 2: VBA-Editor-Meldung "Projekt kann nicht
angezeigt werden"
Beim Kennwort-Dialog sowie bei der "Projekt gesperrt"-Meldung ist offensichtlich das VBA-Projekt geschützt bzw. gesperrt. Wenn man ein Projekt mittels Kennwort schützt, erscheint - nachdem die Datei gespeichert, geschlossen und erneut geöffnet wurde - der Kennwort-Eingabedialog. Doch wie erreicht man, dass die Meldung "Projekt kann nicht angezeigt werden" erscheint, d.h. ein Benutzer gar keine Möglichkeit besitzt, die Programmcode - beispielsweise durch Eingabe des Projekt-Kennwortes - anzusehen?
Dies kann man erreichen, indem man ganz einfach die Arbeitsmappe (es kann auch ein Add-In sein) für die gemeinsame Bearbeitung freigibt (Menü Extras/Arbeitsmappe freigeben). Im Freigabe-Dialogfenster muss dazu nur die Option "Bearbeitung von mehreren Benutzern zur selben Zeit zulassen. [...]" aktiviert werden (siehe nächste Abbildung).

Abbildung: Freigabe-Dialogfenster
Nachdem Sie die oben genannte Option aktiviert und das Freigabe-Dialogfenster über die OK-Schaltfläche verlassen haben, werden Sie von Excel gefragt, ob Sie die erforderliche Speicherung durchführen möchten.

Abbildung: Rückfrage "Dieser Vorgang führt zu einer
Speicherung"
Sobald Sie nun auf OK klicken, ist die Arbeitsmappe freigegeben und das VBA-Projekt gesperrt. Das bedeutet, dass im Gegensatz zum Projektschutz mittels Kennwort die Mappe nicht zuerst geschlossen und neu geöffnet werden muss sondern die Sperre sofort aktiv ist.
Weitere Informationen |
|
|
|
[73] Welche Daten gehen beim Speichern einer in Excel 2000 erstellten Mappe mit dem Excel 5.0/95-Format verloren?
Microsoft Excel 2000 und neuer können Arbeitsmappen in älteren Formaten speichern. Allerdings werden nicht alle Excel 2000-Features in den Vorgängerversionen unterstützt. Aufgrund von Änderungen im Excel-Dateiformat können Daten verloren gehen und Formatierungen verändert werden oder verloren gehen, wenn Sie in Excel 2000 eine Arbeitsmappe mit einem älteren Format speichern. Nachfolgend werden alle Features beschrieben, die in Excel 5.0 und Excel 95 nicht vollständig unterstützt werden.
Weitere Informationen über Dateitypen und das Dateiformat BIFF erhalten Sie hier:
Weitere Informationen |
|
Basic Use Features
| When this Excel 2000 feature | is saved in Excel 5.0/95 format |
| 32,000 characters per cell | Characters beyond the 255th character are truncated. |
| 65,536 rows per worksheet | Data in rows below row 16,384 are truncated. |
| When this Excel 2000 feature | is saved in Excel 5.0/95 format |
| Angled text | Angled text is reformatted to horizontal orientation. |
| Conditional formatting | Conditional formatting is lost, and cells are reformatted as normal text. |
| Data validation | Lost in the conversion. |
| Indenting within cells | Indentation within a cell is lost, and data remains leftaligned. |
| Merge cells option on the Alignment tab in the Cells dialog box (Format menu) | Merged cells are unmerged. |
| New border styles | New border styles are converted to the nearest border style available in Excel 5.0 or 95. |
| Partial page breaks | Partial page breaks are converted to full page breaks. |
| Shrink to fit option on the Alignment tab in the Cells dialog box (Format menu) | Text and data retain the same point size they had before Shrink to fit was selected. |
| When this Excel 2000 feature | is saved in Excel 5.0/95 format |
| Defined labels | Lost in the conversion. |
| English language references in formulas | English language references are converted to A1 reference notations. However, names of named cells and ranges are preserved. |
| When this Excel 2000 feature | is saved in Excel 5.0/95 format |
| 3D bar shapes (cylinder, pyramid, and cone) | 3D shapes are converted to 3D column charts. |
| Angled text on axis and data labels | The text is formatted straight (0 degrees). |
| Bubble chart format | Bubble charts are converted to type 1 XY scatter charts. |
| Data tables on charts | Lost in the conversion. |
| Gradient fills | Gradient fills are converted to the nearest color and pattern. |
| Office Art objects | Office Art objects are converted to the nearest available shape and tool. |
| Pieofpie and barofpie chart types | These charts are converted to type 1 pie charts. |
| Time series axis | Special scaling information is lost, and the axis is converted to a normal category axis. |
| When this Excel 2000 feature | is saved in Excel 5.0/95 format |
| Calculated fields, calculated items, and formatting based on structure | These PivotTable features are preserved until the user makes changes to or refreshes the data in the PivotTable view. Then they are lost. |
| PivotTable properties sheet | All new properties are lost. These include: |
| Preserved formatting | Formatting is saved, but structured behavior is lost as soon as the user makes changes to or refreshes the PivotTable data. |
| When this Excel 2000 feature | is saved in Excel 5.0/95 format |
| Comments | Comments are converted to CellTips. |
| Hyperlink (Insert menu) | The HYPERLINK value is lost. |
| Multiuser workbooks | Sharing is disabled, and the change log is lost. |
| Revision marks and audit trail | Lost in the conversion; the change log is also lost. |
| When this Excel 2000 feature | is saved in Excel 5.0/95 format |
| Parameterized queries | Parameterized queries cannot be executed or edited. |
| Report templates | Lost in the conversion. |
| Shared queries (connections without a data source name, or DSN) | Files that contain connections without DSN are supported in Excel 95 (with ODBC 2.0). In Excel 5.0 (with ODBC 1.0) the user is prompted for connection information. |
| When this Excel 2000 feature | is saved in Excel 5.0/95 format |
| New Excel 2000 objects, methods, and properties | Not all programming elements are supported. |
| ActiveX controls (formerly OLE controls or OCX) | ActiveX controls appear in the workbook but cannot be used. |
| User forms dialog controls | Lost in the conversion. |
[74] Welche Möglichkeiten gibt es für das Abfragen und Ändern von Dokumenteigenschaften mittels VBA?
Vielleicht haben Sie als VBA-Programmierer schon einmal die sogenannten BuiltinDocumentProperties oder CustomDocumentProperties einer Arbeitsmappendatei benutzt. Bestimmt aber kennen Sie das Eigenschaften-Dialogfenster, mit dem man im Windows Explorer die Eigenschaften einer Datei ansehen, und im Falle von Office Dokumentdateien auch die Datei-Infos ändern kann (siehe nachstehende Abbildung). Dieses Dialogfenster lässt sich nicht nur im Windows Explorer sondern auch in Microsoft Excel öffnen (Menübefehl Datei/Eigenschaften).

Abbildung: Datei-Eigenschaften einer Dokumentdatei
Anhand der beiden Eigenschaften BuiltinDocumentProperties oder CustomDocumentProperties kann man mit VBA auf die im oben abgebildeten Dialogfenster angezeigten Informationen zugreifen (die CustomDocumentProperties sind auf der Registerseite "Anpassen" des obigen Dialogfensters aufgeführt). Auf diese Weise kann man jedoch nur auf die Eigenschaften eines Dokumentes zugreifen, das gerade in der Anwendung geöffnet ist, in welcher der VBA-Programmcode ausgeführt wird. Wie kann man aber auf ein beliebiges, nicht geöffnetes Office-Dokument zugreifen?
Der Developer Support von Microsoft hat für diese Aufgabe eine kleine Objektbibliothek in Form einer ActiveX-DLL entwickelt, die man kostenlos einsetzen und auch weitergeben darf (d.h. auch einem selbstentwickelten Programm beifügen darf). Die Bibliothek heisst "OLE Document Properties Object Library" und befindet sich in der Datei DSOFile.dll.
Die Objektbibliothek finden Sie auf der Download-Seite, wobei Sie die Datei DSOFile.dll als einzelne Datei oder als Bestandteil des Paketes "OLE Document Property Reader" (Datei DSOFile.exe) herunterladen können. Das Paket besteht aus einem Setup-Programm, welches die Datei DSOFile.dll, ein kleines Visual Basic-Demoprojekt (mit Source Code, ab VB5) sowie ein paar weitere Dateien auf die Festplatte kopiert.
Der Vorteil des Paketes ist, dass die Objektbibliothek durch das Setup-Programm automatisch registriert wird. Wenn Sie nur die Datei DSOFile.dll herunterladen, müssen Sie die diese von Hand registrieren. Wie das geht, ist auf folgender Themenseite ausführlich beschrieben:
Weitere Informationen |
|
Sie finden dort auch viele Tipps und Beispiele, wie die Bibliothek in eigenen VB- und VBA-Programmen verwendet wird. Diese sind äusserst nützlich, da Micorosft selbst keine Anleitung zur Verfügung stellt.
Auf folgenden beiden Seiten finden Sie weitere Hinweise über die "OLE Document Properties Object Library":
Weitere Informationen |
|
[75] Wie kann man mit VBA eine beliebige Datei für andere Benutzer und Programme sperren?
Hier wird eine Möglichkeit gesucht, wie man mit VBA eine Datei so sperren kann, dass kein anderer Benutzer und kein anderes Programm auf diese Datei mehr zugreifen kann. Die Datei soll dazu nicht nur gegen Schreibzugriff sondern auch gegen Lesezugriff gesperrt werden. Diese Vollsperrung kann manchmal sehr nützlich sein, beispielweise wenn man verhindern möchte, dass während der Dateibenutzung kein Virus-Scanner auf die Datei zugreift.
Um herauszufinden, ob eine Datei bereits gesperrt ist, kann man diese im sequentiellen Lesezugriffsmodus sperren (Open <Datei> For Input Lock Read). Es ist dabei unerheblich, ob die zu prüfende Datei eine sequentielle oder binäre Datei ist; der sequentielle Modus funktioniert bei allen Dateiformaten. Das folgende exemplarische VBA-Beispiel zeigt wie's geht.
VBA-Beispiel
Sub OpenFileLockRead()
On Error Goto ErrorHandler
Open "C:\Daten\Datei.xls" For Input Lock Read As #1
'Hier möglichst keine VBA-Befehle einfügen
Close #1
Exit Sub
ErrorHandler:
If Err.Number = 70 Then
MsgBox "Die Datei ist gesperrt!"
End If
Resume Next
End Sub
Ich empfehle, zum Sperren die Datei explizit im binären Zugriffsmodus zu öffnen:
Open "D:\Daten\Datei.xls" For Binary Access Read Lock Read As #1
Wenn Sie möchten, können Sie die Datei auch im binären Zugriffsmodus zum Lesen und Schreiben öffnen und sperren, wobei der Effekt der gleiche ist wie beim Lesezugriff (siehe oben):
Open "D:\Daten\Datei.xls" For Binary Access Read Write Lock Read Write As #1
Wird eine mittels obigem VBA-Programmcode gesperrte Excel-Arbeitsmappe in Microsoft Excel geöffnet, so zeigt Excel diese Fehlermeldung:

Abbildung: Excel-Fehlermeldung "Zugriff verweigert"
Wenn Sie eine Textdatei sperren und diese anschliessend mit dem Windows Editor (Notepad) geöffnet wird, so erscheint eine kuriose Fehlermeldung:

Abbildung: Editor-Fehlermeldung "Datei kann nicht
geöffnet werden"
In der Meldung steht, dass möglicherweise keine Diskette im angegebenen Laufwerk eingelegt ist. Das ist höchst eigenartig, da das Laufwerk eine Festplatte ist (was der Editor bzw. Windows an sich auch weiss). Eigentlich müsste eine Fehlermeldung mit dem Text "Zugriff verweigert" oder so ähnlich erscheinen.
[76] Was muss ich beim Erstellen eines eigenen Add-Ins beachten?
Es ist eigentlich sehr einfach ein eigenes Add-In zu erstellen.

Abbildung: Add-In-Manager von Microsoft Excel
Excel-Menübefehl Datei/Eigenschaften
oder Menübefehl Eigenschaften des Windows Explorers aufrufen, damit das
Dialogfenster "Datei-Eigenschaften" erscheint:
- Titel des Dokumentes (d.h. des Add-Ins) eingeben
-> erscheint dann als Add-In-Name in der Liste sowie als
Rahmenbeschriftung im unteren Fensterbereich des Add-In-Managers
- Beschreibung des Dokumentes eingeben
-> erscheint im Rahmenfeld im unteren Fensterbereich des
Add-In-Managers
VBA-Editor:
- Im Projekt-Explorer den Eintrag VBAProject (<Dateiname>) auswählen
Im Eigenschaften-Fenster den Standardwert VBAProject der Eigenschaft
(Name) umbenennen
- Im Projekt-Explorer das Modul DieseArbeitsmappe auswählen
Im Eigenschaften-Fenster die Arbeitsmappen-Eigenschaft IsAddIn auf True
setzen
Microsoft Excel:
- Menübefehl Datei/Speichern unter aufrufen
Dateityp "Microsoft Excel-Add-In (*.xla)" auswählen
In das Verzeichnis "Library" oder "Makros" wechseln
Dateiname für das Add-In eingeben
Weitere Informationen |
|
[77] Wieso dauert das Öffnen einer Arbeitsmappe mit vielen Tabellenblättern manchmal sehr viel länger als sonst?
Nun, es gibt natürlich mehrere Ursachen, weshalb ein und dieselbe Arbeitsmappe manchmal erheblich mehr Zeit als üblich zum Öffnen benötigt.
Bevor die eigentliche Ursache vorgestellt wird, zunächst zwei andere Ursachen, die ebenfalls verantwortlich sein können:
1. Es könnte beispielsweise sein, dass Ihr System stärker ausgelastet ist als beim letzten Öffnen, d.h. sehr viele Anwendungen bereits ausgeführt werden und dadurch nur sehr wenig physischer Arbeitsspeicher (RAM) zur Verfügung steht. Beim Öffnen der Mappe muss Windows Speicherplatz freimachen, indem es momentan nicht benötigte Informationen in den virtuellen Arbeitsspeicher auslagert, was schon einen Moment dauert.
2. Wenn bereits viele Arbeitsmappen in Microsoft Excel offen sind, und dann wird eine weitere Arbeitsmappe geöffnet, so werden sämtliche geöffneten Mappen neu berechnet. Dieser Vorgang dauert verständlicherweise länger, wie wenn nur eine einzige Arbeitsmappe geöffnet ist.
Es gibt jedoch einen ganz eindeutigen Grund, weshalb eine Arbeitsmappe mit vielen Arbeitsblättern unter bestimmten Umständen tatsächlich sehr viel mehr Zeit zum Öffnen benötigt; und zwar unabhängig von der aktuellen Systemauslastung, der Anzahl bereits geöffneter Exceldateien und der Datenmenge in der zu öffnenden Mappe:
Bei geöffnetem VBA-Editor wird während dem Datei öffnen-Vorgang die Struktur des VBA-Projektes der Arbeitsmappe geladen. Es spielt dabei keine Rolle, ob die Mappe tatsächlich ein VBA-Projekt bzw. VBA-Code enthält. Da jedes Tabellenblatt ein Projekt-Modul darstellt, werden bei einer Mappe, die beispielsweise 200 Blätter enthält, insgesamt 200 Module angelegt.

Abbildung: Der Projekt-Explorer
Die Tabellenblätter bzw. die Module werden im Projekt-Explorer des VBA-Editors aufgelistet. Die Projektstruktur wird übrigens auch dann geladen, wenn das Fenster des Projekt-Explorers geschlossen ist.
Die benötigte Dauer zum Öffnen der Arbeitsmappe ist abhängig von der Geschwindigkeit des Computers, genauer gesagt von der CPU-Geschwindigkeit. Das Öffnen einer Mappe mit 200 Tabellenblättern dauert auf einem Rechner mit 300 MHz CPU ungefähr 12 Sekunden (bei geöffnetem VBA-Editor). Ist der VBA-Editor nicht offen, dauert das Öffnen der Mappe lediglich etwa 1 Sekunde.
[78] Warum ist eine Arbeitsmappendatei plötzlich grösser, obwohl keine Änderungen vorgenommen wurden?
Es gibt tatsächlich eine Situation, in der eine Arbeitsmappendatei je nach Anzahl der enthaltenen Arbeitsblättern nach dem Speichern zum Teil erheblich grösser ist. Pro Arbeitsblatt (Tabellenblatt, Diagrammblatt usw.) in der Arbeitsmappe vergrössert sich die xls-Datei um zirka 1.48 KB (Wert anhand einer Excel 97-Arbeitsmappe ermittelt; bei Excel 2000 und neuer müsste dieser Wert theoretisch gleich sein).
Generierung der VBA-Projektstruktur (Symbol Table)
Wie erwähnt werden im Projekt-Explorer die VBA-Module des Projektes angezeigt, was soviel heisst wie, dass die sogenannte "Symbol Table" bzw. "Project Table" visuell dargestellt wird. Das VBA-Projekt (d.h. die Symbol Table) einer neu angelegten Arbeitsmappe wird nur dann generiert, wenn der VBA-Editor geöffnet ist.
Das bedeutet folgendes:
Wenn eine neue Arbeitsmappe
angelegt wird, während der VBA-Editor geschlossen ist, wird die
VBA-Projektstruktur zu dieser Mappe nicht generiert.
Wenn der VBA-Editor
geöffnet ist und dann eine neue Arbeitsmappe angelegt wird, wird die
Projektstruktur generiert.
Wenn der VBA-Editor
geschlossen ist, dann eine neue Arbeitsmappe angelegt und anschliessend der VBA-Editor
geöffnet wird, wird die Projektstruktur beim Öffnen des VBA-Editors generiert.
Wenn der VBA-Editor
geöffnet ist, dann eine neue Arbeitsmappe angelegt und anschliessend der VBA-Editor
geschlossen wird, wird die Projektstruktur beim Anlegen der neuen Mappe generiert,
da zu diesem Zeitpunkt der VBA-Editor geöffnet war.
Wurde die VBA-Projektstruktur einer Mappe einmal generiert, so bleibt sie für immer bestehen. Man kann die Generierung nicht rückgängig machen. Es ist auch nicht möglich, die Projektstruktur aus einer Mappe zu entfernen.
Dateigrösse mit und ohne VBA-Projektstruktur
Die Struktur des VBA-Projektes wird in der Arbeitsmappendatei gespeichert. Wird eine neu angelegte Arbeitsmappe gespeichert, deren Projektstruktur nicht generiert wurde, so wird die Mappe ohne Projektstruktur gespeichert. Hier ein paar Werte, die ich mit verschiedenen Tests ermittelt habe:
Erstellen und speichern einer neuen, leeren
Arbeitsmappe
Die Grösse der
Arbeitsmappendatei mit 3 Arbeitsblättern und ohne Projektstruktur
beträgt 14 KB.
Die Grösse der
Arbeitsmappendatei mit 3 Arbeitsblättern und mit Projektstruktur
beträgt 17 KB (-> 3 KB mehr als ohne Projektstruktur).
Die
Grösse der Arbeitsmappendatei mit 255 Arbeitsblättern und ohne
Projektstruktur beträgt 82 KB.
Die Grösse der
Arbeitsmappendatei mit 255 Arbeitsblättern und mit Projektstruktur
beträgt 460 KB (-> 378 KB mehr als ohne Projektstruktur).
Die obigen Werte wurden anhand einer Microsoft Excel 97-Arbeitsmappe ermittelt.
Hinweis
Wie insbesondere an der Dateigrösse 460 KB zu sehen ist, sollte man den
VBA-Editor schliessen, bevor man eine neue Arbeitsmappe erstellt. Solange man keine Makros
oder VBA-Programmcode in der Mappe benötigt, sollte der VBA-Editor geschlossen bleiben,
da dies vor allem bei Mappen mit vielen Tabellenblättern zu einer viel kleineren Datei
führt.
Dieser Artikel der Microsoft Knowledge Base enthält ein
paar weitere Informationen:
XL97: File Size Increases After Launching Visual
Basic Editor
http://support.microsoft.com/?scid=kb;en-us;166092
In der Microsoft Knowledge Base gibt es noch einen Artikel
zu einem ähnlichen Thema:
OFFICE2000: Template Size Increases When You Add
or Remove Visual Basic Code
http://support.microsoft.com/?scid=kb;en-us;264907
Informationen zum Thema "Dateigrösse" und "Dateigrösse reduzieren" erhalten Sie hier:
Weitere Informationen |
|
[79] Welche Codeprozeduren laufen beim Öffnen einer Arbeitsmappe ab
Dies ist eine berechtigte Frage. Oft neigen nämlich Excel-Benutzer zu der Annahme, dass lediglich das Auto_Open-Makro und die Ereignisprozedur Workbook_Open beim Öffnen einer Mappe ausgeführt werden. Dies sind zugegebenermassen auch die Orte, in denen man den auszuführenden VBA-Code üblicherweise ablegt. Zwei weitere Ereignisse werden jedoch ebenfalls ausgelöst: Workbook_Activate und Workbook_WindowActivate.
Insgesamt werden diese Prozeduren beim Öffnen einer Arbeitsmappe abgearbeitet (und zwar in der hier angegebenen Reihenfolge):
1. Workbook_Open-Ereignis
2. Workbook_Activate-Ereignis
3. Workbook_WindowActivate-Ereignis
4. Auto_Open-Makro
Weitere Informationen über die beim Öffnen, Speichern und Schliessen einer Mappe und bei anderen Vorgängen ausgeführten Prozesse sowie Informationen über das Auto_Open-Makro finden Sie hier:
Weitere Informationen |
|
|
|
[80] Warum liefert meine in einer anderen, geschlossenen Mappe abgelegte benutzerdefinierte Funktion "#WERT!"?
Es kommt doch immer wieder mal vor, dass eine selbst geschriebene Tabellenfunktion lediglich den Fehler "#WERT!" anstatt das erwartete Resultat liefert. Gewöhnlich handelt es sich dann um irgend einen Programmfehler in der benutzerdefinierten Funktion. Es kommt allerdings auch vor, dass die Funktion einwandfrei programmiert ist und auch ohne Probleme und Fehler funktioniert, wenn man die Funktion innerhalb der gleichen Arbeitsmappe verwendet, oder in einer anderen Mappe aufruft, solange die Mappe mit der Funktion geöffnet ist. Sobald jedoch die Mappe, welche die benutzerdefinierte Funktion enthält, geschlossen wird, wird nur noch "#WERT!" angezeigt - auch nach einer vollständigen Neuberechnung.
Doch wieso kann man in dieser Situation keine benutzerdefinierte Funktion aufrufen, die sich in einer anderen, geschlossenen Arbeitsmappe befindet? Normalerweise ist dies problemlos möglich!
Nehmen wir einmal folgende benutzerdefinierte Funktion als Beispiel:
Public Function SumBgColor(Bereich As Range, Farbcode As Integer) As DoubleDer Excel-User hatte keinerlei Probleme mit der Funktion. Allerdings nur solange das erste Argument "Bereich" einen Bezug auf die gleiche oder eine andere, ebenfalls geöffnete Mappe enthielt. Kaum wurde ein externer Bezug auf eine andere Mappe verwendet und diese Mappe dann geschlossen, erschien als Formelergebnis nur noch "#WERT!". Ich hatte daraufhin versucht, den geposteten Code zu debuggen, indem ich einen Haltepunkt auf der erste ausführbare Codezeile (For Each rngZelle ...) setzte. Keine Chance! Der Programmzeiger kam gar nicht bis dorthin, d.h. die Funktion wurde gar nicht erst aufgerufen! Und was bedeutet dies, wenn während der Recalculation eine Funktion einfach verlassen wird und "#WERT!" zurückgibt? Genau: Sie enthält einen Fehler.
Um es kurz zu machen, war für den externen Zellbezug die Deklaration von
"Bereich" falsch. Anstatt "Bereich As Range" müsste es "Bereich
As Variant" heissen. Weil die Datenübertragung der Verknüpfung bei geschlossener
Quellmappe via DDE erfolgte, konnten nur noch Daten und keine Objekte übermittelt werden.
Folglich war die Deklaration der Variable "Bereich" als Range-Objekt
nicht mehr zulässig und führte bereits in der Funktionsdefinition zu einem Fehler. Hier
ein kurzer Ausschnitt aus einem vor einiger Zeit von mir geschriebenen Mail:
"Variant kann jeden beliebigen Datentyp aufnehmen. Weil der Bezug auf einen
Zellbereich verweist, und ein Bereich per Definition eine oder mehrere auf einer Fläche
(Tabellenblatt mit Koordinatensystem 'Zeile' und 'Spalte') angeordneten Zellen umfasst,
nimmt der Variant-Parameter 'Bereich' ein zweidimensionales Datenfeld entgegen. Die
entsprechende Abfrage "?TypeName(Bereich)" im Direktfenster ergibt
'Variant()'.".
Nun ja, man hätte also "Range" durch "Variant" ersetzen können, was aber das Problem nicht gelöst hätte. Die Funktion ist auf ein Range-Objekt angewiesen, weil es den "ColorIndex" von "Interior" benötigt. Über DDE gibt's jedoch keine Objekte. Also: Es existiert tatsächlich keine Möglichkeit, die Funktion mit dem aktuellen oder irgend einem anderen VBA-Code dazu bringen zu können, die Zellen-Hintergrundfarbe aus einer geschlossenen Mappe herausfinden zu können.
[81] Was sollte man beim Upgrade von Excel 2001 (Macintosh) auf Excel X (Macintosh) beachten?
![]()
Haben Sie Einträge im Benutzerwörterbuch oder in der Autokorrektur-Liste hinzugefügt? Haben Sie eigene Symbolleisten oder Diagramme erstellt? Wenn ja, dann können Sie diese benutzerdefinierten Einstellungen nach Excel X übernehmen, indem Sie ein paar Dateien kopieren. Wenn Sie planen, nebst Excel auch das OS upzugraden (beispielsweise von OS 9.1 auf OS X), dann müssen Sie die Dateien in ein Verzeichnis auf den Netzwerkserver oder auf einen austauschbaren Datenträger (Diskette, ZIP-Drive, CD Rom usw.) kopieren, bevor Sie das OS upgraden.
Um Ihre benutzerdefinierten Einstellungen und Dateien von Excel 2001 nach Excel X zu übernehmen, kopieren Sie nachfolgend aufgeführte Dateien aus dem "System Folder:Preferences:Microsoft"-Ordner auf der OS 9.x Festplatte (bzw. Partition) in den Ordner "Users/<UserName>/Library/Preferences/Microsoft" (der Platzhalter <UserName> steht für den Benutzernamen) auf der OS X Partition.
Kopieren Sie folgende Einträge und Dateien:
» Benutzer-Wörterbuch
Kopieren Sie die Datei des benutzerdefinierten Wörterbuches.
» Symbolleisten
Kopieren Sie die Excel-Symbolleistendatei (9). Nachdem Sie die Datei an den neuen
Ort kopiert haben, verschieben Sie die existierende Excel-Symbolleistendatei (10) in den
Papierkorb und benennen anschliessend die Excel-Symbolleistendatei (9) in die
Excel-Symbolleistendatei (10) um.
» Diagramme
Kopieren Sie die Benutzer-Diagrammgaleriedatei.
» AutoKorrektur-Einträge
Kopieren Sie die MS Office ACL [English] (Info: ACL steht für
"AutoCorrect List").
» Einstellungen
Kopieren Sie die Excel-Einstellungendatei (9). Nachdem Sie die Datei an den neuen
Ort kopiert haben, verschieben Sie die existierende Excel-Einstellungendatei (10) in den
Papierkorb und benennen anschliessend die Excel-Einstellungendatei (9) in die
Excel-Einstellungendatei (10) um.
Weitere Informationen zum Upgrade auf Excel v.X für Macintosh finden Sie auf dieser Microsoft-Internetseite:
Weitere Informationen |
|
|
[82] Wie kann ich eine Mappe schliessen, auf die ein Verweis in einem anderen VBA-Projekt existiert?
Bevor die Lösung gezeigt wird, sollte die Situation kurz vorgestellt werden. Nehmen wir einmal folgende Gegebenheiten an:
1. Im VBA-Projekt der Arbeitsmappe Mappe2.xls ist ein
Verweis auf die Arbeitsmappe Mappe1.xls gesetzt.
2. Die Mappe1.xls wird geöffnet und die Objektreferenz mit Set der
Objektvariable wkb1 zugewiesen.
3. Danach wird Mappe2.xls geöffnet und die Objektreferenz in wkb2
gespeichert.
4. Mappe2.xls wird mit der Close-Methode geschlossen
5. Zuletzt wird Mappe1.xls ebenfalls mit Close geschlossen. Bei der
Ausführung dieser Codezeile tritt der Laufzeitfehler 1004 mit dem Text "Diese
Arbeitsmappe wird momentan von einer anderen Arbeitsmappe verwendet und kann nicht
geschlossen werden." auf.
Die nächste Abbildung zeigt diese Fehlermeldung:

Abbildung: Laufzeitfehler 1004 "Arbeitsmappe kann nicht
geschlossen werden"
Wenn versucht wird, die Arbeitsmappe direkt in Microsoft Excel zu schliessen, tritt eine Fehlermeldung mit dem gleichen Meldungstext in Excel auf.
Diese Fehlermeldung erscheint übrigens auch, wenn eine Mappe einen Verweis auf ein Add-In (Dateinamenerweiterung "xla") enthält und dann das Add-In über den Add-In-Manager (Menübefehl Extras/Add-In-Manager) entladen werden soll.
Hier der entsprechende VBA-Programmcode zu obiger Situation:
Sub OpenClose()Die Ursache der auftretenden Fehlermeldung ist, dass bei Ausführung der Codezeile "wkb1.Close" immer noch eine Objektreferenz auf die Mappe2.xls im Speicher vorhanden ist. Und da in Mappe2.xls ein Verweis auf Mappe1.xls enthalten ist, kann folgedessen Mappe1.xls nicht geschlossen werden. Dies, obwohl Mappe2.xls bereits mit der Close-Methode geschlossen wurde.
Damit kein Laufzeitfehler auftritt, muss somit zuerst die Objektreferenz auf Mappe2.xls aus dem Speicher entfernt werden. Dies wird durch Setzen der Objektvariable wkb2 auf Nothing vorgenommen.
Der korrekte VBA-Programmcode sieht folgendermassen aus:
Sub OpenClose()Weitere Informationen zu der hier beschriebenen Fehlermeldung finden Sie hier:
Weitere Informationen |
|
|
Weitere Informationen von Microsoft erhalten Sie in diesem
MS Knowledge Base-Artikel:
XL2000: Cannot Programmatically Close Referenced
Workbook
http://support.microsoft.com/?kbid=213547
Hinweis: Dieser Artikel ist auch auf Microsoft Excel 97 anwendbar.
[83] Wie starte ich am einfachsten den Windows Explorer direkt aus Excel heraus?
VBA-Programmierer schreiben gewöhnlich ein kleines Makro, welches die Shell-Funktion zum Öffnen des Windows Explorers verwendet. Der Code sieht etwa so aus:
Sub OpenExplorer()
Shell "explorer.exe", vbNormalFocus
End Sub
Das Makro wird dann zum Beispiel durch Klicken einer Schaltfläche ausgeführt, die auf dem Arbeitsblatt eingefügt wurde.
Es gibt jedoch eine einfachere Möglichkeit, wie man den Windows Explorer direkt aus Microsoft Excel heraus öffnen kann, und zwar ganz ohne VBA.
ActiveWorkbook.FollowHyperlink "\"
=HYPERLINK("\")
ActiveWorkbook.FollowHyperlink "."
=HYPERLINK(".")
ActiveWorkbook.FollowHyperlink " "
=HYPERLINK(" ")
ActiveWorkbook.FollowHyperlink "C:\Daten"
=HYPERLINK("C:\Daten")
Weitere Informationen |
|
[84] Wie finde ich mit VBA den in den Dokument-Eigenschaften unter Hyperlink-Basis definierte Pfad heraus?
VBA-Anweisung:
MsgBox ActiveWorkbook.BuiltinDocumentProperties("Hyperlink base").Value
MsgBox ActiveWorkbook.BuiltinDocumentProperties(29).Value
Wichtiger Hinweis
Dieser Artikel wurde aufgrund neuen Erkenntnissen vollständig
revidiert. Nachfolgend der ursprüngliche Artikeltext:
Diese Frage ist absolut berechtigt, denn es existiert im Excel-Objektmodell keine Eigenschaft oder Methode für das Abfragen bzw. Ändern der Hyperlink-Basis, die man in einem VBA-Programm verwenden könnte. Die nachstehende Abbildung zeigt das Eigenschaften-Dialogfenster mit dem Eingabefeld für die Hyperlink-Basis:

Abbildung: Dialog "Dokument-Eigenschaften" mit
Eingabefeld "Hyperlink-Basis"
Wer schon mal mit der SendKeys-Anweisung gearbeitet hat, weiss, dass man damit vorzüglich Menübefehle aufrufen und Dialogfenster steuern kann. Diese Vorzüge nutzen wir in unserer Musterlösung. Ich bin der Meinung, dass die Verwendung von SendKeys die einzige Möglichkeit ist, an die gewünschte Information heranzukommen.
Generelles Vorgehen
Die Aufgabe ist nun, das Eigenschaften-Dialogfenster zu öffnen und den im Eingabefeld "Hyperlink-Basis" eingetragenen Text (Pfad) auszulesen. Das Dialogfenster wird geöffnet, indem der Menübefehl Datei/Eigenschaften ausgeführt wird. Das Eingabefeld lässt sich ebenfalls sehr einfach anspringen, da es das Tastatur-Kürzel 'l' ("Hyperlink-Basis") besitzt und folglich mit der Tastenkombination Alt+l den Fokus erhält. Wenn das Feld einen Text enthält, so wird dieser bei Fokuserhalt automatisch markiert. Kopiert wird wie üblich mit der Tastenkombination Strg+C.
Ein Problem existiert allerdings noch: Der Dialog besitzt mehrere Registerseiten. Da 'unser' Textfeld auf der Registerseite "Datei-Inhalt" zu finden ist, muss somit zuerst auf diese Seite gewechselt werden. Die Schwierigkeit besteht darin, die richtige Seite zu aktivieren. Wird nämlich der Eigenschaften-Dialog geöffnet, erscheint immer diejenige Registerseite, die zuletzt zu sehen war (d.h. als der Dialog das letzte Mal geschlossen wurde). Die Register-Tabs (Reiter) besitzen aber keine Kürzel und können folglich nicht direkt angesprochen werden. Die gesuchte Seite ist die zweite von links. Das bedeutet, dass sie sich mit der Tastenkombination Strg+Bild Ab (Page Down) aktivieren lässt, sofern der Fokus auf dem Tab der ersten Registerseite steht. Letzteres können wir mit einem kleinen Trick erreichen: Wir führen zuerst einen Strg+Bild Ab aus, damit ein Tab den Fokus erhält. Da dies irgend ein Tab sein kann, führen wir anschliessend die Tastenkombination Strg+Pos 1 (Home) aus, wodurch der Fokus auf den ersten Register-Tab ganz links gesetzt wird. Danach kann der zweite Tab mit Strg+Bild Ab aktiviert werden.
Hyperlink-Basis abfragen
Mit dieser Tastenfolge wird der "Eigenschaften"-Dialog geöffnet, auf die Registerseite "Datei-Info" gewechselt, der Fokus auf das Eingabefeld "Hyperlink-Basis" gesetzt, der gesamte Feldinhalt in die Zwischenablage kopiert und das Dialogfenster über die Abbrechen-Schaltfläche geschlossen:
SendKeys "%di^{pgdn}^{home}^{pgdn}%l^c{esc}", True
Da sich der Feldinhalt nun in der Zwischenablage befindet, kann er beispielsweise mit
ActiveSheet.Paste Range("B2")
in die Zelle B2 des aktiven Arbeitsblattes eingefügt werden.
Hyperlink-Basis ändern
Diese Tastenfolge öffnet den "Eigenschaften"-Dialog, wechselt auf die Registerseite "Datei-Info", setzt den Fokus auf das Eingabefeld "Hyperlink-Basis", überschreibt den bisherigen Feldinhalt mit einem neuen Text (im Beispiel wird "C:\Daten" verwendet) und schliesst den Dialog über die OK-Schaltfläche:
SendKeys "%di^{pgdn}^{home}^{pgdn}%lC:\Daten{enter}", True
Detaillierte Informationen über Hyperlinks erhalten Sie hier:
Weitere Informationen |
|
|
|
[85] Welche Hintergrund-Informationen gibt es über die xlb-Datei von Excel?
Nachfolgend finden Sie viele interessante Informationen über die xlb-Datei von Microsoft Excel.
Welche Informationen sind in der xlb-Datei gespeichert?
In der xlb-Datei von Microsoft Excel sind vereinfacht gesagt alle veränderbare Merkmale von benutzerdefinierten Symbolleisten und Steuerelementen abgelegt.
Hier eine Liste der gespeicherten Merkmale (kein Anspruch auf Vollständigkeit und alle Angaben ohne Gewähr):
| Merkmal | Beispiel |
| Bildschirmpositionen und Stil aller Symbolleisten | (integrierte und benutzerdefinierte) |
| Alle Eigenschaften der benutzerdefinierten Symbolleisten | Name (Name), Typ (Type), Sichtbarkeit (Visible), Schutz (Protection) u.a. |
| Geänderte Eigenschaften der integrierten Symbolleisten | Verfügbarkeit (Enabled), Sichtbarkeit (Visible), Schutz (Protection) u.a. |
| Alle Eigenschaften der benutzerdefinierten Steuerelemente | Bezeichnung (Caption), Typ (Type), Verfügbarkeit (Enabled), Sichtbarkeit (Visible), zugewiesenes Makro (OnAction), Symbol-Id (FaceId) u.a. |
| Geänderte Eigenschaften der integrierten Steuerelemente | Bezeichnung (Caption), Verfügbarkeit (Enabled), Sichtbarkeit (Visible), zugewiesenes Makro (OnAction), Symbol-Id (FaceId) u.a. |
| Selbst erstellte/bearbeitete Steuerelementsymbole | (siehe Anmerkung) |
Anmerkung: Sobald das Symbol
eines Steuerelementes anhand des integrierten Editors geändert wird, wird das Symbol in
der xlb-Datei gespeichert.
Nebenbei erwähnt besitzt der Editor den meiner Meinung nach eher unpassenden Namen
"Schaltflächen-Editor". Besser wäre beispielsweise "Symbol-Editor",
da ja nicht die Schaltfläche sondern dessen Symbol editiert wird.
Wie wird ein Schaltflächensymbol in der xlb-Datei gespeichert?
Ein Symbol ist eine 16 x 16 Punkte grosse Grafik, welche 16 verschiedene, festgelegte Farben sowie eine Farbe für 'Transparent' besitzen kann. Der Farbton einer Farbe kann nicht verändert werden.
Wann wird die xlb-Datei aktualisiert?
Nicht ganz uninteressant sind die Regeln, ob die xlb-Datei aktualisiert wird oder nicht. Grundsätzlich wird die Datei beim Beenden von Microsoft Excel aktualisiert, jedoch nicht in allen Situationen.
Hier eine nicht abschliessende Übersicht:
» Wenn Microsoft Excel gestartet und anschliessend geschlossen wird, wird die
xlb-Datei üblicherweise nicht aktualisiert.
- Die xlb-Datei wird beim Beenden von Microsoft Excel aktualisiert,
sofern irgend eine Anpassung an einer Symbolleiste, einem Menü oder einem Steuerelement
vorgenommen wurde.
- Die xlb-Datei wird beim Beenden aktualisiert, wenn eine
Anpassung mittels VBA-Programmcode durchgeführt wurde. Es spielt dabei keine Rolle, ob
die Anpassung nur temporärer oder dauerhaft ist.
- Die xlb-Datei wird ebenfalls aktualisiert, wenn in Excel der
Anpassen-Dialog (Menübefehl Extras/Anpassen oder Ansicht/Symbolleisten/Anpassen)
geöffnet und geschlossen wurde, auch wenn in diesem Dialog keine Einstellung geändert
und keine Funktion ausgeführt wurde.

Abbildung: Anpassen-Dialog von Microsoft Excel
Dieses Verhalten kann man sich in einem VBA-Programm zunutze machen, wenn man erreichen will, dass die xlb-Datei aktualisiert wird. Man muss lediglich den Anpassen-Dialog öffnen und gleich wieder schliessen. Beachten Sie jedoch unbedingt die nachfolgend beschriebene Spezialität.
Gewöhnlich öffnet man einen integrierten Excel-Dialog, indem man die Show-Methode der Dialogs-Auflistung verwendet:
Application.Dialogs(xlDialogAttachToolbars).Show
Die vollständige Prozedur zum Öffnen und Schliessen des Dialogfensters sähe dann so aus:
Sub ForceXLBFileRefresh()
AppActivate "Microsoft Excel"
SendKeys "{esc}"
Application.Dialogs(xlDialogAttachToolbars).Show
End Sub
Wenn Sie obige Prozedur verwenden, werden Sie feststellen, dass die xlb-Datei nicht wie eigentlich erwartet aktualisiert wird. Die Ursache dafür ist, dass nicht der Dialog bestimmt, dass die xlb-Datei aktualisiert werden muss sondern die hinter dem Excel-Menübefehl "Anpassen" stehende Funktion, welche für die Anzeige des Anpassen-Dialoges zuständig ist. Folglich muss dieser Menübefehl ausgeführt werden, damit das Excel-interne "xlb-Datei muss aktualisiert werden"-Flag gesetzt wird. Das erreicht man ganz einfach, indem man den Menübefehl aufgeruft (Execute-Methode des CommandBarControl ausführen).
Sub ForceXLBFileRefresh()
AppActivate "Microsoft Excel"
SendKeys "{esc}"
Application.CommandBars.FindControl(Id:=797).Execute
End Sub
Was passiert bei exklusiv gesperrter xlb-Datei?
Wenn die xlb-Datei in einem Programm geöffnet ist, welches die Datei im exklusiven Zugriffsmodus verwendet, ist die Datei gesperrt und kann folglich von Microsoft Excel nicht gelesen werden. Microsoft Excel ignoriert beim Start die gesperrte Datei und öffnet die Arbeitsoberfläche mit den Default-Symbolleisten. Wenn man eine Änderung an einer Symbolleiste vornimmt und dann Excel beendet, kann die xlb-Datei wiederum nicht benutzt werden. In diesem Fall wird Excel beendet, ohne dass die Datei aktualisiert wird. Die vorgenommenen Änderungen sind dann verloren.
Wenn man beispielsweise irrtümlich eine Symbolleiste gelöscht hat, so kann man die xlb-Datei sperren, während Excel geöffnet ist. Beim Beenden von Excel kann die xlb-Datei somit nicht aktualisiert werden. Dadurch wird die Symbolleiste nicht gelöscht und ist nach dem nächsten Start wieder vorhanden. Damit Sie die xlb-Datei nicht mit einem anderen Programm exklusiv zu öffnen brauchen, können Sie auch das Schreibgeschützt-Attribut der Datei setzen. Dies hat den gleichen Effekt wie eine gesperrte Datei.
Zu Beachten
Bevor Sie Microsoft Excel erneut starten, muss die xlb-Datei unbedingt entsperrt
bzw. das Schreibgeschützt-Attribut entfernt werden. Anderenfalls wird Excel ohne Laden
der xlb-Datei gestartet und somit nur die Default-Symbolleisten angezeigt.
Wie werden Datei-/Pfad-Angaben eines Steuerelementes mit zugewiesenem Makro gespeichert?
Um es kurz zu machen: Es wird immer der absolute Dateipfad in der xlb-Datei gespeichert, d.h. vollständiger Pfad und Dateiname. Hier ein Beispiel:
'D:\Programme\Microsoft Office\Office\XlStart\Personl.xls'!GetRecords
Dass der absolute Dateipfad gespeichert wird, kann man gut nachvollziehen, da beim Aufrufen des Makros Excel ja wissen muss, in welcher Datei es abgelegt ist und wo sich diese auf der Festplatte befindet. In Excel selbst ist dies jedoch alles andere als klar erkennbar. Ist die Datei mit dem enthaltenen Makro nämlich bereits in der gleichen Excel-Sitzung geöffnet, wird der Pfad der Datei schlicht ignoriert. Das bedeutet, dass das Makro auch dann gefunden wird, wenn die Pfadangabe falsch ist. Um nochmal auf das obige Beispiel zurückzukommen, würde das Makro "GetRecords" auch dann ausgeführt, wenn die Datei Personl.xls geöffnet ist, in der xlb-Datei aber ein falscher Pfad dieser Datei gespeichert ist. Beispiel:
'C:\Windows\Anwendungsdaten\Microsoft\Excel\Personl.xls'!GetRecords
Warum das so ist, erkläre ich später. Zuerst ein paar wichtige Basisinformationen:
Grundsätzlich kann man jeder Schaltfläche und jedem Menübefehl ein Makro zuweisen. Die Zuweisung erfolgt über den entsprechenden Menübefehl des Kontextmenüs, welches beim Anpassen eines Steuerelementes geöffnet werden kann.

Abbildung: Kontextmenü beim Anpassen eines Steuerelementes
Die nächste Abbildung zeigt das Dialogfenster "Zuweisen", das beim Ausführen des oben erwähnten Menübefehls erscheint.

Abbildung: Makro zuweisen anhand des Makros-Dialoges
Wenn die Datei Personl.xls geöffnet ist, berücksichtigt Excel nur den Datei- und Makronamen. Es sucht das Makro somit in der geöffneten Datei (und findet es auch).
Wie kann man den Pfad- und Datei-Namen der xlb-Datei herausfinden?
Wie bereits an anderen Stellen erwähnt wurde, befindet sich die xlb-Datei je nach Excel-Version, Windows-Version, Windows-Sprachversion und Benutzerprofil in einem festgelegten Ordner und verwendet einen ganz bestimmten Dateinamen.
Wo sich die Datei befindet und wie sie heisst erfahren Sie hier:
Weitere Informationen |
|
|
Kann man die xlb-Datei in ein anderes Verzeichnis ablegen?
Nein, das ist nicht möglich. Microsoft Excel sucht beim Programmstart die xlb-Datei in genau dem Verzeichnis, in welchem sie sich aufgrund Excel-Version, Windows-Version, Windows-Sprachversion und Benutzerprofil befinden muss. Wenn Sie die Datei in ein anderes Verzeichnis verschieben oder die Datei umbenennen, findet Excel die Datei nicht und startet ohne benutzerdefinierte Symbolleisten und Schaltflächen. Beim Beenden von Excel wird dann automatisch eine neue xlb-Datei angelegt.
Kann man mehrere xlb-Dateien nebeneinander verwenden?
Mit "nebeneinander verwenden" ist gemeint, ob es möglich ist, mehrere xlb-Dateien (mit unterschiedlichen Dateinamen) anzulegen, damit Microsoft Excel je nach Bedarf mit einer bestimmten xlb-Datei gestartet werden kann.
Restliche Beschreibung folgt...
Warum nimmt die Grösse meiner xlb-Datei auch ohne vorgenommene Anpassungen ständig zu?
Es gibt in Microsoft Excel einen Bug, der allerdings offiziell nicht existiert. Tatsache ist aber, dass es ein Problem gibt, das zu einer laufend grösser werdenden xlb-Datei führt.
Restlicher Text folgt...
28869
29087
29305
29523
29741
29959
Kann eine xlb-Datei defekt werden?
Ja. Diese Gefahr existiert übrigens nicht nur bei grösseren xlb-Dateien, sondern auch bei kleinen. Es ist ohne weiteres möglich, dass auch eine kleine, beispielsweise lediglich 30 KB grosse Datei defekt wird. Eine defekte xlb-Datei kann von Microsoft Excel nicht mehr geladen werden. Als Folge startet Excel ohne die durch den Anwender angepassten Symbolleisten und Schaltflächen.
Kann man eine defekte xlb-Datei reparieren?
Nein. Eine defekte xlb-Datei ist und bleibt für immer unbrauchbar. Der Inhalt der Datei ist praktisch immer derart stark beschädigt, dass eine Reparatur oder Wiederherstellung nicht mehr möglich ist. Abgesehen davon gibt es keine Tools, mit denen man eine Reparatur automatisch durchführen könnte.
Wie kann man die xlb-Datei zurücksetzen bzw. leeren, ohne ihren Pfad zu kennen?
Microsoft Excel bietet keine explizite Funktionalität, mit der man die xlb-Datei zurücksetzen kann. Man kann zwar die xlb-Datei ganz einfach löschen, weil Excel automatisch eine neue, leere xlb-Datei generiert. Dazu muss jedoch der Ordner bekannt sein, in welchem sich die Datei befindet.
Bei Microsoft Excel 97 gibt es eine Möglichkeit, wie man die bestehende xlb-Datei durch eine neue ersetzen kann, ohne zu wissen, wo die Datei abgelegt ist. Starten Sie ganz einfach Excel mit dem Parameter '/i'.
Achtung: Bitte lesen Sie unbedingt die Hinweise über die Gefahren dieses Parameters auf dieser Seite:
Weitere Informationen |
|
Wie kann man eine einzelne Symbolleiste in einer andere xlb-Datei kopieren?
Text folgt...
Weitere Informationen über die xlb-Datei und Symbolleisten finden Sie hier:
[86] Kann man Microsoft Excel auch starten, ohne dass das Anwendungsfenster erscheint?
Gesucht wird hier eine Möglichkeit, wie man Microsoft Excel starten kann, ohne dass das Anwendungsfenster sichtbar wird und ohne dass die Anwendungssymbol in der Windows Taskleiste bzw. in der Liste der laufenden Anwendungen (zu sehen u.a. im Windows NT Task-Manager) erscheint. Excel soll dabei wie gewohnt über die Arbeitsoberfläche von Windows mittels Doppelklick auf das Programmsymbol oder anhand einer Programmverknüpfung im Programme-Menü (Windows/Start/Programme) gestartet werden, also ohne beispielsweise ein VBA-Makro, welches die Shell-Funktion verwendet.
Es existiert tatsächlich eine einfache Möglichkeit. Vielleicht kennen Sie die von Microsoft Excel zur Verfügung gestellten Startparameter. So gibt es unter anderem den Parameter '/e', mit dem man Excel ohne Ladefenster und ohne das Öffnen einer neuen, leeren Arbeitsmappe ausführen kann. Der Buchstabe 'e' steht für 'embedded' und bedeutet auf Deutsch übersetzt soviel wie 'eingebettet'. Dieser Startparameter wird Excel-intern benutzt, wenn Sie eine in einem Dokument eingebettete Excel-Tabelle zur Bearbeitung öffnen (was mittels Doppelklick auf das Tabellenobjekt vorgenommen wird). Die Befehlszeile zum Starten von Excel mit dem Parameter '/e' sieht so aus:
"C:\Programme\Microsoft Office\Office\Excel.exe" /e
Der Parameter lässt sich auch in Kombination mit einer Arbeitsmappendatei verwenden:
"C:\Programme\Microsoft Office\Office\Excel.exe" C:\Daten\EineMappe.xls /e
Ein erstaunliches Verhalten zeigt der Parameter, wenn unmittelbar nach dem Parameter ein beliebiges Zeichen angegeben wird:
"C:\Programme\Microsoft Office\Office\Excel.exe" /e/
Wenn Sie obige Befehlszeile ausführen, wird Excel in ausgeblendetem Zustand als Prozess gestartet, d.h. dass kein Anwendungsfenster erscheint.
Weitere Informationen über Excel-Startparameter erhalten Sie hier:
Weitere Informationen |
|
|
|
[87] Wie finde ich heraus, ob eine Spezialtaste (Alt, Strg, Umschalt) beim Öffnen einer Mappe gedrückt wurde?
Man kann mit VBA sehr einfach feststellen, ob während dem Öffnen einer Arbeitsmappe die Taste Alt, Strg oder Umschalt gedrückt wurde. Dazu muss lediglich die Windows API-Funktion GetKeyState mit dem zu überprüfenden Tastencode aufgerufen werden, die den Status der Taste zurückgibt.
Tastencodes:
16 = Umschalt-Taste
17 = Strg-Taste
18 = Alt-Taste
VBA-Programmcode
Deklarationsbereich
Declare Function GetKeyState Lib "user32"
(ByVal nVirtKey As Long) As Integer
Codebereich von
"DieseArbeitsmappe"
Private Sub Workbook_Open()
Dim strMessage As String
strMessage = ""
If Abs(GetKeyState(16) < 0) Then
strMessage = strMessage & "Umschalt-Taste wurde
gedrückt" & vbCrLf
Else
strMessage = strMessage & "Umschalt-Taste wurde nicht
gedrückt" & vbCrLf
End If
If Abs(GetKeyState(17) < 0) Then
strMessage = strMessage & "Strg-Taste wurde gedrückt"
& vbCrLf
Else
strMessage = strMessage & "Strg-Taste wurde nicht
gedrückt" & vbCrLf
End If
If Abs(GetKeyState(18) < 0) Then
strMessage = strMessage & "Alt-Taste wurde gedrückt"
& vbCrLf
Else
strMessage = strMessage & "Alt-Taste wurde nicht
gedrückt" & vbCrLf
End If
If Abs(GetKeyState(66) < 0) Then
strMessage = strMessage & "Taste 'B' wurde gedrückt"
End If
MsgBox strMessage
End Sub
Auf dieser Seite finden Sie weitere Informationen zu diesem Thema:
Weitere Informationen |
|
[88] Wie lautet der genaue Name der xlb-Datei und wo ist sie abgelegt?
Microsoft Excel verwendet für die Speicherung der benutzerdefinierten Symbolleisten und Schaltflächen/Menübefehlen eine Datei mit der Dateinamenerweiterung 'xlb'. Leider gibt es keine Möglichkeit, mit der man den genauen Namen dieser Datei sowie ihr Speicherort abfragen kann - weder in Excel noch anhand eines VBA-Programmes. Es existiert auch kein Registry-Eintrag mit diesen Informationen. Die Logik, wie Dateiname und Pfad ermittelt wird, ist fest in Microsoft Excel einprogrammiert.
Sowohl Dateiname als auch Ordnername können je nach verwendeter Windows- und Excel-Version verschieden sein. Auch der Umstand, ob sich der Benutzer in Windows anmelden musste (d.h. er besitzt ein Benutzerprofil), spielt eine Rolle. Es muss allerdings beachtet werden, dass bei Microsoft Excel 97 die xlb-Datei auch dann den Benutzernamen verwendet, wenn sich der Benutzer nicht in Windows anmelden musste, dieser jedoch ein Profil besitzt oder besass.
Des weiteren heissen die Ordner je nach Sprache der Windowsversion unterschiedlich (z.B. heisst das deutsche Verzeichnis 'Anwendungsdaten' in der englischen Version 'Application Data' und das Verzeichnis 'Dokumente und Einstellungen' heisst 'Documents and Settings'). Aber auch hier gibt es Spezialfälle: Beispielsweise lautet der Name des Ordners für die Profile sowohl in der deutschen als auch in der englischen Version von Windows NT 4 'Profiles'.
Hier eine Tabelle mit den Datei- und Pfad-Namen der xlb-Datei:
| Excel- Version |
Windows- Version |
Dateiname ohne Profil |
Dateiname mit Profil |
Dateipfad ohne Profil |
Dateipfad mit Profil |
| Excel 97 | Windows 95 | Excel8.xlb | <Benutzername>8.xlb | \\Windows | \\Windows |
| Windows 98 | Excel8.xlb | <Benutzername>8.xlb | \\Windows | \\Windows | |
| Windows ME | Excel8.xlb | <Benutzername>8.xlb | \\Windows | \\Windows | |
| Windows NT | Excel8.xlb | <Benutzername>8.xlb | \\WinNT | \\WinNT | |
| Windows 2000 | Excel8.xlb | <Benutzername>8.xlb | \\WinNT | \\WinNT | |
| Windows XP | Excel8.xlb | <Benutzername>8.xlb | \\Windows | \\Windows | |
| Excel 2000 | Windows 95 | Excel.xlb | Excel.xlb | \\Windows | \\Windows\Anwendungsdaten\Microsoft\Excel \\Windows\Application Data\Microsoft\Excel |
| Windows 98 | Excel.xlb | Excel.xlb | \\Windows | \\Windows\Anwendungsdaten\Microsoft\Excel \\Windows\Application Data\Microsoft\Excel |
|
| Windows ME | Excel.xlb | Excel.xlb | \\Windows | \\Windows\Anwendungsdaten\Microsoft\Excel \\Windows\Application Data\Microsoft\Excel |
|
| Windows NT | Excel.xlb | Excel.xlb | \\WinNT | \\WinNT\Profile\<Benutzername>\Anwendungsdaten\Microsoft\Excel \\WinNT\Profiles\<Benutzername>\Application Data\Microsoft\Excel |
|
| Windows 2000 | Excel.xlb | Excel.xlb | \\WinNT | \\Dokumente und
Einstellungen\<Benutzername>\Anwendungsdaten\Microsoft\Excel \\Documents and Settings\<Benutzername>\Application Data\Microsoft\Excel |
|
| Windows XP | Excel.xlb | Excel.xlb | \\Windows | \\Dokumente und
Einstellungen\<Benutzername>\Anwendungsdaten\Microsoft\Excel \\Documents and Settings\<Benutzername>\Application Data\Microsoft\Excel |
|
| Excel XP | Windows 95 | Excel10.xlb | Excel10.xlb | \\Windows | \\Windows\Anwendungsdaten\Microsoft\Excel \\Windows\Application Data\Microsoft\Excel |
| Windows 98 | Excel10.xlb | Excel10.xlb | \\Windows | \\Windows\Anwendungsdaten\Microsoft\Excel \\Windows\Application Data\Microsoft\Excel |
|
| Windows ME | Excel10.xlb | Excel10.xlb | \\Windows | \\Windows\Anwendungsdaten\Microsoft\Excel \\Windows\Application Data\Microsoft\Excel |
|
| Windows NT | Excel10.xlb | Excel10.xlb | \\WinNT | \\WinNT\Profile\<Benutzername>\Anwendungsdaten\Microsoft\Excel \\WinNT\Profiles\<Benutzername>\Application Data\Microsoft\Excel |
|
| Windows 2000 | Excel10.xlb | Excel10.xlb | (gleich wie mit Profil) | \\Dokumente und
Einstellungen\<Benutzername>\Anwendungsdaten\Microsoft\Excel \\Documents and Settings\<Benutzername>\Application Data\Microsoft\Excel |
|
| Windows XP | Excel10.xlb | Excel10.xlb | (gleich wie mit Profil) | \\Dokumente und
Einstellungen\<Benutzername>\Anwendungsdaten\Microsoft\Excel \\Documents and Settings\<Benutzername>\Application Data\Microsoft\Excel |
|
| Excel 2003 | Excel11.xlb | Excel11.xlb |
Anmerkung: Mit "<Benutzername>" ist der Anmeldename bzw. Profilname des Windows-Benutzers gemeint.
Tipp: Freeware-Tool
'XLB-Defragmentor' einsetzen
Mit dem Tool XLB-Defragmentor können Sie auf Knopfdruck
den Pfad- und Dateiname der von Microsoft Excel benutzten xlb-Datei herausfinden.
Das Tool kann auf der Download-Seite heruntergeladen werden.
Der XLB-Defragmentor kann natürlich nicht nur den Pfad und Namen der xlb-Datei herausfinden sondern noch sehr viel mehr. Die Produkt-Webseite des XLB-Defragmentors finden Sie hier:
XLB-Defragmentor
Produkt-Webseite
Hinweise für Programmierer
Damit man mit einem Programm Dateiname und Pfad der
xlb-Datei herausfinden kann, werden verschiedene Basis-Informationen benötigt:
» Excelversion - damit man weiss, welche Zahl im Dateiname vorkommt (8, 10 oder
11; 9 gibt es nicht)
» Windowsverzeichnis - damit man weiss, ob der Windowsverzeichnisname
"Windows" oder "WinNT" lautet
» Sprache der Windowsversion - damit man weiss, ob die Ordner z.B. deutsche oder
englische Namen besitzen
» Windows-Benutzername - damit man weiss, wie der xlb-Dateiname (Excel 97) bzw.
der Benutzer-Ordner (ab Excel 2000) lautet
Excelversion abfragen
Mit einem VBA-Programm in Excel:
strExcelVersion = Application.Version
Mit einem VBA-Programm ausserhalb Excel oder einem VB-Programm:
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
strExcelVersion = xlApp.Version
xlApp.Quit
Set xlApp = Nothing
Windows-Benutzername abfragen
Mit dem 'Network'-Objekt:
Dim objWSH As Object
Set objWSH = CreateObject("WScript.Network")
strUserName = objWSH.UserName
Set objWSH = Nothing
Windowsverzeichnis abfragen
Mit der 'windir'-Umgebungsvariable:
strWinDir = Environ("windir")
Mit dem 'FileSystemObject'-Objekt:
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
strWinDir = objFSO.GetSpecialFolder(0) '0 = Windows-Verzeichnis
Set objFSO = Nothing
So wird dann beispielsweise die xlb-Datei von Microsoft Excel 97 abgefragt:
If Left$(strExcelVersion, 1) = "8" Then
strXLBFileName = Dir(strWinDir & "\" & strUserName &
"8.xlb")
strXLBPath = strWinDir
End If
Weitere Informationen über die xlb-Datei und Symbolleisten erhalten Sie hier:
[89] Gibt es eine Möglichkeit, mit VBA eine benutzerdefinierte Symbolleiste an eine Mappe anzubinden?
Vielleicht haben Sie als Excel-Benutzer schon mal eine benutzerdefinierte Symbolleiste an eine Arbeitsmappe angebunden. Das lässt sich über die Schaltfläche "Anbinden" auf dem "Anpassen"-Dialogfenster bewerkstelligen.

Abbildung: Anpassen-Dialog von Microsoft Excel
Wenn Sie auf die Schaltfläche "Anbinden" klicken, erscheint das "Symbolleiste anbinden"-Dialogfenster:

Abbildung: Symbolleiste anbinden-Dialog von Microsoft Excel
In Microsoft Excel ist das Anbinden von Symbolleisten an eine Mappe somit kein Problem. Anders sieht es aus, wenn Sie das Gleiche anhand eines VBA-Programmes durchführen wollen. In der Objektbibliothek von Microsoft Excel existiert nämlich keine Funktion (Methode) zu diesem Zweck. Es muss daher eine andere Lösung gefunden werden.
Der Weg zur VBA-Lösung
Mit SendKeys kann man vereinfacht ausgedrückt einen Benutzer simulieren, der eine oder mehrere Tasten auf der Tastatur drückt. Wenn Sie Erfahrung mit der SendKeys-Anweisung von VBA haben, dann ist Ihnen vermutlich aufgefallen, dass sich damit so ziemlich alles lösen lässt, wenn es um das Steuern von Dialogfenstern geht. Der "Symbolleiste anbinden"-Dialog stellt da keine Ausnahme dar.
Welche Tasten müssen an das Dialogfenster gesendet werden?
Der erste Schritt zur VBA-Lösung besteht darin
herauszufinden, welche Tasten in welcher Reihenfolge an das Dialogfenster gesendet werden
müssen. Dazu öffnen wir wie gewohnt in Excel den "Symbolleisten
anbinden"-Dialog, kopieren alle Symbolleisten in die aktuelle Arbeitsmappe und
schliessen den Dialog wieder. Alle gedrückten Tasten notieren wir am besten auf einem
Blatt Papier.
Wie viele benutzerdefinierte Symbolleisten existieren?
Wie wir festgestellt haben, wird mit der Leer-Taste ein in der
Liste aufgeführter Symbolleisteneintrag markiert bzw. die Markierung aufgehoben. Weil man
nicht feststellen kann, ob ein Eintrag aktuell ein- oder ausgeschaltet ist, muss zuerst
die exakte Anzahl benutzerdefinierter Symbolleisten herausgefunden werden. Die ermittelte
Zahl wird dann in Form von Leertasten-Anschläge an das "Symbolleisten
anbinden"-Dialogfenster gesendet.
Hier der Programmcode zum Zählen der benutzerdefinierten Symbolleisten:
Function GetCustomCommandBarsCount() As Integer
Dim intCustomBars As Integer
Dim intCounter As Integer
intCustomBars = 0
For intCounter = 1 To Application.CommandBars.Count
If Application.CommandBars(intCounter).BuiltIn = False Then
intCustomBars = intCustomBars + 1
End If
Next intCounter
GetCustomCommandBarsCount = intCustomBars
End Function
Übrigens ist es irrelevant, ob eine benutzerdefinierte Symbolleiste in der Liste "Symbolleisten" des "Anpassen"-Dialoges aufgeführt ist oder nicht (das wird mit der CommandBar-Eigenschaft Enabled festgelegt). Im "Symbolleiste anbinden"-Dialog sind immer sämtliche benutzerdefinierten Symbolleisten aufgelistet.
Wie wird der "Symbolleiste anbinden"-Dialog geöffnet?
Der "Symbolleiste anbinden"-Dialog kann auf
verschiedene Wege geöffnet werden. Nachfolgend drei Möglichkeiten:
1) Über den "Anpassen"-Menübefehl und die
"Anbinden"-Schaltfläche
SendKeys "%a"
Application.CommandBars.FindControl(Id:=797).Execute
2) Über den xlDialogShowToolbar-Dialog der Dialogs-Auflistung
und die "Anbinden"-Schaltfläche
SendKeys "%a"
Application.Dialogs(xlDialogShowToolbar).Show
3) Über den xlDialogAttachToolbars-Dialog der Dialogs-Auflistung
Application.Dialogs(xlDialogAttachToolbars).Show
Die dritte Variante ist die schnellste und zugleich sicherste Lösung, da der "Symbolleiste anbinden"-Dialog direkt - also nicht via "Anpassen"-Dialog - geöffnet und die Dialogs-Auflistung verwendet wird. Die FindControl-Methode besitzt leider den - allerdings vernachlässigbaren - Nachteil, dass ein Fehler auftritt, falls der Benutzer den "Anpassen"-Menübefehl entfernt hat.
Hier die fertige VBA-Prozedur, mit der alle benutzerdefinierten Symbolleisten an die aktive Arbeitsmappe angebunden werden:
Sub AttachCommandBarsToWorkbook()
Dim intCounter As Integer
Dim intCustomBars As Integer
intCustomBars = GetCustomCommandBarsCount() 'Funktion zum Herausfinden der Anzahl
benutzerdefinierter Symbolleisten aufrufen
AppActivate "Microsoft Excel"
'Tabulator-Taste
drücken, damit das linke Listenfeld den Fokus erhält und einmal die
'Leer-Taste drücken, damit das oberste Listenelement selektiert wird
SendKeys "{tab} "
For intCounter = 1 To intCustomBars
'Pro Listenelement einen Eintrag nach unten gehen und
dann die Leer-Taste drücken,
'damit nacheinander jeder Eintrag (dazu-)selektiert wird
SendKeys "{down} "
Next intCounter
'Alt+K drücken für Klick auf
"Kopieren"-Schaltfläche auslösen
'Tabluator-Taste drücken, damit die "OK"-Schaltfläche zur
Default-Schaltfläche wird
'Eingabe-Taste drücken für Klick
auf "OK"-Schaltfläche auslösen
SendKeys "%k{tab}{enter}"
'Dialog "Symbolleiste
anbinden" öffnen
Application.Dialogs(xlDialogAttachToolbars).Show
End Sub
Weitere Informationen über Symbolleisten finden Sie hier:
Weitere Informationen |
|
|
[90] Kann man verhindern, dass eine Excel 97-Arbeitsmappe mit einer neueren Excelversion geöffnet wird?
Lösungsversuche mit VBA
Wenn man die Frage liest, wird man als VBA-Programmierer sehr wahrscheinlich zuerst eine VBA-Lösung denken. Mit anderen Worten: Im Workbook_Open-Ereignis oder in einem Auto_Open-Makro die Excelversion der Arbeitsmappe abfragen. Wenn diese nicht Excel 97 ist, dann die Arbeitsmappe sofort schliessen.
Nun, ganz so einfach geht das nicht. Das Hauptproblem ist, dass es keine Eigenschaft im Excel-Objektmodell gibt, anhand der sich die Excelversion der Datei abfragen lässt. Ex existiert zwar die FileFormat-Eigenschaft, doch diese gibt bei einer Excel 97-Mappe den gleichen Wert wie bei einer Excel 2000- oder einer Excel 2002-Mappe zurück, nämlich -4143 (was der Konstante xlWorkbookNormal entspricht). Da alle drei Excelversionen das Dateiformat BIFF8 verwenden, enthält die Eigenschaft immer den besagten Wert.
Eine andere Möglichkeit besteht darin, die Eigenschaft CalculationVersion des Workbook-Objektes abzufragen. Doch auch dieser Weg führt nicht zum Erfolg, da diese Eigenschaft erst seit Microsoft Excel 2000 zur Verfügung steht. Da die Mappe in Excel Version 97 erstellt und bearbeitet wird, kann CalculationVersion nicht benutzt werden.
Um es kurz zu machen: Es gibt keine VBA-Lösung!
Lösung ohne VBA
Wir müssen die Arbeitsmappe irgendwie verändern, sodass sie sich nur in Excel 97 öffnen und bearbeiten lässt, aber nicht in Excel 2000 und Folgeversionen. Und das ist tatsächlich möglich. Wir bedienen uns dazu eines unscheinbaren Bugs, der in Excel 97 existiert, in den späteren Versionen jedoch korrigiert wurde.
Kurzbeschreibung des Bugs
Der Bug befindet sich in der Routine, welche für die
automatische Vergabe des internen Objektnamens (Codename) beim Kopieren eines
Arbeitsblattes zuständig ist. Wenn Sie in Excel 97 eine Kopie einer Tabelle anlegen, so
erhält diese automatisch den Namen der Originaltabelle und der angehängten Zahl 1. Ein
Beispiel: Die Kopie der Tabelle "Tabelle1" heisst "Tabelle11". Wenn
Sie anschliessend eine Kopie der soeben erstellten Kopie anlegen, so wird wiederum eine
"1" angehängt. Beispiel: Die Kopie der Tabelle "Tabelle11" erhält
den Namen "Tabelle111". Bei jeder weiteren Kopie wird die Zahl 1 angehängt.

Abbildung: Projekt-Explorer mit Tabellenblatt-Kopien
Dieser Vorgang lässt sich so lange wiederholen, bis der Codename zu lang wird; er darf maximal 31 Zeichen umfassen. Wenn Sie in Excel versuchen, eine weitere Kopie des Blattes zu erstellen und die Länge des Codenamens der Kopie würde dadurch 32 Zeichen betragen, so wird die Blattkopie ganz einfach nicht angelegt. Wenn Sie den Kopiervorgang dagegen mit VBA durchführen (z.B. mit "ActiveSheet.Copy Before:=ActiveSheet"), so erscheint zwar ein Laufzeitfehler, die Kopie wird jedoch trotzdem erstellt. Die Länge des Codenamens des neuen Arbeitsblattes beträgt dadurch 32 Zeichen, also 1 Zeichen mehr als erlaubt.
Auswirkungen des Bugs
Wenn Sie nach der Erstellung dieser letzten Kopie die Mappe
speichern (was problemlos möglich ist), so lässt sie sich nur noch in Excel Version 97
öffnen. In Excel 2000 dagegen erscheint beim Öffnen dieser Mappe sofort ein
Seitenfehler, was zum sofortigen Absturz von Excel führt.
Die Arbeitsmappe lässt sich in Excel 2000 und Folgeversionen nicht mehr öffnen, da die Routine für die automatische Vergabe des Codenamens von Arbeitsblättern geändert bzw. korrigiert wurde. Die in Excel implementierte Öffnen-Routine rechnet nicht damit, dass ein Tabellenblatt einen Namen mit mehr als 31 Zeichen besitzt und stürzt folglich ab.
[91] Kann man verhindern, dass eine Excel 2002-Arbeitsmappe mit Excel 97 oder Excel 2000 geöffnet wird?
Das lässt sich problemlos machen. Sie können dies erreichen, indem Sie vor dem Speichern der Arbeitsmappe in Microsoft Excel 2002 zuerst einen Verschlüsselungstyp einstellen, der von Excel 97 und Excel 2000 nicht erkannt wird.
Siehe auch hier:
XL2000: Incorrect Password Error
When Opening a Excel 2002 Workbook in Excel 97 or Excel 2000
Error Message "The password you supplied is not
correct. Verify that the CAPS LOCK key is off and be sure to use the correct
capitalization."
http://support.microsoft.com/?kbid=294414
Diese
Fehlermeldung erscheint, wenn die Arbeitsmappe in Excel 2002 mit einer von Excel 97/2000
nicht erkennbaren Verschlüsselung gespeichert wurde.
[92] Lässt sich eine Dateiliste auf einem Tabellenblatt auch ohne VBA erstellen?
Ja, das geht tatsächlich! Es ist möglich, die Namen der Dateien eines Ordners in die Zellen eines Arbeitsblattes einzufügen, ohne dass ein einziger VBA-Befehl benötigt wird.
Die Excel4-Makrosprache stellt eine Funktion namens "DATEIEN" bereit, mit der sich der Name einer Datei auf der Festplatte ermitteln lässt. Anhand eines kleinen Tricks kann diese Funktion (bzw. jegliche Excel4-Makrofunktionen) direkt, also ohne die Verwendung eines Excel 4.0-Makrovorlageblattes aufgerufen werden. Da Makrofunktionen in Namen benutzt werden können, muss man nur einen Namen definieren, der diese Funktion als Bezug verwendet.

Abbildung: Dialogfenster "Namen festlegen" mit
Excel4-Makrofunktion
Geben Sie, wie in der obigen Abbildung zu sehen ist, im
Dialogfenster "Namen festlegen" diese Werte ein:
Name: DAT
Bezug: =DATEIEN("*.*")
Wegen dem Dateifilter "*.*" werden alle Dateien berücksichtigt. Sie können natürlich auch einen anderen Filter angeben, wie z.B. "*.xls" für alle Excel-Arbeitsmappen oder "A*.txt" für alle Textdateien, die mit dem Buchstaben "A" beginnen.
Wenn Sie in einer Zelle des Arbeitsblattes die Formel "=DAT" eintragen, erhalten Sie den Namen der ersten Datei des aktuellen Verzeichnisses. Da Funktionen in Namen nicht volatil sind, wird das Formelergebnis erst nach einer vollständigen Neuberechnung der Mappe aktualisiert. Das bedeutet, dass bei Wechseln des aktuellen Verzeichnisses der neue Dateiname erst dann angezeigt wird, wenn sie entweder die Formel neu eingeben (F2 und Eingabe) oder mit Strg+Alt+F9 eine Mappenneuberechnung auslösen.
Zellformel 2: =INDEX(DAT;ZEILE())
[93] Wie kann der Name des Excel-Benutzers ohne VBA in eine Zelle eingetragen werden?
Es ist möglich, den Namen des im Optionen-Dialog eingetragenen Excel-Benutzers ganz ohne VBA in eine Zelle eines Arbeitsblattes einzutragen. Die Excel4-Makrosprache stellt eine Funktion namens "DATEI.ZUORDNEN" bereit, welche viele verschiedene Werte als Argument entgegen nimmt. Bei Übergeben des Wertes 36 liefert die Funktion den aktuellen Excel-Benutzernamen. Durch einen kleinen Trick kann diese Funktion (bzw. irgend eine Excel4-Makrofunktion) direkt, also ohne die Verwendung eines Excel 4.0-Makrovorlageblattes aufgerufen werden. Da Makrofunktionen in Namen benutzt werden können, muss man nur einen Namen definieren, der diese Funktion als Bezug verwendet.
Definieren Sie den neuen Namen, indem Sie im Dialogfenster
"Namen festlegen" diese Werte eingeben:
Name: USER
Bezug: =DATEI.ZUORDNEN(36)
Mit der Zellformel "=USER" wird anschliessend der Excel-Benutzername in jede beliebige Zelle eingetragen.
[94] Wie öffne ich mit VBA eine Arbeitsmappe, ohne dass Makros dieser Mappe automatisch ausgeführt werden?
Hier geht es um die Möglichkeiten, wie man mittels VBA-Code eine Arbeitsmappe öffnen kann, ohne dass der in der Mappe enthaltene Programmcode ausgeführt wird.
Möglichkeit 1: Öffnen mit "Workbooks.Open"
Die übliche Methode zum Öffnen einer Arbeitsmappe ist die Verwendung der Open-Methode des Workbooks-Objektes:
Workbooks.Open "C:\Dateien\MeineMappe.xls"
Der Nachteil hierbei ist, dass Programmcode, welcher sich in den Ereignissen der zu öffnenden Mappe befindet, ausgeführt wird, also beispielsweise Code im Workbook_Open- oder Workbook_Activate-Ereignis. Die Ereignisse werden ausgelöst, weil bei der Open-Methode die zu öffnende Mappe automatisch zur aktiven Arbeitsmappe wird. Die Ereignisauslösung kann man verhindern, indem man die Ereignisse vor dem Öffnen der Arbeitsmappe deaktiviert. Das geht so:
Application.EnableEvents = False
Aber auch diese Lösung besitzt einen Nachteil: Durch die Ereignisdeaktivierung werden nicht nur die Ereignisse der zu öffnenden Mappe sondern aller Mappen deaktiviert, d.h. auch der Arbeitsmappe, in der sich die Workbooks.Open-Anweisung befindet. Das Workbook_Deactivate- und Workbook_WindowDeactivate-Ereignis dieser Mappe wird folglich nicht ausgelöst, was nicht immer wünschenswert ist.
Möglichkeit 2: Öffnen mit "References.AddFromFile"
Verweis auf die zu öffnende Arbeitsmappe im VBA-Projekt anlegen:
ThisWorkbook.VBProject.References.AddFromFile "C:\Dateien\MeineMappe.xls"
Restliche Beschreibung folgt in Kürze...
[95] Kann man die Makroausführung erzwingen, trotz Makrovirus-Schutz und hoher Sicherheitsstufe?
Die Makroausführung lässt sich grundsätzlich nicht erzwingen, weil sonst sämtliche Schutzmechanismen gegen Makroviren völlig nutzlos wären. Dennoch existieren zwei Möglichkeiten, wie man VBA-Code in einer Mappe beim Öffnen der Mappe automatisch ausführen kann, d.h. obwohl die Sicherheitsstufe auf hoch eingestellt (ab Excel 2000) beziehungsweise der Makrovirus-Schutz aktiviert ist (Excel 97). Makro-Warnmeldungen wie beispielsweise die nachstehend abgebildete Virus-Warnung werden hierbei dem Benutzer nicht angezeigt.

Abbildung: Makroviren-Warnmeldung (Excel 97)
Möglichkeit 1
Die automatische Code-Ausführung lässt sich erzwingen, indem man die Arbeitsmappe im Excel-Startordner 'XlStart' oder im zusätzlichen Startordner ablegt. Anstelle der Arbeitsmappendatei kann man auch eine Dateiverknüpfung (lnk-Datei) ablegen. Sobald der Benutzer Microsoft Excel startet, wird die Arbeitsmappe geöffnet und der im Auto_Open-Makro, Workbook_Open-Ereignis sowie den anderen relevanten Ereignissen enthaltene VBA-Programmcode ausgeführt.
Möglichkeit 2
Die andere Möglichkeit besteht im Hinzufügen eines bestimmten Eintrages in der Windows Registry:
Zweig:
HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel
Eintrag: OPEN (Eintragtyp "Zeichenfolge")
Wert: Pfad und Dateiname der Arbeitsmappe
Sobald der Benutzer Microsoft Excel startet, wird die in der Registry angegebene Arbeitsmappe geöffnet und der im Auto_Open-Makro und/oder Workbook_Open-Ereignis enthaltene VBA-Code ausgeführt.
[96] Wie lässt sich Excel mit einer bestimmten Fenstergrösse und -position starten?