Office Logo  Zurück zur Hauptseite

Fragen und Antworten

      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? Besonders interessanter Artikel

      [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?

      [09]  Welche Excel-Objekte, -Methoden und -Eigenschaften sind für Datei- und Verzeichnis-Zugriffe zuständig?

      [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? Besonders interessanter Artikel

      [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?

      [27]  Kann ich herausfinden, ob eine in Excel 2000 geöffnete Excel 97-Mappe vollständig neuberechnet wurde?

      [28]  Wo findet man Informationen über Excel-Dateikonvertierung?

      [29]  Wie kann ein zum Programmstart benötigtes OCX automatisch registriert werden?

      [30]  Wie kann eine Mappe beim Start automatisch geöffnet werden, ohne sie ins XLStart-Verzeichnis zu stellen? Besonders interessanter Artikel

 

      [31]  Kann es sein, dass die Ausführung von Auto-Makros mittels RunAutoMacros nicht richtig funktioniert? Besonders interessanter Artikel

      [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? Besonders interessanter Artikel

      [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? Besonders interessanter Artikel

      [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? Besonders interessanter Artikel

      [43]  Kann eine mit Schreibschutz geöffnete Mappe nachträglich auf Schreib-Lese-Zugriff umgestellt werden? Besonders interessanter Artikel

      [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?

      [49]  Warum wird eine CSV-Datei über "Datei öffnen" korrekt geöffnet, bei Doppelklick im Explorer jedoch nicht? Besonders interessanter Artikel

      [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?

      [53]  Gibt es bekannte Probleme beim Speichern einer Spreadsheet Web Component-Tabelle als Excel-Arbeitsblatt?

      [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? Besonders interessanter Artikel

      [57]  Gibt es eine Möglichkeit, in Excel X für Mac die VBA-Makros von Excel 5.0/95-Arbeitsmappen zu konvertieren?

      [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? Besonders interessanter Artikel

      [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? Besonders interessanter Artikel

      [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? Besonders interessanter Artikel

      [69]  Wie kann ich mit VBA die aktive Arbeitsmappe löschen? Besonders interessanter Artikel

      [70]  Wie wird verhindert, dass beim Schliessen des CD-ROM Laufwerkes die eingelegte CD automatisch startet?

 

      [71]  Wird eigentlich VBA-Code nach Schliessen der Arbeitsmappe (Close-Methode) noch ausgeführt?

      [72]  Wie erreicht man die Anzeige der Meldung "Projekt kann nicht angezeigt werden" anstelle der Kennworteingabe?

      [73]  Welche Daten gehen beim Speichern einer in Excel 2000 erstellten Mappe mit dem Excel 5.0/95-Format verloren?

      [74]  Welche Möglichkeiten gibt es für das Abfragen und Ändern von Dokumenteigenschaften mittels VBA? Besonders interessanter Artikel

      [75]  Wie kann man mit VBA eine beliebige Datei für andere Benutzer und Programme sperren? Besonders interessanter Artikel

      [76]  Was muss ich beim Erstellen eines eigenen Add-Ins beachten?

      [77]  Wieso dauert das Öffnen einer Arbeitsmappe mit vielen Tabellenblättern manchmal sehr viel länger als sonst?

      [78]  Warum ist eine Arbeitsmappendatei plötzlich grösser, obwohl keine Änderungen vorgenommen wurden?

      [79]  Welche Codeprozeduren laufen beim Öffnen einer Arbeitsmappe ab?

      [80]  Warum liefert meine in einer anderen, geschlossenen Mappe abgelegte benutzerdefinierte Funktion "#WERT!"?

 

      [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? Besonders interessanter Artikel

      [84]  Wie finde ich mit VBA den in den Dokument-Eigenschaften unter Hyperlink-Basis definierte Pfad heraus?

      [85]  Welche Hintergrund-Informationen gibt es über die xlb-Datei von Excel? Besonders interessanter Artikel

      [86]  Kann man Microsoft Excel auch starten, ohne dass das Anwendungsfenster erscheint?

      [87]  Wie finde ich heraus, ob eine Spezialtaste (Alt, Strg, Umschalt) beim Öffnen einer Mappe gedrückt wurde?

      [88]  Wie lautet der genaue Name der xlb-Datei und wo ist sie abgelegt?

      [89]  Gibt es eine Möglichkeit, mit VBA eine benutzerdefinierte Symbolleiste an eine Arbeitsmappe anzubinden? Besonders interessanter Artikel

      [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? Besonders interessanter Artikel

      [93]  Wie kann der Name des Excel-Benutzers ohne VBA in eine Zelle eingetragen werden? Besonders interessanter Artikel

      [94]  Wie öffne ich mit VBA eine Arbeitsmappe, ohne dass Makros dieser Mappe automatisch ausgeführt werden?

      [95]  Kann man die Makroausführung erzwingen, trotz Makrovirus-Schutz und hoher Sicherheitsstufe? Besonders interessanter Artikel

      [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? Besonders interessanter Artikel

      [98]  Wie kann ich mit VBA den Excel-Startordner XlStart herausfinden? Besonders interessanter Artikel

      [99]  Kann man mit VBScript auf sequentielle Dateien zugreifen, obwohl Anweisungen wie Open und Input fehlen?

    [100]  Wie erreicht man, dass eine Arbeitsmappe aus dem Web als Datei gespeichert und nicht geöffnet wird?

 

    [101]  Kann man Zellinhalte abfragen, ohne die Mappe zu öffnen, Excel zu starten und ein Spezialtool zu verwenden?

    [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!)? Besonders interessanter Artikel

    [107]  Wie kann man einen Zellbereich aus einer geschlossenen Arbeitsmappe kopieren?

    [108]  Welche Möglichkeiten gibt es, mit Excel-VBA ein minimiertes Word-Anwendungsfenster wiederherzustellen?

    [109]  Warum findet GetObject eine laufende Excel-Instanz nicht?

    [110]  Wie kann man den Windows-Dialog "Öffnen mit" aufrufen und eine Datei übergeben? Besonders interessanter Artikel

 

    [111]  Kann man über eine Schaltfläche einen Excel Restart auslösen? Besonders interessanter Artikel

    [112]  Wie kann man über eine Symbolleisten-Schaltfläche ein Programm starten, ohne ein VBA-Makro zu benutzen? Besonders interessanter Artikel

    [113]  Gibt es eine Möglichkeit, die Ausführung eines Makros im Makro-Dialog zu sperren? Besonders interessanter Artikel

    [114]  Wer weiss das Kennwort einer kennwortgeschützten Arbeitsmappe?

    [115]  Wie stellt man im Makro aufzeichnen-Dialog standardmässig "Persönliche Makro-Arbeitsmappe" ein? Besonders interessanter Artikel

    [116]  Kann die Liste der zuletzt geöffneten Dateien ausgeblendet werden, ohne sie zu löschen? Besonders interessanter Artikel

    [117]  Wie werden Gitternetzlinien für neue Mappen unterdrückt, ohne eine Vorlagemappe zu verwenden? Besonders interessanter Artikel

    [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?

 

       Home Zur Hauptseite

To Top

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 rotatingstar.gif (916 Byte) 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:

Betrifft: Microsoft Excel 97

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.

To Top

 


[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...

File Format Compatibilities

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.

HTML As a Companion File Format

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.

Some Office 2000 Features Are Not Supported in Office 98

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

Dateitypen

Excel-Dateiformat BIFF

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) Gehe zur Download-Seite  Hier geht's zur Download-Seite
Converting Files Between Different Office Versions Gehe zur Download-Seite  Hier geht's zur Download-Seite
Microsoft Office File Format Migration http://www.microsoft.com/office/techinfo/enterprisezone/itcolumn02.asp

To Top

 


[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:

Gehe zur Download-Seite  Hier geht's zur Download-Seite

 

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
arrow_r.gif (830 Byte) 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
arrow_r.gif (830 Byte) Dieses Problem wurde in Microsoft Office 97 Service Release 2 behoben.

To Top

 


[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)".

Eigenschaften-Fenster mit markiertem Codename
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

Excel-Features und -Funktionen: Der VBA Component Manager

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:

Ausschnitt des Projekt-Explorers
Abbildung: VBA-Projekt im Projekt-Explorer

Weitere Informationen über das BIFF-Dateiformat finden Sie hier:

Weitere Informationen

Excel-Dateiformat BIFF

 

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:

Fehlermeldung "Ungültiges Datenformat"
Abbildung: Fehlermeldung des VBA-Editors "Ungültiges Datenformat"

Weitere Informationen über diese und andere Fehlermeldungen finden Sie hier:

Weitere Informationen

Fehlermeldungen

 

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"
Download startenHier können Sie die Arbeitsmappe als ZIP-Datei herunterladen:
Defekte-Mappe.zip (6 KB, komprimierte zip-Datei)

Download startenHier können Sie die Arbeitsmappe als XLS-Datei herunterladen bzw. direkt öffnen:
Defekte-Mappe.xls (18 KB, xls-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.

Suchen Sie die neueste Version des Komprimierungstools WinZip? Klicken Sie hier.

To Top

 


[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

 

 

 

Excel-Architektur
    Abbildung: Excel-Architektur

 

Weitere Informationen

Excel-Prozesse: Die Back Seeking-Technik

To Top

 


[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

Zum Kapitelanfang

Einleitung

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.

Zum Kapitelanfang

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

Excel-Dateiformat BIFF

Zum Kapitelanfang

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.

Zum Kapitelanfang

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.

Zum Kapitelanfang

Weitere Informationsquellen

Weitere Informationen über duale Dateiformate finden Sie auf diesen Seiten:

Weitere Informationen

XLimits: Dateigrösse von Arbeitsmappen: Duale Dateiformate

XLimits: Dateigrösse von Arbeitsmappen reduzieren: Duales Dateiformat vermeiden

Zum Kapitelanfang
To Top

 


[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

Excel-Startparameter (Übersicht und Beschreibung)

Kann man Microsoft Excel auch starten, ohne dass das Anwendungsfenster erscheint?

VBA-Codebeispiele: Eigene Start-Parameter verwenden

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.

To Top

 


[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

VBA-Codebeispiele: Öffnen des VBA-Editor-Fensters verhindern

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:

VBA-Editor-Meldung: Gesperrtes Projekt
Abbildung: VBA-Editor-Meldung "Projekt gesperrt"

Bei einem geschützten VBA-Projekt einer nicht freigegebenen Arbeitsmappe wird dagegen der Kennworteingabe-Dialog angezeigt:

VBA-Projekt mit Kennwort
Abbildung: VBA-Editor-Dialog zum Eingeben des Projektkennwortes

Den entsprechenden VBA-Programmcode finden Sie hier:

Weitere Informationen

Wie erreicht man die Anzeige der Meldung "Projekt kann nicht angezeigt werden" anstelle der Kennworteingabe?

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

XLimits: Einschränkungen von freigegebenen Arbeitsmappen

To Top

 


[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

Phil's Office Secrets: Namenskonventionen, Richtlinien und Empfehlungen

To Top

 


[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.

To Top

 


[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

To Top

 


[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.

To Top

 


[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

Tastenkombinationen

Excel-Startparameter

VBA-Codebeispiele: Eigene Start-Parameter definieren

Kann man eigene Excel-Startparameter definieren?

To Top

 


[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.

Dialog "Datei öffnen"
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 Schaltfläche "Datei öffnen" zu.

To Top

 


[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.

To Top

 


[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

Tastenkombinationen

Excel Startparameter

VBA-Codebeispiele: Eigene Start-Parameter definieren

Kann man Microsoft Excel auch starten, ohne dass das Anwendungsfenster erscheint?

Kann man eigene Excel-Startparameter definieren?

To Top

 


[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

Startordner

Zusätzlicher Startordner

Standardarbeitsordner

Diagramm Galerie-Dateien

Add-Ins

Ausführliche Informationen über die xlb-Datei von Microsoft Excel erhalten Sie hier:

Weitere Informationen

Symbolleistendatei

Wie lautet der genaue Name der xlb-Datei und wo ist sie abgelegt?

Welche Hintergrund-Informationen gibt es über die xlb-Datei von Excel?

 

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.

 

Where can you store your Office settings?

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.

 

What is stored in your Office settings?

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.

To Top

 


[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

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

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

Excel-Objektmodell: Ereignisse des Workbook-Objektes

To Top

 


[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.

To Top

 


[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.

Excel-Dateitypen

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 -

 

Sonstige Office-Dateitypen

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
Die Dateiendung "acl" wird auch von der Software Corel Draw benutzt ("acl" steht für "Corel Draw 6 Keyboard Accelerator").

Weitere Informationen
Detaillierte Informationen über AutoKorrektur-Listen erhalten Sie hier.

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).

VBE-Fenster "Werkzeugsammlung"

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
Die Dateiendung "pag" wird auch von Visual Basic 5.0/6.0 für exportierte Eigenschaftsseiten benutzt ("pag" steht in Visual Basic für "Property Page").

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.

To Top

 


[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

To Top

 


[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

Limitationen in Microsoft Word

Weitere Informationen
Weitere Informationen über Dateigrösse, -formate und -typen erhalten Sie hier:

Weitere Informationen

XLimits: Dateigrösse von Arbeitsmappen

Excel-Dateiformat BIFF

Excel-Dateitypen

Alles über Limitationen, Spezifikationen und Grenzen in Microsoft Excel und anderen Programmen finden Sie hier:

Weitere Informationen

XLimits: Limitationen, Spezifikationen und Grenzen

To Top

 


[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.

Mappe kann nicht gelöscht werden
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.

To Top

 


[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

To Top

 


[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

Hyperlinks

To Top

 


[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...

To Top

 


[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").

Windows Task-Manager mit Registerseite 'Anwendungen'
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.

To Top

 


[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.

To Top

 


[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 Formats
http://www.microsoft.com/office/ork/018/018.htm#CH018H202

Converting File Formats in Microsoft Excel
http://www.microsoft.com/office/ork/018/018.htm#CH018H101

Specifying the Default Format in Which to Save Office Documents
http://www.microsoft.com/office/ork/022/022.htm#ORK022C1

Converting Lotus 1­2­3 Worksheets to Microsoft Excel
http://www.microsoft.com/office/ork/018/018.htm#CH018H206

Sharing Documents with Lotus 1­2­3
http://www.microsoft.com/office/ork/018/018.htm#CH018H207

To Top

 


[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:

Parameter des Utility "RegSvr32.exe"
Abbildung: Dialogfenster mit den Programmparametern von RegSvr32.exe

To Top

 


[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')
im Startordner 'XlStart' behandelt? Möchten Sie wissen, wo sich der Startordner
auf der Festplatte befindet?

Excel-Funktionen: Startordner und zusätzlicher Startordner

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:

Verknüpfung im Startordner (Windows Explorer)
Abbildung 1: Verknüpfte Arbeitsmappe im Excel-Startordner (Ausschnitt des Windows Explorers)

 

So sehen die Datei-Eigenschaften der Verknüpfung aus:

Dialog "Eigenschaften von <Verknüpfungname>"
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

VBA-Codebeispiele: Datei-Verknüpfung erstellen

 

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:

Registry-Eintrag "OPEN" (Ausschnitt von RegEdit
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:

Fehlermeldung "Datei wurde nicht gefunden"
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:

Fehlermeldung "Datei bereits geöffnet"
Abbildung: Fehlermeldung "Eine Datei mit dem Namen <Datei> ist bereits geöffnet"

To Top

 


[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

Excel-Funktionen: Auto_Open- und Auto_Close-Makros

VBA-Spezialthema: Auto-Makros

To Top

 


[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.

To Top

 


[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

VBA-Befehle und -Funktionen

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

To Top

 


[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 ...

 

Gehe zur Download-Seite  Hier gehts zur Downloadseite

 

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

To Top

 


[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

VBA-Codebeispiele: Temp-Verzeichnis von Windows ermitteln

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

To Top

 


[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

To Top

 


[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

Zum Anfang dieses Beitrages

Einleitung

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.

Zum Anfang dieses Beitrages

Möglichkeit 1: Notepad/Editor (Utility von Windows)

Öffnen Sie die Arbeitsmappendatei im Windows Editor (Notepad.exe).

Arbeitsmappen-Vergleich (Klicken für Bild vergrössern)
Abbildung: Vergleich zweier Arbeitsmappen (Bild anklicken zum Vergrössern)

Zum Anfang dieses Beitrages

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.

Arbeitsmappe ohne Dateikennwort
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.

Arbeitsmappe mit Dateikennwort
Abbildung: Hex-Dump einer Arbeitsmappe mit Dateikennwort

Download und Beschreibung dieses Tools siehe unter Weitere Informationen und Links.

Zum Anfang dieses Beitrages

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.

FileFox: Eigenschaften einer kennwortgeschützten Exceldatei
Abbildung: Kennwortgeschützte Arbeitsmappe in FileFox

Download und Beschreibung dieses Tools siehe unter Weitere Informationen und Links.

Zum Anfang dieses Beitrages

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.

XLock: Hinweismeldung bei einer kennwortgeschützten Exceldatei
Abbildung: Hinweismeldung von XLock bei einer kennwortgeschützten Arbeitsmappe

Download und Beschreibung dieses Tools siehe unter Weitere Informationen und Links.

Zum Anfang dieses Beitrages

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).

EFEX: Kennwortgeschützte Exceldatei
Abbildung: Kennwortgeschützte Arbeitsmappe in EFEX

Download und Beschreibung dieses Tools siehe unter Weitere Informationen und Links.

Zum Anfang dieses Beitrages

Möglichkeit 6: BIFF-Workbench (Freeware Tool)

BIFF-Workbench mit Dump-Analyse
Abbildung: BIFF-Workbench mit dem Dump einer kennwortgeschützten Arbeitsmappe

Download und Beschreibung dieses Tools siehe unter Weitere Informationen und Links.

Zum Anfang dieses Beitrages

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.

Zum Anfang dieses Beitrages

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.

Gehe zur Download-Seite  Hier gehts zur Downloadseite

Weitere Informationen zum Thema "Kennwort" finden Sie hier:

Verwandte Themen

Verwandte Themen

Schreibschutz und Schreibschutz-Kennwort

Öffnen mit Schreibschutz-Empfehlung

Lese-/Schreibkennwort

Excel-Dateiformat BIFF

Zum Anfang dieses Beitrages

To Top

 


[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:

Fehlermeldung "Microsoft Excel kann Makro nicht finden"
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.

To Top

 


[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:
arrowsright.gif (843 Byte) Schritt 1: Arbeitsmappe mit einer neuen Excelversion erstellen und speichern (z.B. Excel 2002)
arrowsright.gif (843 Byte) Schritt 2: Arbeitsmappe in einer älteren Excelversion öffnen und speichern (z.B. Excel 97)
arrowsright.gif (843 Byte) 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

To Top

 


[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:

Fehlermeldung "Die Datei ist gesperrt"
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

Excel-interne Prozesse

To Top

 


[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:

Explorer-Rückfrage "Dateinamenerweiterung ändern"
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.

Optionen-Dialog des Windows Explorers

Explorer-Dialogfenster "Dateityp bearbeiten"

Explorer-Dialogfenster "Vorgang bearbeiten für Typ: <Typ>"

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

Wie kann ich einstellen, welches Programm beim Öffnen einer Datei gestartet wird?

VBA-Codebeispiele: Datei mit verknüpftem Programm öffnen

 

Codebeispiele für VBA und VB

Datei mit verknüpftem Programm öffnen

Öffnen-Befehl eines Dateityps ermitteln

Öffnen-Befehl eines Dateityps ändern

Dateitypen mit den definierten Öffnen-Befehlen auflisten

Dateitypen eines bestimmten Programmes auflisten

Neue Dateinamenerweiterung mit Dateitypzuordnung registrieren

Dateinamenerweiterungen eines Dateityps ermitteln

Dateinamenerweiterungen mit zugeordnetem Dateityp auflisten

Prüfen, ob eine Dateinamenerweiterung einem Dateityp zugeordnet ist

Dateityp einer Dateinamenerweiterung abfragen

To Top

 


[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.

Dateireservierung: "Datei ist in Bearbeitung"
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

VBA-Codebeispiele: Aktueller Bearbeiter einer Arbeitsmappe ohne Microsoft Excel herausfinden

To Top

 


[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.

 

Dateireservierung: "Dateizugriff ändern"
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:

Fehlermeldung "Anwendungs- oder objektdefinierter Fehler"
Abbildung: Laufzeitfehler 1004 "Anwendungs- oder objektdefinierter Fehler"

To Top

 


[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:

Speichern unter-Dialog mit Dateiname in Hochkommas
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")

To Top

 


[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

To Top

 


[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

To Top

 


[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:

Windows Explorer: Optionen-Dialog
Abbildung: Optionen-Dialog des Windows Explorers

Windows Explorer: Dateityp bearbeiten-Dialog
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").

To Top

 


[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:

Rückfrage-Meldung "Verknüpfungen aktualisieren"
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.

Mehrere Verknüfungen auf eine identische Quellmappe
Abbildung: Mehrere Verknüfungen auf eine identische Quellmappe

 

Symptoms

If you open multiple Excel workbooks that all contain links to the same source workbook, and you choose not to update the links, the links in all of the workbooks will be updated to the values that are stored in the last workbook that was opened.

Cause

This behavior occurs because link information is stored in an internal link table. This link table is shared among all open workbooks in that instance of Excel. The most recently opened workbook provides the link table that is in memory at any specific time.

Workaround

To work around to this behavior, open the workbooks in different instances of Excel. As a result, each workbook maintains its own internal link table and stored values.

 

Weitere Informationen finden Sie hier:

Weitere Informationen

Externe Bezüge und Verknüpfungen

To Top

 


[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:

CSV-Datei im Windows Editor
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:

Geöffnete CSV-Datei (1)
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:

Geöffnete CSV-Datei (2)
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).

Windows Explorer: Optionen-Dialog
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).

Windows Explorer: Dateityp bearbeiten-Dialog
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).

Windows Explorer: "Vorgang bearbeiten"-Dialog
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.

To Top

 


[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:

  1. In My Computer or Windows Explorer, click the Tools menu, click Folder Options, and then click the File Types tab.
  2. In the Registered file types list, click the file type you want to open with a different program, and then click Change.
  3. In the Open With dialog box, select the program you want to use, and then click OK.
  4. Click OK in the Folder Options dialog box.

For Windows 98 and Windows NT 4.0:

  1. In My Computer or Windows Explorer, click the View menu, click Folder Options (Options in Windows NT 4.0), and then click the File Types tab.
  2. In the list of file types, click the file type, and then click Edit.
  3. In Actions, click Open, and then click Edit.
  4. Click in Application used to perform action box, and then click Browse.
  5. In the Open With dialog box, locate the program you want to use to open files that have this extension, and then click OK.
  6. Click OK in the Folder Options dialog box.

 

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

Wo finde ich Informationen über Dateitypen und Dateinamenerweiterungen (File Associations)?

VBA-Codebeispiele: Datei mit verknüpftem Programm öffnen

To Top

 


[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":

Eigenschaften-Dialog "Allgemein"
Abbildung: Eigenschaften-Dialog mit Registerseite "Allgemein"

Das andere Erstellt-Feld ist auf der Registerseite "Statistik" zu finden:

Eigenschaften-Dialog "Statistik"
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!

Durch Virenscanner geändertes Erstellungsdatum
Abbildung: Eigenschaften-Dialog mit fehlerhaftem Erstellt-Datum (Registerseite "Allgemein")

To Top

 


[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.

Temp-Datei einer Arbeitsmappe im Windows Explorer
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

 

Temp-Datei von Excel im Windows Explorer
Abbildung: Temporäre Datei von Excel im Windows Temp-Verzeichnis

 

Weitere Informationen über temporäre Dateien und Datenrettung erhalten Sie hier:

Weitere Informationen

Temporäre Dateien

Daten retten und Dateien wiederherstellen

To Top

 


[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)

 

Fehlermeldung "HTML-Importfehler"
Abbildung: Fehlermeldung "HTML-Importfehler"

 

Muster einer Spreadsheet Component-Tabelle
Abbildung: Eine Exceltabelle im Webbrowser

 

Ausführliche Informationen über die Limitationen der Office Web-Komponenten finden Sie hier:

Weitere Informationen

XLimits: Limitationen der Office Web Components

 

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

To Top

 


[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

To Top

 


[55] Wie lässt sich mit VBA eine Anwendung starten und dabei ihre Prozess-Basispriorität bestimmen?

Beschreibung folgt...

 

Weitere Informationen

VBA/VB-Codebeispiele: Programm mit einer bestimmten Prozess-Basispriorität starten

To Top

 


[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:

Öffnen-Dialog von Office 2000
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)

To Top

 


[57] Gibt es eine Möglichkeit, in Excel v.X (Mac) VBA-Makros von Excel 5.0/95-Arbeitsmappen zu konvertieren?

Betrifft: Microsoft Excel v.X for Mac

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

To Top

 


[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.

To Top

 


[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:

 

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

To Top

 


[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

VBA/VB-Codebeispiele: Datei verschieben

VBA/VB-Codebeispiele: Mehrere Dateien verschieben

VBA-Befehle und -Funktionen

To Top

 


[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:

Windows XP

  1. Klicken Sie auf Start und danach auf Suchen.
  2. Klicken Sie im Fenster Suchergebnisse auf Dateien und Ordnern.
  3. Im Feld Gesamter oder Teil des Dateinamens geben Sie *.xls ein.
  4. Klicken Sie unter Dateityp auf Erweiterte Optionen und anschließend auf Dateien und Ordnern.
  5. Aktivieren Sie die Kontrollkästchen Systemordner durchsuchen und Versteckte Elemente durchsuchen, und klicken Sie anschließend auf Suchen.

Windows 2000

  1. Klicken Sie auf Start, auf Suchen und dann auf Dateien oder Ordner suchen.
  2. In das Feld Nach folgenden Dateien oder Ordnern suchen geben Sie *.xls ein.
  3. Vergewissern Sie sich, dass Ihre primäre Festplatte, normalerweise Laufwerk C:, im Dialogfeld Suchen in angezeigt wird, aktivieren Sie das Kontrollkästchen Unterordner einbeziehen, und klicken Sie auf Jetzt suchen.

Windows 98

  1. Klicken Sie auf Start, auf Suchen und dann auf Dateien/Ordner.
  2. In das Feld Name geben Sie *.xls ein.
  3. Vergewissern Sie sich, dass Ihre primäre Festplatte, normalerweise Laufwerk C:, im Dialogfeld Suchen in angezeigt wird, aktivieren Sie das Kontrollkästchen Unterordner einbeziehen, und klicken Sie auf Jetzt suchen.
  4. Doppelklicken Sie auf eine Datei in der Ergebnisliste, um diese in Excel zu öffnen und zu überprüfen, ob es sich dabei um die fehlende Version handelt. Hinweis: Wenn es sich bei keiner der .xls-Dateien in der Ergebnisliste um die fehlende Version handelt, fahren Sie mit dem nächsten Schritt fort.
  5. Wiederholen Sie Schritt 2. Geben Sie im Feld Name anstelle von *.xls die Dateinamenerweiterung *.xar ein.
  6. Doppelklicken Sie auf eine Datei in der Ergebnisliste, um diese in Excel zu öffnen und zu überprüfen, ob es sich dabei um die fehlende Version handelt. Hinweis: Wenn es sich bei keiner der .xar-Dateien in der Ergebnisliste um die fehlende Version handelt, fahren Sie mit dem nächsten Schritt fort.
  7. Doppelklicken Sie auf dem Desktop auf Papierkorb, um zu überprüfen, ob sich die gesuchte Arbeitsmappe hier befindet. Wenn die fehlende Arbeitsmappe nicht über eine dieser Vorgehensweisen wieder auffindbar ist, so ist die Arbeitsmappe verloren. Sie müssen sie erneut erstellen.

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

To Top

 


[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

Welche Dialogfenster von Windows und Excel kann man mit VBA-Programmcode öffnen?

To Top

 


[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

Add-Ins

To Top

 


[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:

Windows NT Task-Manager - Registerseite Anwendungen
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

VBA/VB-Codebeispiele: Prozess abschiessen

 

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.

Windows NT Task-Manager - Registerseite Prozesse
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

VBA-Codebeispiele: Andere Anwendung beenden

 

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

 

To Top

 


[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.

Ländereinstellungen-Dialog der Windows Systemsteuerung
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".

Ländereinstellungen-Dialog mit 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 Mail
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

To Top

 


[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:

Logdatei mit automatischem TimeStamp
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.

To Top

 


[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:

Excel-Anwendungsfenster ohne Menü- und Symbolleisten
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

Wo befinden sich die Exceldateien mit den benutzerspezifischen Einstellungen?

Wie lautet der genaue Name der xlb-Datei und wo ist sie abgelegt?

Excel-Dateitypen

To Top

 


[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.

Dateiverknüpfung auf dem Windows Desktop
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

Binärwert für Eintrag "Link" in der Registry
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.

To Top

 


[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

VBA-Codebeispiele: Datei der aktiven Arbeitsmappe löschen

To Top

 


[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.

To Top

 


[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

Excel-Objektmodell: Methoden des Workbook-Objektes

To Top

 


[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).

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

Projekt-kann-nicht-angezeigt-werden.gif (2496 Byte)
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).

Freigabe-Dialogfenster
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.

Rückfrage "Vorgang führt zu einer Speicherung"
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

Arbeitsmappen freigeben

VBA-Spezialthema: Freigegebene Mappen

Was kann ich tun, damit mein Excel 97/2000 VBA-Projekt nicht geöffnet werden kann?

XLimits: Einschränkungen von freigegebenen Arbeitsmappen

To Top

 


[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

Excel-Dateitypen

Excel-Dateiformat BIFF

 

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.

Formatting Features

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 left­aligned.
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.

Formulas and Functions Features

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.

Charting Features

When this Excel 2000 feature… is saved in Excel 5.0/95 format…
3­D bar shapes (cylinder, pyramid, and cone) 3­D shapes are converted to 3­D 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.
Pie­of­pie and bar­of­pie 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.

PivotTable Features

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:
Page field placement across columns or down rows, Alternate strings for NA and error cell display, Server­based page fields, AutoSort and AutoShow on fields, Multiselect on page fields, Persistent grouping and sorting, Data fields displayed as numbers.

Preserved formatting Formatting is saved, but structured behavior is lost as soon as the user makes changes to or refreshes the PivotTable data.

Workgroup and Internet Features

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.

Data Access Features

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.

Programmability Features

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.

To Top

 


[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).

Datei-Eigenschaften einer Dokumentdatei
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.

Gehe zur Download-Seite  Hier geht's zur Download-Seite

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

VBA-Spezialthema "OLE Document Properties (DSOFile)"

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

Excel-Dateiformat BIFF

Benutzer, Bearbeiter, Autor & Co.

To Top

 


[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:

Excel-Fehlermeldung "Zugriff auf Datei verweigert"
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:

Editor-Fehlermeldung "Datei kann nicht geöffnet werden"
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.

To Top

 


[76] Was muss ich beim Erstellen eines eigenen Add-Ins beachten?

Es ist eigentlich sehr einfach ein eigenes Add-In zu erstellen.

Dialogfenster "Add-In-Manager"
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

Add-Ins

Funktionen und Features: Add-Ins

To Top

 


[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.

Projekt-Explorer des VBA-Editors
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.

To Top

 


[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

XLimits: Dateigrösse von Arbeitsmappen

XLimits: Dateigrösse von Arbeitsmappen reduzieren

To Top

 


[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

Excel-interne Prozesse

Excel-interne Prozesse: Was läuft beim Öffnen einer Arbeitsmappe ab?

Excel-Funktionen und -Features: Auto_Open- und Auto_Close-Makro

VBA-Spezialthema: Auto-Makros

To Top

 


[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 Double
  Dim rngZelle As Range
  Dim dblSumme As Double
  For Each rngZelle In Bereich
    If rngZelle.Interior.ColorIndex = Farbcode Then
      If IsNumeric(rngZelle) Then
        dblSumme = dblSumme + rngZelle.Value
      End If
    End If
  Next
  SumBgColor = dblSumme
End Function

Der 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.

To Top

 


[81] Was sollte man beim Upgrade von Excel 2001 (Macintosh) auf Excel X (Macintosh) beachten?

Betrifft: Microsoft Excel 2001 for Mac

Dieser Beitrag betrifft Microsoft Excel for Macintosh

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

Microsoft Excel for Macintosh: Excel X-Upgrade (Webseite von Microsoft)

To Top

 


[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:

Laufzeit-Fehlermeldung "Arbeitsmappe kann nicht geschlossen werden"
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()
  Dim wkb1 As Object
  Dim wkb2 As Object
  'Beide Mappen öffnen
  Set wkb1 = Workbooks.Open("Mappe1.xls")
  Set wkb2 = Workbooks.Open("Mappe2.xls")
  'Beide Mappen schliessen
  wkb2.Close
  wkb1.Close 
'<- Hier tritt der Laufzeitfehler 1004 auf!
End Sub

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()
  Dim wkb1 As Object
  Dim wkb2 As Object
  'Beide Mappen öffnen
  Set wkb1 = Workbooks.Open("Mappe1.xls")
  Set wkb2 = Workbooks.Open("Mappe2.xls")
 
'Mappe Mappe2.xls schliessen
  wkb2.Close
 
'Objektvariable wkb2 auf Nothing setzen
  Set wkb2 = Nothing
 
'Mappe Mappe1.xls schliessen
  wkb1.Close

End Sub

Weitere Informationen zu der hier beschriebenen Fehlermeldung finden Sie hier:

Weitere Informationen

Fehlermeldungen: Fehlermeldungen beim Schliessen einer Arbeitsmappe

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.

To Top

 


[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

VBA-Codebeispiele

Hyperlinks

VBA-Befehle und -Funktionen

To Top

 


[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:

Dialog "Dokument-Eigenschaften" mit 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

Hyperlinks

VBA/VB-Codebeispiele: Codebeispiele zum Themengebiet "Hyperlink"

To Top

 


[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.

Anpassen-Dialog von Excel
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.

Kontextmenü beim Anpassen eines Steuerelementes
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.

Makro zuweisen anhand des Makros-Dialoges
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

Wie lautet der genaue Name der xlb-Datei und wo ist sie abgelegt?

 

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

Excel-Startparameter: Parameter '/i'

 

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:

Weitere Informationen

Wie lautet der genaue Name der xlb-Datei und wo ist sie abgelegt?

Wie kann man eine einzelne Symbolleiste auf die Arbeitsstationen vieler Benutzer kopieren?

Gibt es eine Möglichkeit, mit VBA eine benutzerdefinierte Symbolleiste an eine Mappe anzubinden?

Funktionen und Features: Symbolleistendatei (xlb)

Phil's Office Secrets: Symbolleisten und die xlb-Datei von Microsoft Excel

To Top

 


[86] Kann man Microsoft Excel auch starten, ohne dass das Anwendungsfenster erscheint?

Betrifft: Microsoft Excel 97

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

Excel-Startparameter

Fragen und Antworten: Kann man eigene Start-Parameter definieren?

VBA-Codebeispiele: Eigene Start-Parameter verwenden

To Top

 


[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

Tastenkombinationen

To Top

 


[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.

Gehe zur Download-Seite  Hier geht's zur Download-Seite

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:

Weitere Informationen

Welche Hintergrund-Informationen gibt es über die xlb-Datei von Excel?

Wie kann man eine einzelne Symbolleiste auf die Arbeitsstationen vieler Benutzer kopieren?

Wo befinden sich die Exceldateien mit den benutzerspezifischen Einstellungen?

Gibt es eine Möglichkeit, mit VBA eine benutzerdefinierte Symbolleiste an eine Mappe anzubinden?

Funktionen und Features: Symbolleistendatei (xlb)

Phil's Office Secrets: Symbolleisten und die xlb-Datei von Microsoft Excel

To Top

 


[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.

Anpassen-Dialog in Microsoft Excel
Abbildung: Anpassen-Dialog von Microsoft Excel

Wenn Sie auf die Schaltfläche "Anbinden" klicken, erscheint das "Symbolleiste anbinden"-Dialogfenster:

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

Wie kann man eine einzelne Symbolleiste auf die Arbeitsstationen vieler Benutzer kopieren?

Phil's Office Secrets: Symbolleisten und die xlb-Datei von Microsoft Excel

To Top

 


[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.

Projekt-Explorer mit Blattkopien
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.

To Top

 


[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
 
arrow_r.gif (830 Byte) Diese Fehlermeldung erscheint, wenn die Arbeitsmappe in Excel 2002 mit einer von Excel 97/2000 nicht erkennbaren Verschlüsselung gespeichert wurde.

To Top

 


[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.

Dialogfenster "Namen festlegen" mit Excel4-Makrofunktion
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())

To Top

 


[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.

To Top

 


[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...

To Top

 


[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.

Makroviren-Warnung beim Öffnen einer Datei
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.

Wie kann eine Mappe beim Start automatisch geöffnet werden, ohne sie ins XLStart-Verzeichnis zu stellen?

To Top

 


[96] Wie lässt sich Excel mit einer bestimmten Fenstergrösse und -position starten?

Normalerweise wird beim Excelstart diejenige Fenstergrösse und -position wiederhergestellt, die beim letzten Beenden angewendet wurde. Nun ist es aber manchmal erforderlich, dass das Excel-Anwendungsfenster an einem ganz bestimmten Ort mit einer ganz bestimmten Grösse werden muss, beispielsweise wenn Microsoft Excel als Teil einer anwendungsübergreifenden Softwarelösung verwendet wird, wobei mehrere Anwendungen auf dem Bildschirm angezeigt werden sollen, und alle Fenster zu sehen sein müssen.

Sowohl Grösse als auch Position des Anwendungsfenster werden in der Windows Registry gespeichert. Sie können somit diese Informationen problemlos auf Ihre eigenen Bedürfnisse anpassen. Damit jedoch Excel mit den von Ihnen angegebenen Werten startet, muss die Änderung vor dem Excelstart durchgeführt werden. Microsoft Excel besitzt insgesamt zwei Registry-Einträge, die im Zusammenhang mit dem Anwendungsfenster benötigt werden. Gelegentlich existiert auch die Anforderung, dass das Anwendungsfenster nicht verschoben, maximiert und minimiert werden darf. Auch dafür gibt es eine Lösung.

Hinweis
Die hier angegebenen Bezeichnungen der Registryzweige sind auf Microsoft Excel 97 (Version 8.0) ausgelegt. Wenn Sie eine andere Excelversion verwenden, müssen Sie die Zweignamen entsprechend anpassen (z.B. lautet der Zweig von Microsoft Excel 2000 "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Excel\Options").

 

Registry-Eintrag "Maximized"

Der erste Registry-Eintrag heisst "Maximized" und steuert den Fenstermodus:

Zweig: HKEY_CURRENT_USER\Software\Microsoft\Office\x.0\Excel\Microsoft Excel
Eintrag: Maximized (Typ "DWORD")
Wert: 2 (Dezimal)

x steht für die Excel-Versionsnummer 8, 9, 10 oder 11

Stellen Sie den Wert dieses Eintrages auf 2, damit beim Start das Anwendungsfenster im normalen Fenstermodus und die neue, leere Arbeitsmappe im Vollbildmodus geöffnet wird. Neben dem Wert 2 existieren andere erlaubte Werte. Hier eine Übersicht:

Wert Beschreibung
0 Öffnet das Anwendungsfenster und das Arbeitsmappenfenster im normalen Fenstermodus
1 Öffnet das Anwendungsfenster im Vollbildmodus und das Arbeitsmappenfenster im normalen Fenstermodus
2 Öffnet das Anwendungsfenster im normalen Fenstermodus und das Arbeitsmappenfenster im Vollbildmodus
3 Öffnet das Anwendungsfenster und das Arbeitsmappenfenster im Vollbildmodus

Wenn Sie eine grössere Zahl als 3 angeben, so wird diese von Microsoft Excel automatisch durch 4 geteilt und der Rest als Wert für "Maximized" verwendet. Das geschieht während der Programmstart.
Beispiele:
» 4/4=1 Rest 0  >  0 wird als Wert verwendet
» 11/4=2 Rest 3  >  3 wird als Wert verwendet
» 98/4=24 Rest 2  >  2 wird als Wert verwendet

 

Registry-Eintrag "Pos"

Der zweite benötigte Registry-Eintrag heisst "Pos" und steuert Grösse und Position des Excel-Anwendungsfensters:

Zweig: HKEY_CURRENT_USER\Software\Microsoft\Office\x.0\Excel\Microsoft Excel
Eintrag: Pos (Typ "Zeichenfolge")
Wert: "<Links>,<Oben>,<Breite>,<Höhe>"

x steht für die Excel-Versionsnummer 8, 9, 10 oder 11

In diesem Eintrag sind die vier Werte für "Fensterposition links" (<Links>), "Fensterposition oben" (<Oben>), "Fensterbreite" (<Breite>) und "Fensterhöhe" (<Höhe>) gespeichert, und zwar in genau dieser Reihenfolge. Die Werte sind jeweils durch ein Komma getrennt. Die verwendete Masseinheit ist Pixel und entspricht der von der Bildschirm-Auflösung verwendeten Masseinheit. Die Position 0,0 befindet sich in der linken oberen Ecke des Bildschirms. Wenn Sie also in Windows eine Bildschirm-Auflösung von 1'024 x 768 Pixel verwenden und Sie die Werte für das Excel-Anwendungsfenster mit "0,0,1024,768" angeben, so wird Excel bildschirmfüllend gestartet. Die Werte "0,0,512,384" (d.h. 1024/2=512 und 768/2=384) öffnen das Anwendungsfenster in der linken oberen Ecke, wobei es halb so breit und halb so hoch ist wie der Bildschirm. Wenn Sie für Breite und Höhe grössere Werte als die aktuelle Bildschirm-Auflösung angeben, so werden diese beim Start automatisch reduziert, damit das Anwendungsfenster nicht grösser als der Bildschirm ist. Die maximale Breite beträgt 1'036 Pixel (1'024+12), und die maximale Höhe beträgt 780 Pixel (768+12), wenn die Bildschirm-Auflösung auf 1'024 x 768 Pixel eingestellt ist.

Wenn der Registry-Eintrag "Maximized" auf 1 oder 3 gestellt wird, werden die im Eintrag "Pos" angegebenen Werte ignoriert, da bei diesen Maximized-Werten das Anwendungsfenster im Vollbildmodus dargestellt wird und somit weder eine explizite Position noch Grösse besitzt.

 

Registry-Einträge ändern

Wie bereits erwähnt müssen die Registry-Werte vor dem Excelstart geändert werden. VBA-Programmcode, welcher beispielsweise im Workbook_Open-Ereignis einer Arbeitsmappe ausgeführt wird, bringt aus diesem Grund keinen Erfolg, weil zum Zeitpunkt der Codeausführung das Anwendungsfenster bereits offen ist, mit anderen Worten das Anpassen der Registry-Einträge zu spät ist.

Registry-Einträge mit VBA- oder VB-Programm ändern

Sie können zum Ändern der Registry-Einträge aber dennoch ein selbstgeschriebenes Programm verwenden, beispielsweise ein Visual Basic-Programm oder ein VBA-Programm, das zum Beispiel in einem Word-Dokument oder einer PowerPoint-Präsentation abläuft.

Der Zugriff auf die Registry erfolgt am einfachsten anhand der Objektbibliothek des Windows Script Hosts (WSH). Das Shell-Objekt stellt eine Methode namens RegWrite zur Verfügung, mit der man einen Wert in die Registry schreiben kann. Man könnte auch Hier der entsprechende Programmcode für VBA und VB:

Sub SetAppWindowStartupPos()
  Dim objWSHShell As Object
  Set objWSHShell = CreateObject("WScript.Shell")
  objWSHShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel\Pos", "20,20,500,250"
  objWSHShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel\Maximized", "2"
  Set objWSHShell = Nothing
End Sub

Der Zugriff auf die Registry erfolgt am einfachsten anhand der Objektbibliothek des Windows Script Hosts (WSH). Das Shell-Objekt stellt eine Methode namens

Registry-Einträge mit VBScript ändern

Anstelle eines VB- oder VBA-Programmes können Sie den Code auch mit einer anderen Programmiersprache schreiben, beispielsweise mit VBScript. Der Code wird dann als eine Datei mit der Dateinamenerweiterung 'vbs' gespeichert (z.B. Dateiname "SetExcelWindowPos.vbs") und ausgeführt.

Bitte beachten Sie, dass bei VBScript die erste Programmzeile "Dim objWSHShell" lauten muss, d.h. ohne die Deklaration des Datentypes mit "As Object".

 

Eine weitere sehr einfache Möglichkeit ist das Erstellen einer in die Windows Registry importierbare Textdatei, in welcher die beiden Einträge mit den von Ihnen gewünschten Werten gespeichert sind. Diese Datei besitzt die Endung '.reg' und muss ein ganz bestimmtes Format verwenden, damit die Informationen in die Registry eingetragen werden können. Hier ein Beispiel des Dateiinhaltes:

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel]
"Maximized"=dword:00000002
"Pos"="20,20,500,250"

Wenn Sie die Datei erstellt haben, kann sie jederzeit, bzw. in unserem Fall vor dem Excelstart, mit der Registrierungsdatenbank zusammengeführt werden. Dies wird vorgenommen, indem man das Windows Utility "Registrierungseditor" (RegEdit.exe) ausführt und in der Befehlszeile die oben erstellte Datei angibt (inklusive Dateipfad). Zwischen Programm- und Dateiname sollte der Parameter '-s' eingefügt werden. Er bewirkt, dass keine Meldung bezüglich erfolgreichem Eintragen der Informationen angezeigt wird ('s' steht für englisch 'Silent', auf deutsch 'Lautlos'). Die Befehlszeile sieht dann beispielsweise so aus:

  RegEdit.exe -s C:\Daten\Excel\SetExcelWindowPos.reg

 

Position des Anwendungsfenster fixieren

Wenn Sie möchten, dass das an der von Ihnen vorgegebenen Position angezeigte Anwendungsfenster nicht verschoben und auch nicht maximiert und minimiert werden darf, müssen Sie den nachfolgenden VBA-Programmcode in eine Arbeitsmappe einfügen. Mit dem VBA-Code werden alle Systemmenübefehle des Anwendungsfensters entfernt, mit Ausnahme des Befehls "Schliessen  Alt+F4". Normalerweise sieht das Systemmenü folgendermassen aus:

Standard-Systemmenü des Anwendungsfensters
Abbildung: Standard-Systemmenü

Nach Ausführen der weiter unten vorgestellten Prozedur RemoveMenuItems enthält das Menü nur noch den Schliessen-Befehl:

Geändertes Systemmenü des Anwendungsfensters
Abbildung: Modifiziertes Systemmenü

 

VBA-Programmcode

Hier der zum Fixieren des Anwendungsfensters benötigte VBA-Code, den Sie in das VBA-Projekt einer Arbeitsmappe kopieren müssen:

Codemodul "DieseArbeitsmappe"
Private Sub Workbook_Open()
  Call RemoveMenuItems
End Sub

Codemodul "Modul1"
Declare Function FindWindowA Lib "user32" (ByVal lpClassName$, ByVal lpWindowName As Long) As Long
Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long

Public Sub RemoveMenuItems()
  Dim hWnd As Long
  Dim hMnu As Long
  Dim lngRetValue As Long
  Dim intItem As Integer
  Const MF_BYPOSITION As Long = 1024
  Const MF_GRAYED As Long = 1
  Const MF_DISABLED As Long = 2
  hWnd = FindWindowA("XLMAIN", 0)
  hMnu = GetSystemMenu(hWnd, 0)
  For intItem = 5 To 0 Step -1
    lngRetValue = RemoveMenu(hMnu, intItem, MF_BYPOSITION)
  Next intItem
End Sub

Beim Öffnen der Arbeitsmappe wird die Workbook_Open-Ereignisprozedur ausgeführt, welche die Prozedur RemoveMenuItems aufruft. Durch das Entfernen der Menübefehle "Wiederherstellen", "Verschieben", "Grösse ändern", "Minimieren" und "Maximieren" ist es nicht mehr möglich, diese Aktionen auszuführen. Der Menübefehl "Schliessen" darf nicht entfernt werden, da ansonsten das Anwendungsfenster von Microsoft Excel nicht mehr geschlossen werden könnte. Das Beenden über Datei/Beenden wäre allerdings nach wie vor möglich.

To Top

 


[97] Wie öffnet man eine Arbeitsmappe aus dem Web in Excel statt im Browserfenster?

Seit Microsoft Office 2000 werden Excel-Arbeitsmappen aus dem Web standardmässig im Browserfenster angezeigt und nicht in Microsoft Excel geöffnet. Sie können dies verhindern, indem Sie in der Windows Registry einen speziellen Eintrag namens "BrowserFlags" hinzufügen.

 

Lösung: Registry-Eintrag "BrowserFlags" hinzufügen

Führen Sie das Programm RegEdit.exe aus und suchen Sie im Zweig "HKEY_CLASSES_ROOT" nach dem Schlüssel "Excel.Sheet.8". In diesem Zweig befindet sich üblicherweise bereits der Eintrag "EditFlags". Fügen Sie über den Befehl "Neu" einen neuen Eintrag vom Typ "DWord" hinzu und benennen Sie diesen mit "BrowserFlags". Geben Sie als Wert die Zahl 8 ein.

Zusammengefasst muss also Folgende Anpassung vorgenommen werden:
- Zweig: HKEY_CLASSES_ROOT\Excel.Sheet.8
- Eintrag: BrowserFlags (Eintragtyp "DWORD")
- Wert: 8 (Dezimal)

Sobald der neue Registry-Eintrag hinzugefügt ist, werden Arbeitsmappen nicht mehr im Webbrowser sondern in Microsoft Excel geöffnet.

 

Eine Beschreibung, wie eine Arbeitsmappe gespeichert statt geöffnet wird, finden Sie hier:

Verwandte Fragen

Wie erreicht man, dass eine Arbeitsmappe aus dem Web als Datei gespeichert und nicht geöffnet wird?

To Top

 


[98] Wie kann ich mit VBA den Excel-Startordner XlStart herausfinden?

Der vollständige Beitrag folgt in Kürze...

Achtung!
Erfahrene VBA-Programmierer werden wahrscheinlich sagen: "Kein Problem! Der Startordner kann ganz einfach mit 'Application.StartupPath' abgefragt werden." Aber aufgepasst! Ganz so einfach ist es nämlich nicht.

Es stimmt grundsätzlich, dass der Startordner von Microsoft Excel mit der Anweisung

  Application.StartupPath

ermittelt werden kann. Leider enthält die Eigenschaft StartupPath nur einen einzigen Startordnerpfad. Microsoft Excel kann aber bis zu vier verschiedene Startordner gleichzeitig verwenden. Alle Startordner besitzen den Namen gleichen Namen 'XlStart'. Sie liegen jedoch an verschiedenen Orten auf der Festplatte.

 

The default startup folders for Excel include the following:

NOTE: You may not have all of these folders available.

To Top

 


[99] Kann man mit VBScript auf sequentielle Dateien zugreifen, obwohl Anweisungen wie Open und Input fehlen?

In der Programmiersprache VBScript existieren tatsächlich keine Anweisungen für den Zugriff auf Dateien. Sämtliche von VB und VBA her bekannten Befehle wie Open, Close, Get, Put, Print, Input, Line Input, Write usw. fehlen. Dennoch gibt es einen einfachen Weg, wie man mit VBScript auf Dateien zugreifen kann: Indem man die Möglichkeiten des FileSystemObject-Objektes nutzt.

FileSystemObject
http://msdn.microsoft.com/library/en-us/script56/html/FSOoriFileSystemObject.asp

FileSystemObject - Working with Files
http://msdn.microsoft.com/library/en-us/script56/html/sgworkingwithfiles.asp

VBA Features not in VBScript
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsgrpnonfeatures.asp

Key Differences Between Visual Basic for Applications and VBScript
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dninvbs/html/keydifferencesbetweenvisualbasicforapplicationsvbscript.asp

 

Weitere Informationen zu diesem Thema finden Sie hier:

Verwandte Fragen

Wo finde ich Informationen über Zugrifftechniken für sequentielle und binäre Dateien?

VBA-Spezialthema: File System Object

To Top

 


[100] Wie erreicht man, dass eine Arbeitsmappe aus dem Web als Datei gespeichert und nicht geöffnet wird?

Seit Microsoft Office 2000 werden Excel-Arbeitsmappen aus dem Web nicht mehr standardmässig in Microsoft Excel geöffnet, sondern im Browserfenster angezeigt oder können als Datei heruntergeladen werden. Bei Microsoft Office 97 werden Arbeitsmappen aus dem Web entweder in Microsoft Excel geöffnet oder können als Datei gespeichert werden.

Wenn Sie möchten, dass bei Eingabe der URL einer Exceldatei oder bei Anklicken einer Exceldatei im Browser das Dialogfenster "Dateidownload" angezeigt wird, müssen Sie lediglich eine Option aktivieren, die sich im Dialogfenster "Dateityp bearbeiten" des Windows Explorers befindet.

Rückfrage "Dateidownload bestätigen"
Abbildung: Dialogfenster "Dateidownload"

Im Dialogfenster "Dateidownload" können Sie wählen, ob die Datei geöffnet oder auf einem Datenträger gespeichert werden soll.

 

Vorgehen

Damit beim Anklicken einer Exceldatei das Dialogfenster "Dateidownload" (siehe Abbildung oben) angezeigt wird, müssen folgende vier Schritte durchgeführt werden:

» Schritt 1: Öffnen Sie den Windows Explorer und führen den Menübefehl Ansicht/Optionen aus.

» Schritt 2: Markieren Sie auf der Registerseite "Dateitypen" den Eintrag "Microsoft Excel-Arbeitsmappe" in der Liste der registrierten Dateitypen und klicken Sie auf die Schaltfläche "Bearbeiten" (siehe nächste Abbildung).

Windows Explorer: Optionen-Dialog
Abbildung: Optionen-Dialog des Windows Explorers

» Schritt 3: Aktivieren Sie das Kontrollkästchen "Öffnen nach dem Herunterladen bestätigen", damit die Exceldatei nicht sofort geöffnet wird sondern das oben beschriebene Dialogfenster "Dateidownload" erscheint. Hinweis: Je nach Windows-Version ist die Option auch mit "Öffnen nach dem Download bestätigen" angeschrieben (siehe nächste Abbildung).

Windows Explorer: Dateityp bearbeiten-Dialog
Abbildung: Dialogfenster "Dateityp bearbeiten" des Windows Explorers

» Schritt 4: Schliessen Sie den Dialog "Dateityp bearbeiten" mit OK und anschliessend den Dialog "Optionen" ebenfalls mit OK.

Nach diesen vier Schritten erscheint zukünftig bei Anklicken einer Exceldatei im Webbrowser das Dialogfenster "Dateidownload".

Eine Beschreibung, wie man eine Arbeitsmappe in Microsoft Excel statt im Webbrowser öffnet, finden Sie hier:

Verwandte Fragen

Wie öffnet man eine Arbeitsmappe aus dem Web in Excel statt im Browserfenster?

To Top

 


[101] Kann man Zellinhalte abfragen, ohne die Mappe zu öffnen, Excel zu starten und ein Spezialtool zu verwenden?

Ja, das lässt sich sogar äusserst einfach machen. Man benötigt nicht einmal ein spezielles Programm. Der Windows Explorer reicht dazu aus. Der Trick besteht darin, die abzufragende Zelle als sogenannte benutzerdefinierte Dokument-Eigenschaft zu definieren. Bevor man dies jedoch vornehmen kann, muss eine einzige Voraussetzung erfüllt sein: Die Zelle, deren Inhalt Sie ausserhalb von Excel abfragen möchten, muss ein Name besitzen. Wenn Sie mehrere Zellen abfragen möchten, müssen Sie für jede dieser Zellen einen Namen festlegen.

Die in der nachfolgenden Vorgehensbeschreibung als exemplarisches Beispiel angegebene Zelle namens "DatumimportDatum" soll zeigen, wie man das Datum des letzten Datenimports, welches in dieser Zelle eingetragen ist, ohne Excel abfragen kann.

 

Vorgehen

Führen Sie folgende Arbeitsschritte durch:

» Schritt 1: Definieren Sie für die abzufragende Zelle einen Namen. Markieren Sie dazu in Microsoft Excel die Zelle und tragen im Namenfeld einen beliebigen Namen ein (z.B. "DatenimportDatum").

» Schritt 2: Führen Sie den Menübefehl "Eigenschaften" im Menü "Datei" aus. Dadurch wird das "Eigenschaften"-Dialogfenster geöffnet.

» Schritt 3: Geben Sie im Feld "Name" auf der Registerseite "Anpassen" einen frei wählbaren Namen für die neue Dokument-Eigenschaft ein (z.B. "Letzter Datenimport").

» Schritt 4: Aktivieren Sie das Kontrollkästchen "Verknüpfung zum Inhalt", woraufhin anstelle des Eingabefeldes "Wert" das Auswahlfeld "Quelle" angezeigt wird.

» Schritt 5: Wählen Sie im Auswahlfeld "Quelle" den im ersten Schritt definierten Namen aus.

» Schritt 6: Klicken Sie auf die Schaltfläche "Hinzufügen". Die Eigenschaft wird dadurch in die Eigenschaften-Liste im unteren Fensterbereich aufgenommen.

» Schritt 7: Schliessen Sie den Dialog anhand der OK-Schaltfläche.

 

So sieht das Dialogfenster aus, kurz bevor Sie auf die Schaltfläche "Hinzufügen" klicken (Schritt 6):

Eigenschaften-Dialogfenster in Microsoft Excel
Abbildung: Eigenschaften-Fenster in Microsoft Excel

Sie können nun jederzeit den in der benannten Zelle stehenden Wert abfragen, ohne dass die Arbeitsmappe geöffnet oder Excel gestartet werden muss. Das geht zum Beispiel problemlos im Windows Explorer. Sie müssen lediglich die Datei markieren und den Menü-Befehl "Eigenschaften" aufrufen (oder Alt+Eingabe).

Explorer-Dialogfenster "Datei-Eigenschaften"
Abbildung: Eigenschaften-Fenster im Windows Explorer

To Top

 


[102] Wie kann man eine einzelne Symbolleiste auf die Arbeitsstationen vieler Benutzer kopieren?

Es gibt eine interessante Möglichkeit, wie sich das äusserst einfach und effizient durchführen lässt. Spontan schlage ich gewöhnlich vor, ein kleines VBA-Programm zu schreiben, mit dem die Symbolleiste den Benutzern zur Verfügung gestellt wird. Doch es gibt eine viel einfachere Lösung.

Benutzerdefinierte Symbolleiste an eine Mappe anbinden und diese Mappe dann als Add-In speichern (xla-Datei). Als Speicherort den zusätzlichen Startordner von Microsoft Excel verwenden.

Weitere Informationen zum Thema Symbolleisten und über die xlb-Datei finden Sie hier:

Weitere Informationen

Welche Hintergrund-Informationen gibt es über die xlb-Datei von Excel?

Wie lautet der genaue Name der xlb-Datei und wo ist sie abgelegt?

Wo befinden sich die Exceldateien mit den benutzerspezifischen Einstellungen?

Gibt es eine Möglichkeit, mit VBA eine benutzerdefinierte Symbolleiste an eine Mappe anzubinden?

Funktionen und Features: Symbolleistendatei (xlb)

Phil's Office Secrets: Symbolleisten und die xlb-Datei von Microsoft Excel

To Top

 


[103] Welche Möglichkeiten gibt es zum Verkleinern einer Arbeitsmappendatei?

Es gibt eine Vielzahl verschiedener Möglichkeiten. Eine umfassende Liste mit mehr als 40 verschiedenen Massnahmen zum Verkleinern von Exceldateien finden Sie auf dieser Seite:

Weitere Informationen

XLimits: Dateigrösse von Arbeitsmappen reduzieren

To Top

 


[104] Wie kann man jederzeit den gesamten Dateipfad der aktiven Arbeitsmappe sehen?

Manche Excel-Benutzer würden gerne den gesamten Pfad einer Arbeitsmappe sehen, und nicht nur den Dateinamen, der bekanntlich in der Titelleiste des Mappenfensters angezeigt wird. Ich selbst habe lange Zeit zu diesem Zweck ein entsprechendes Add-In verwendet, das den vollständigen Dateipfad im Fenstertitel ausgibt. Ich hatte das Add-In selbst geschrieben. Es gibt jedoch im Internet fertige Add-Ins, die das gleiche machen. Auf der Excel-Website von Jörg Lorenz beispielsweise finden man ein solches. Hier der Link:
http://www.excel-vba.de/3_1_1.htm

Tipp: Web-Symbolleiste einblenden
Irgend wann mal fiel mir auf, dass es eine wesentlich einfachere Möglichkeit als die Verwendung eines Add-Ins gibt: Man muss in Microsoft Excel lediglich die Symbolleiste "Web" einblenden. Auf dieser Symbolleiste befindet sich ein Kombinationsfeld, das jederzeit den vollständigen Dateipfad der aktiven Arbeitsmappe anzeigt.

To Top

 


[105] Wie speichert man mehrere Zellbereiche als eine einzige HTML-Datei?

Standardmässig ist es nur bei Microsoft Excel 97 möglich, mehrere Zellbereiche von beliebigen Tabellenblättern als eine einzige HTML-Datei zu speichern. Dazu müssen lediglich der Internet-Assistent aufgerufen (Menübefehl Datei/Als HTML speichern) und die zu konvertierenden Bereiche angegeben werden.

Excel 97: Internet-Assistent mit mehreren zu konvertierenden Zellbereichen
Abbildung: Internet-Assistent mit mehreren Zellbereichen

Bei Microsoft Excel 2000, 2002 und 2003 steht der Internet-Assistent nicht mehr als separates Add-In zur Verfügung, so wie es bei Excel 97 der Fall ist, sondern stellt eine integrierte Funktion von Excel dar, die über den Speichern unter-Dialog aufgerufen wird, indem man den Dateityp 'HTML-Datei' verwendet. Leider besitzt der "neue" Internet-Assistent nicht mehr die Möglichkeit, mehrere Zellbereiche als eine einzige Datei zu speichern. Um diese Einschränkung zu umgehen, können Sie den Internet-Assistenten von Microsoft Excel 97 in der neueren Excelversion einsetzen. Wie das geht, erfahren Sie hier:

Weitere Informationen

Internet-Assistent: Internet-Assistent in einer neueren Excelversion einsetzen

 

Verwandte Fragen

Gibt es eine Möglichkeit, alle Diagramme einer Mappe als GIF-Dateien zu speichern?

To Top

 


[106] Gibt es eine Möglichkeit, alle Diagramme einer Mappe als GIF-Dateien zu speichern (ohne VBA!)?

Ja, die gibt es tatsächlich. Wer schon mal mit dem Internet-Assistent (Menübefehl Datei/Als HTML speichern) eine HTML-Datei erstellt hat, dem ist vielleicht aufgefallen, dass sämtliche Diagramme in der Arbeitsmappe automatisch als Bilddateien exportiert werden. Diese Funktionalität kann man nutzen, um die gewünschten GIF-Dateien zu erhalten.

Wenn Sie den Menübefehl Datei/Als HTML speichern ausführen, wird der Internet-Assistent geöffnet.

Internet-Assistent mit Liste der Diagramme (Excel 97)
Abbildung: Internet-Assistent mit Liste der Diagramme (Excel 97)

In der Liste unter "Zu konvertierende Bereiche und Diagramme" werden sämtliche in der Arbeitsmappe enthaltene Diagramme angezeigt. Für jedes dieser Diagramme generiert Excel eine GIF-Datei.

Weitere Informationen

Internet-Assistent: Internet-Assistent in einer neueren Excelversion einsetzen

 

Es existiert noch eine weitere Möglichkeit - ebenfalls ohne VBA. John Walkenbach hat ein Add-In "Chart Tools" entwickelt, welches ebenfalls eine Funktion zum Exportieren von Diagrammen als Grafikdateien anbietet.

JWalk "Chart Tools": Exportieren von Diagrammen als Grafikdatei
Abbildung: JWalk "Chart Tools": Exportieren von Diagrammen als Grafikdatei

Das Add-In kann auf dieser Internetseite heruntergeladen werden:
  J-Walk: Chart Tools
  http://j-walk.com/ss/excel/files/charttools.htm

 

Verwandte Fragen

Wie speichert man mehrere Zellbereiche als eine einzige HTML-Datei?

To Top

 


[107] Wie kann man einen Zellbereich aus einer geschlossenen Arbeitsmappe kopieren?

Einmal abgesehen davon, dass dies erstaunlicherweise überhaupt möglich ist, geht es sogar recht einfach. Sie kommen allerdings nicht an einem VBA-Programm vorbei.

Ron de Bruin, ein Microsoft Excel-MVP aus den Niederlanden, stellt auf seiner Internetseite ein paar äusserst interessante Beispiele vor. Hier der Link zu seiner Seite:
  Copy a range from closed workbooks
  http://www.rondebruin.nl/ado.htm

To Top

 


[108] Welche Möglichkeiten gibt es, mit Excel-VBA ein minimiertes Word-Anwendungsfenster wiederherzustellen?

Nehmen wird einmal an, Microsoft Word wird auf dem Rechner ausgeführt, aber das Anwendungsfenster von Word ist minimiert (zum Symbol verkleinert). Sie möchten nun in einem Excel-Makro das verkleinerte Word-Anwendungsfenster wiederherstellen. Die Frage ist, wie dies erreicht werden kann. Nun, es gibt mehrere Möglichkeiten, unter anderem die Verwendung von API-Funktionen (z.B. FindWindow). Die schnellste und einfachste Lösung stellt jedoch unbestitten die ActivateMicrosoftApp-Methode von Microsoft Excel dar.

Zum Wiederherstellen und Aktivieren des Anwendungsfensters von Microsoft Word genügt somit eine einzige Anweisung:

  Application.ActivateMicrosoftApp xlMicrosoftWord

To Top

 


[109] Warum findet GetObject eine laufende Excel-Instanz nicht?

Mit der GetObject-Methode wird ein Objekt aktiviert, das in einer Datei gespeichert wurde oder referenziert eine (COM-)Server-Anwendung, die bereits ausgeführt wird.

Wenn eine Anwendung mit der Shell-Funktion gestartet und unmittelbar danach versucht wird, anhand der GetObject-Funktion die neu gestartete Instanz zu übernehmen, kann der Laufzeitfehler 429 "Objekterstellung durch ActiveX-Komponente nicht möglich" auftreten.

Hinweis
- Dieses Verhalten tritt bei allen Office-Versionen (Office 97/2000/XP/2003) und bei Visual Basic 5.0/6.0 unter allen Windows-Versionen auf.
- Die hier vorgestellte Ursache des Laufzeitfehlers 429 "Objekterstellung durch ActiveX-Komponente nicht möglich" ist im Thema "Laufzeitfehler 429" der VBA-Referenz (Onlinehilfe) nicht beschrieben.

VBA-Code
'Deklaration der benötigten API-Funktionen
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
   (ByVal lpClassName as String, ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _

   (ByVal hWnd as Long, ByVal wMsg as Long, ByVal wParam as Long, ByVal lParam As Long) As Long

Sub DetectExcel()
  Const WM_USER = 1024
  Dim hWnd As Long

  'Wenn Excel ausgeführt wird, wird durch Ausführen dieses
  'API-Aufrufs die zugehörige Zugriffsnummer zurückgegeben.
  hWnd = FindWindow("XLMAIN", 0)
  If hWnd = 0 Then   
'0 bedeutet, dass Excel nicht ausgeführt wird.
    Exit Sub
  Else                 
    'Excel wird ausgeführt. Verwenden der API-Funktion SendMessage,
    'um Excel in der Tabelle ausgeführter Objekte einzutragen.
    SendMessage hWnd, WM_USER + 18, 0, 0
  End If
End Sub

 

Although the Office application is running, it might not be registered in the Running Object Table (ROT). A running instance of an Office application must be registered in the ROT before it can be attached to using GetObject.

When an Office application starts, it does not immediately register its running objects. This optimizes the application's startup process. Instead of registering at startup, an Office application registers its running objects in the ROT once it loses focus. Therefore, if you attempt to use GetObject to attach to a running instance of an Office application before the application has lost focus, you might receive one of the errors above.

RESOLUTION

Using code, you can change focus from the Office application to your own application (or to some other application) to allow it to register itself in the ROT. Additionally, if your code is launching the Office application's exe file, you might need to wait for the Office application to finish loading before attempting to attach to the running instance. A code sample is provided as a workaround in the "More Information" section below.

PROBLEM: GetObject or GetActiveObject Cannot Find Office Application
http://support.microsoft.com/?kbid=238610

To Top

 


[110] Wie kann man den Windows-Dialog "Öffnen mit" aufrufen und eine Datei übergeben?

Vielleicht haben Sie sich schon mal gefragt, wie ein Benutzer in einem VBA-Programm eine Datei auswählen und öffnen kann, auch wenn die Datei keine oder eine nicht registrierte Dateinamenerweiterung besitzt. Am schönsten wäre es, den Benutzer selbst bestimmen zu lassen, mit welchem Programm er die Datei öffnen möchte. Das tönt ziemlich kompliziert, ist es aber nicht. Zum Glück gibt es nämlich den Windows-Standarddialog "Öffnen mit", der alle registrierten Programme enthält.

Windows-Dialog "Öffnen mit"
Abbildung: Windows-Dialog "Öffnen mit"

Der "Öffnen mit"-Dialog wird gewöhnlich immer dann eingeblendet, wenn man im Windows Explorer eine Datei doppelklickt, die keine oder eine unbekannte, d.h. nicht in der Windows Registry vermerkte Dateinamenerweiterung besitzt.

HKEY_CLASSES_ROOT\Unknown\shell\openas\command

"%SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\shell32.dll,OpenAs_RunDLL %1"

 

Der "Öffnen mit"-Dialog lässt sich sehr einfach in einem VBA-Programm aufrufen.

VBA-Code

Sub OpenFileWithProgram()
  Shell "rundll32.exe shell32.dll,OpenAs_RunDLL C:\Daten\EineDatei.xyz"
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

Welche Dialogfenster von Windows und Excel kann man mit VBA-Programmcode öffnen?

To Top

 


[111] Kann man über eine Schaltfläche einen Excel Restart auslösen?

Manchmal wäre es wünschenswert, man könnte Microsoft Excel mit einem einfachen Klick auf eine Schaltfläche in einem Arbeitsblatt beenden und neu starten, wobei die aktuell geöffnete Arbeitsmappe automatisch wieder geladen werden soll, damit man an der Stelle weiterarbeiten kann, wo man sich vor dem Restart gerade befand.

 

Das Problem

Programm beendet sich
Ein laufendes Programm (in unserem Fall Microsoft Excel) kann sich ohne weiteres selbst beenden. Das wird ganz einfach durch ein kleines VBA-Programm erreicht, das die Quit-Methode aufruft:

  Application.Quit

Programm startet sich
Ein bereits laufendes Programm kann sich auch erneut starten, wobei aber immer eine neue Programminstanz gestartet wird. Dies erreicht man durch Shell in einer VBA-Prozedur, welche sich in dem Programm befindet:

  Shell "C:\Programme\Microsoft Office\Office\Excel.exe", vbNormalFocus

Diese in einem Excel VBA-Programm ausgeführte Codezeile startet eine weitere Instanz von Microsoft Excel. Anstelle von Shell kann man auch eine andere Anweisung verwenden, mit der ein Programm gestartet wird, beispielsweise die Run-Methode 

Programm beendet und startet sich
Es ist nicht möglich, dass sich ein Programm zuerst selbst beendet und gleich anschliessend wieder startet.

 

Die Lösung

Mit diesem VBA-Makro wird Microsof Excel neu gestartet, wobei folgende Aktionen durchgeführt werden:
1. Zuerst wird die persönliche Makro-Arbeitsmappe Personl.xls geschlossen und allfällige Änderungen automatisch gespeichert.
2. Die Arbeitsmappe, in der sich der ausgeführte VBA-Code befindet, wird gespeichert.
3. Der Dateizugriffsmodus dieser Arbeitsmappe wird auf "Schreibgeschützt" (read only) geändert.
4. Eine neue Excel-Instanz mit der Arbeitsmappe wird gestartet, wobei der Fensterstil der aktuellen Instanz berücksichtigt wird.
5. Die aktuelle Excel-Instanz wird beendet.

Private Sub cmdRestart_Click()
  Dim wkbBook As Workbook
  Dim strExcel As String
  strExcel = "D:\Programme\Microsoft Office\Office\Excel.exe"
  For Each wkbBook In Application.Workbooks
    If LCase$(wkbBook.Name) = "personl.xls" Then
      wkbBook.Close True     'Schritt 1
    End If
  Next
  ThisWorkbook.Save    
'Schritt 2
  ThisWorkbook.ChangeFileAccess xlReadOnly    
'Schritt 3
  If Application.WindowState = xlMaximized Then
    Shell Chr$(34) & strExcel & Chr$(34) & " " & Chr$(34) & ThisWorkbook.FullName & Chr$(34), vbMaximizedFocus     
'Schritt 4
  Else
    Shell Chr$(34) & strExcel & Chr$(34) & " " & Chr$(34) & ThisWorkbook.FullName & Chr$(34), vbNormalFocus     
'Schritt 4
  End If
  Application.Quit    
'Schritt 5
End Sub

 

Einschränkungen der Lösung

Die oben präsentierte VBA-Lösung besitzt zwei kleine Einschränkungen:

1. Alle Anpassungen, die der Benutzer während der aktuellen Excel-Sitzung an Symbolleisten, Menüs und Symbolleisten-Schaltflächen vorgenommen hat, können verloren gehen beziehungsweise werden nicht von der neuen Excel-Instanz verwendet.

2. Die Makrovirus-Warnung kann erscheinen (abhängig von der eingestellten Sicherheitsstufe):

Makroviren-Warnung beim Öffnen einer Datei
Abbildung: Makroviren-Warnmeldung (Excel 97)

 

Weitere Informationen zum Thema "Starten von Programmen" finden Sie hier:

Weitere Informationen

VBA-Spezialthema: Starten von Programmen

To Top

 


[112] Wie kann man über eine Symbolleisten-Schaltfläche ein Programm starten, ohne ein VBA-Makro zu benutzen?

Nehmen wir einmal an, ein bestimmtes Windows-Programm soll direkt aus Microsoft Excel heraus gestartet werden können. Das ist nicht sonderlich schwierig, weil man dazu lediglich ein einzeiliges VBA-Makro benötigt:

Public Sub ExecuteProgram()
  Shell "Notepad.exe", vbNormalFocus
End Sub

Das Makro speichert man vorzugsweise in der Makroarbeitsmappe Personl.xls, damit es immer verfügbar ist (d.h. auch wenn keine Arbeitsmappe geöffnet ist).

Soll das Programm durch Klick auf eine Symbolleisten-Schaltfläche gestartet werden, braucht man nur eine neue Schaltfläche hinzuzufügen. Dies geschieht über den Anpassen-Dialog und den Befehl "Schaltfläche anpassen":

Anpassen-Dialog: Schaltfläche anpassen
Abbildung: Anpassen-Dialog: Befehl "Schaltfläche anpassen"

Anschliessend braucht man über den Menübefehl Makro zuweisen der Schaltfläche festzulegen, welches Makro ausgeführt werden soll - in unserem Fall wäre das "Personl.xls!ExecuteProgram". Die Schaltfläche sieht dann beispielsweise so aus:

Symbolleisten-Schaltfläche

Das Ganze ist somit sehr einfach. Die Frage ist nun aber, wie man das gleiche erreicht, ohne ein VBA-Makro zu benutzen. Es soll also wiederum eine Symbolleisten-Schaltfläche angelegt werden, über die ein Programm gestartet werden kann, wobei jedoch kein Makro der Schaltfläche zugewiesen werden muss (da wie gesagt kein Makro verwendet werden soll).

In diesem Fall muss man einen Trick anwenden. Es gibt zwei Symbolleisten-Befehle, die fest mit einem Programm verknüpft sind:
- Benutzerdefiniert (Rechner) ist verknüpft mit der Programmdatei Calc.exe
- Benutzerdefiniert (Solitär) ist verknüpft mit der Programmdatei Sol.exe

Die beiden Befehle befinden sich in der Kategorie "Extras" auf der Registerseite "Befehle":

Anpassen-Dialog: Befehl "Benutzerdefiniert"
Abbildung: Anpassen-Dialog: Befehl "Benutzerdefiniert" (Rechner)

To Top

 


[113] Gibt es eine Möglichkeit, die Ausführung eines Makros im Makro-Dialog zu sperren?

Ja, diese Möglichkeit gibt es tatsächlich. Bekannt ist die Variante, wie man die Anzeige ein bestimmtes Makros im Makro-Dialog unterdrücken kann. Wie man jedoch die Ausführung eines Makros vollständig sperren kann, ist den wenigsten Benutzern bekannt. Hier erfahren Sie, wie es geht.

 

Lösungen für "Makro verbergen"

Das blosse Verbergen des Makronamens im Makro-Dialog ist im Prinzip einfach, wobei es zwei Lösungsmöglichkeiten gibt:

Lösung 1:
Wenn man die Prozedur mit Private deklariert, erscheint sie nicht in der Liste der Makros. Der Nachteil ist allerdings, dass sie dann aus einem anderen Codemodul nicht mehr aufrufbar ist, weil sie nur noch auf Modulebene sichtbar ist.

Lösung 2:
Durch Hinzufügen von Option Private Module im Deklarationsbereich des Moduls erscheint der Prozedurname ebenfalls nicht in der Liste. Hier ist der Nachteil, dass sämtliche Prozeduren des codeenthaltenden Moduls nicht mehr aufgelistet werden. Das modulübergreifende Aufrufen der Prozedur ist dagegen nach wie vor möglich.

Eine anhand von Private oder Option Private Module versteckte Prozedur erscheint wie gesagt nicht im Makro-Dialogfenster. Nach Eingabe des Prozedurnamens ist die Schaltfläche "Ausführen" jedoch nicht mehr gesperrt. Das Ausführen der Prozedur ist somit möglich.

Makro-Dialog: Prozedurname direkt eingeben
Abbildung: Verborgene Prozedur "Hidden" im Makro-Dialog

Wie man sieht, verhindern die beiden oben vorgestellten Lösungen lediglich die Anzeige der Prozedur in der Liste, nicht aber ihre Ausführbarkeit. Möchte man die Ausführung ganz sperren, muss man einen Trick anwenden, der im nächsten Abschnitt beschrieben ist.

 

Lösung für "Makroausführung verhindern"

Wenn man erreicht, dass die "Ausführen"-Schaltfläche gesperrt ist, so hat man auch erreicht, dass das Makro nicht aufgerufen werden kann. Es gibt 6 Sonderzeichen, die - als einziges oder als erstes Zeichen im Prozedurnamen verwendet - die Prozedurausführung verunmöglichen. Es handelt sich um die in der nachstehenden Tabelle aufgeführten Zeichen.

Zeichen Name Name englisch Name in Microsoft Word Ort auf der Tastatur
§ Paragraph Section Paragraphenzeichen Links von Taste 1
° Grad Degree Symbol Geschütztes Leerzeichen Links von Taste 1 (mit Umschalt)
¦ Vertikale Striche (?) (?) - Alt Gr+1
¬ (?) (?) Bedingter Trennstrich Alt Gr+6
¢ Cent Cent Sign Cent Alt Gr+8
£ Pfund Pound Sign Pfund Links von Eingabetaste (mit Umschalt)

Wenn man also zum Beispiel das '¦'-Zeichen als Makroname verwendet oder der Makroname mit dem '¦'-Zeichen beginnt, kann das Makro nicht über den Makro-Dialog ausgeführt werden.

Die nächste Abbildung zeigt den Makro-Dialog von Microsoft Excel. Wie man gut erkennen kann, ist die "Ausführen"-Schaltfläche trotz korrekt geschriebenem Makroname nicht verfügbar:

Makro-Dialog: Gesperrte Prozedur
Abbildung: Gesperrte Makro-Prozedur im Makro-Dialog (Microsoft Excel)

Der Trick mit dem Sonderzeichen funktioniert allerdings nur in Microsoft Excel. Sowohl in Microsoft Word als auch in Microsoft PowerPoint ist die "Ausführen"-Schaltfläche trotz Sonderzeichen verfügbar. Die beiden nächsten Abbildungen zeigen den Makro-Dialog von Word und PowerPoint:

Prozeduren im Makros-Dialog von Microsoft Word
Abbildung: Prozeduren im Makros-Dialog von Microsoft Word

Prozeduren im Makro-Dialog von Microsoft PowerPoint
Abbildung: Prozeduren im Makro-Dialog von Microsoft PowerPoint

 

VBA-Programmcode

Wie oben beschrieben, führt, zum Beispiel, die Verwendung des Paragraph-Zeichens als Makroname dazu, dass das Makro nicht über den Makro-Dialog ausgeführt werden kann. Auch für erfahrene Programmierer sieht der Code ungewohnt aus, da einerseits ein Makroname bestehend aus nur einem Zeichen unüblich ist und andererseits dieses Zeichen erst noch ein Sonderzeichen ist.

Hier der Programmcode der Makro-Prozedur namens "§":

Sub §()
  MsgBox "Hallo!"
End Sub

Die Prozedur "§" lässt sich problemlos aus anderen Prozeduren aufrufen:

Sub TestCall()
  §    'Prozedur "§" aufrufen
End Sub

Hier die Beispiele mit den anderen 5 Sonderzeichen:

Public Sub ¦()
  MsgBox "Hallo ¦"
End Sub
Public Sub °()
  MsgBox "Hallo °"
End Sub
Public Sub ¬()
  MsgBox "Hallo ¬"
End Sub
Public Sub ¢()
  MsgBox "Hallo ¢"
End Sub
Public Sub £()
  MsgBox "Hallo £"
End Sub

Man kann ein Sonderzeichen auch mehrmals schreiben:

Public Sub §§§()
  MsgBox "Hallo §§§"
End Sub

Das Sperren der Ausführung funktioniert auch, wenn nach dem Sonderzeichen weitere Zeichen folgen. Massgebend ist lediglich, dass das erste Zeichen des Makronamens eines der sechs besagten Sonderzeichen ist:

Public Sub §MeineProzedur()
  MsgBox "Hallo!"
End Sub

To Top

 


[114] Wer weiss das Kennwort einer kennwortgeschützten Arbeitsmappe?

Wenn Sie eine kennwortgeschützte Arbeitsmappendatei bearbeiten möchten, müssen Sie das benötigte Kennwort eingeben, damit die Arbeitsmappe in Microsoft Excel geöffnet wird.

Dialogfenster "Kennwort eingeben"
Abbildung: Dialogfenster "Kennwort eingeben" (Lese-/Schreibkennwort)

Es kann allerdings sein, dass Sie nicht wissen, wie das korrekte Kennwort lautet. Insbesondere aus diesen beiden Gründen:
1. Die Arbeitsmappe besass ursprünglich kein Kennwort, wurde aber von einer anderen Person bearbeitet, die der Mappe ein Dateikennwort zuteilte.
2. Die Arbeitsmappe war schon immer kennwortgeschützt, aber irgend jemand hat das Kennwort geändert.

Man könnte nun versuchen, heraus zu finden, wer das Kennwort vergeben bzw. geändert hat, und diese Person dann nach dem Kennwort fragt. Einfacher ist es jedoch, irgend eine Person zu finden, die das Kennwort ebenfalls kennt. Dazu muss man lediglich nachsehen, wer die Arbeitsmappe zuletzt gespeichert hat.

Datei-Eigenschaften mit Information "Zuletzt gespeichert von"
Abbildung: Eigenschaften-Dialog mit Registerseite "Statistik"

To Top

 


[115] Wie stellt man im Makro aufzeichnen-Dialog standardmässig "Persönliche Makro-Arbeitsmappe" ein?

Beim Öffnen des Dialoges "Neues Makro aufzeichnen" (Menü Extras/Makro/Aufzeichnen) wird im Auswahlfeld "Makro speichern in" per Default der Eintrag "Diese Arbeitsmappe" vorgegeben. Soll das neue Makro in die persönliche Makro-Arbeitsmappe gespeichert werden, muss zuerst der Eintrag "Persönliche Makro-Arbeitsmappe" ausgewählt werden.

Makro aufzeichnen-Dialog
Abbildung: Neues Makro aufzeichnen-Dialogfenster

Wenn man möchte, dass bereits beim Öffnen des Dialoges "Neues Makro aufzeichnen" standardmässig der Eintrag "Persönliche Makro-Arbeitsmappe" ausgewählt ist, muss man den Eintrag "Options3" von Microsoft Excel in der Windows Registry ändern.

 

Registry-Eintrag "Options3" ändern

Gehen Sie wie folgt vor:
1. Starten Sie den Windows Registry-Editor (regedit.exe).
2. Öffnen Sie den Zweig "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel".
3. Selektieren und bearbeiten Sie den Eintrag "Options3" (Menü Bearbeiten/Ändern).

Wert von "Options3" bearbeiten
Abbildung: Wert von "Options3" bearbeiten

4. Stellen Sie die Basis auf "Dezimal", damit der Wert als Dezimalzahl angezeigt wird.
5. Zählen Sie dem angezeigten Wert den Wert 32 hinzu und geben das Ergebnis als neuen Wert ein.
6. Schliessen Sie das Dialogfenster mit OK.

 

Zusammenfassung

Zweig: HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel
Eintrag: Options3
Wert: 32 (speichert Makros in der persönlichen Makro-Arbeitsmappe)

To Top

 


[116] Kann die Liste der zuletzt geöffneten Dateien ausgeblendet werden, ohne sie zu löschen?

Bekanntlich enthält das Datei-Menü von Microsoft Excel eine Liste der zuletzt verwendeten Dateien. Auf der Registerseite "Allgemein" des Optionen-Dialoges kann man einstellen, wie viele Einträge die Liste besitzen soll (zwischen 1 und 9) bzw. ob die Liste überhaupt geführt werden soll.

Optionen-Dialog von Microsoft Excel
Abbildung: Optionen-Dialog von Microsoft Excel

Häufig verwendet man eine Liste mit 9 Einträgen. Das Datei-Menü sieht dann so aus:

Liste der zuletzt verwendeten Dateien
Abbildung: Liste der zuletzt verwendeten Dateien im Datei-Menü

Wenn man die Option "Liste zuletzt geöffneter Dateien" deaktiviert, so wird die Liste gelöscht, was zur Folge hat, dass im Datei-Menü keine zuletzt verwendeten Dateien mehr erscheinen. Das Menü sieht dann so aus:

Datei-Menü ohne Liste der zuletzt verwendeten Dateien
Abbildung: Datei-Menü ohne Liste der zuletzt verwendeten Dateien

Wenn man möchte, dass die Liste lediglich ausgeblendet ist (d.h. nicht gelöscht wird), muss man den Eintrag "Options5" von Microsoft Excel in der Windows Registry ändern. Mit dem angepassten Registry-Eintrag sieht das Datei-Menü so aus:

Ausgeblendete Liste der zuletzt verwendeten Dateien
Abbildung: Ausgeblendete Liste der zuletzt verwendeten Dateien

 

Registry-Eintrag "Options5" ändern

Gehen Sie wie folgt vor:
1. Starten Sie den Windows Registry-Editor (regedit.exe).
2. Öffnen Sie den Zweig "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel".
3. Selektieren und bearbeiten Sie den Eintrag "Options5" (Menü Bearbeiten/Ändern).
4. Stellen Sie die Basis auf "Dezimal", damit der Wert als Dezimalzahl angezeigt wird.
5. Zählen Sie dem angezeigten Wert den Wert 64 hinzu und geben das Ergebnis als neuen Wert ein.
6. Schliessen Sie das Dialogfenster mit OK.

 

Zusammenfassung

Zweig: HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel
Eintrag: Options5
Wert: 64 (blendet die Liste der zuletzt verwendeten Dateien aus)

To Top

 


[117] Wie werden Gitternetzlinien für neue Mappen unterdrückt, ohne eine Vorlagemappe zu verwenden?

Auf der Registerseite "Ansicht" des Optionen-Dialoges wird unter "Fensteroptionen" festgelegt, ob das aktive Arbeitsblatt Gitternetzlinien verwendet oder nicht. Standardmässig ist die Option "Gitternetzlinien" eingeschaltet. Die Blätter einer neuen Arbeitsmappe besitzen daher immer Gitternetzlinien.

Optionen-Dialog mit Registerseite "Ansicht"
Abbildung: Optionen-Dialog von Microsoft Excel

Wenn die Gitternetzlinien bei neu angelegten Arbeitsmappe grundsätzlich ausgeblendet sein sollen, muss man einen Eintrag von Microsoft Excel in der Windows Registry ändern.

Wohlgemerkt gibt es auch einen Weg ohne die Registry anzupassen: Sie können die Standard-Vorlagemappe Mappe.xlt (sie befindet sich im Startordner XlStart von Excel) öffnen und dann im Optionen-Dialog die Einstellung "Gitternetzlinien" ausschalten. Nach Speichern von Mappe.xlt besitzen neue Arbeitsmappen keine Gitternetzlinien mehr. Wenn der Ordner XlStart keine Datei namens Mappe.xlt enthält, muss die Datei neu erstellt werden. Diese Lösung ...

 

Registry-Eintrag "Options3" ändern

Gehen Sie wie folgt vor:
1. Starten Sie den Windows Registry-Editor (regedit.exe).
2. Öffnen Sie den Zweig "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel".
3. Selektieren und bearbeiten Sie den Eintrag "Options3" (Menü Bearbeiten/Ändern).
4. Stellen Sie die Basis auf "Dezimal", damit der Wert als Dezimalzahl angezeigt wird.
5. Zählen Sie dem angezeigten Wert den Wert 16384 hinzu und geben das Ergebnis als neuen Wert ein.
6. Schliessen Sie das Dialogfenster mit OK.

 

Zusammenfassung

Zweig: HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel
Eintrag: Options3
Wert: 16384 (blendet Gitternetzlinien aus)

To Top

 


[118] Gibt es Objektbibliotheken oder DLLs mit Funktionen, die besser als diejenige von VBA sind?

Ja, es existieren ein paar Bibliotheken, die zum Teil äusserst nützliche Funktionalitäten für Datei-, Ordner-, Laufwerk- und Programm-Operationen enthalten.

Objektbibliotheken: Objekte mit Methoden und Eigenschaften

DLLs: Funktionen und Prozeduren

 

Auf praktisch allen Windows-Rechnern bereits vorhanden.

 

Objektbibliotheken:
- scrrun.dll
- wshom.ocx
- dsofile.dll

DLLs:
- imagehlp.dll
- kernel32.dll
- shlwapi.dll
- mpr.dll
- shell32.dll
- advapi32.dll
- user32.dll
- winmm.dll

To Top

 


[119] Wie kann ich Titel und Beschreibung eines installierten Add-Ins herausfinden?

Der Add-In-Manager von Microsoft Excel zeigt eine Liste der verfügbaren Add-Ins, wobei die installierten - sprich die geladenen - Add-Ins mit einem Häkchen markiert sind. Aufgeführt ist immer der (Dokument-)Titel eines Add-Ins. Zu dem aktuell markierten Add-In wird im unteren Teil des Fensters die Add-In-Beschreibung angezeigt.

Add-In-Manager
Abbildung: Add-In-Manager

 

Der Titel wird im Eigenschaften-Dialog festgelegt (Feld Titel).

Die Beschreibung wird im Eigenschaften-Dialog festgelegt (Feld Kommentar).

...

 

Application.AddIns(1).Name

Application.AddIns(1).Path

Application.AddIns(1).FullName

 

 

Application.AddIns(1).Title

Application.AddIns(1).Comments

 

Wenn das Add-In keinen Kommentar besitzt:

Laufzeitfehler 1004
Abbildung: Laufzeitfehler 1004

 

To Top

 


[120] Welche Dialogfenster von Windows und Excel kann man mit VBA-Programmcode öffnen?

Windows und Microsoft Excel besitzen eine Vielzahl Fenster, die sich auch anhand von VBA/VB-Programmcode aufrufen lassen.

Bei Microsoft Excel kann man beispielsweise den "Datei öffnen"-Dialog anzeigen, damit der Benutzer eine Datei auswählen kann. Aber auch weniger bekannte Dialogfenster wie "Datei-Eigenschaften", "Arbeitsblatt einfügen", "Zu Favoriten hinzufügen", "Druckereinrichtung" etc. können problemlos mit VBA geöffnet werden.

Bei Windows sind die Standard-Dialogfenster wie "Ordner auswählen", "Diskette kopieren" und "Diskette formatieren" interessant, da man somit auch diese Dialoge in eigene Anwendungen integrieren kann.

Eine Liste mit über 50 Codebeispielen, wie man die Dialoge von Windows und Microsoft Excel öffnen kann, finden Sie unter Liste der VBA/VB-Codebeispiele zum Themengebiet "Dialog".

Hier ein paar direkte Links zu einzelnen Codebeispielen:
» Datei öffnen-Dialog anzeigen
» Datei-Eigenschaften-Dialog anzeigen
» Verzeichnis über Ordnerauswahl-Dialog auswählen
» Diskette kopieren anhand des Windows-Dialoges "Diskette kopieren"
» Diskette formatieren anhand des Windows-Dialoges "Diskette formatieren"

To Top

Haben Sie Fragen, Anregungen oder Hinweise?
Mail senden an philipp_von_wartburg@yahoo.de

Zuletzt aktualisiert am 5.03.2006 / 18:00 Uhr
© 2002-2006 by Philipp von Wartburg, CH-8916 Jonen
Alle Rechte vorbehalten