| Kompatibilität von Excel für Windows und Excel für Macintosh | Home |
![]()
| Inhalt
dieses Dokumentes Wenn man eine Arbeitsmappe erstellt, die einem beliebigen Benutzerkreis zur Verfügung gestellt werden soll, so muss man daran denken, dass Microsoft Excel sowohl für Windows als auch für Macintosh existiert. Eine mit Excel für Windows erstellte Mappe muss daher auch in Excel für Macintosh bearbeitbar sein und umgekehrt. Zwischen Excel für Windows und Excel für Macintosh gibt es eine ganze Reihe wichtiger Unterschiede, die man beachten muss. Insbesondere beim Schreiben von VBA-Programmcode muss man viele Spezialitäten und Inkompatibilitäten berücksichtigen, die unter anderem in VBA, im Excel-Objektmodell und im Office-Objektmodell enthalten sind. Diese Dokumentation stellt sämtliche derzeit bekannten Unterschiede, Inkompatibilitäten, Spezialfälle und potenzielle Probleme von plattformunabhängigen Excel-Arbeitsmappen und VBA-Programmen vor. Sie erhalten hier ausführliche Beschreibungen, Anleitungen, Empfehlungen, Tipps und Tricks sowie VBA-Codebeispiele. Viele Informationen beziehen ganz allgemein auf VBA und gelten somit auch für VBA-Programme, die mit einem anderen Microsoft Office-Programm als Microsoft Excel entwickelt wurden. Diese Dokumentation ist auch als PDF-Dokument erhältlich. Mehr dazu siehe hier. Version: Dokument-Version 4.5 |
Zielpublikum Microsoft Office-Anwender und -Programmierer, insbesondere von Microsoft Excel, die Arbeitsmappen, Add-Ins, Makros und VBA-Programme sowohl für Excel für Windows als auch für Excel für Macintosh entwickeln. |
Einleitung
Inhalt dieser
Dokumentation
Zweck dieser Dokumentation
Zielpublikum
Quellenverzeichnis
Weitere
nützliche Informationsquellen
Allgemeines über
Unterschiede und Inkompatibilitäten
Warum ist
Kompatibilität wichtig?
Gründe
für Unterschiede und Inkompatibilitäten
Wo gibt es Unterschiede?
Auswirkungen von
Inkompatibilitäten
Zusatzprogramme und
Komponenten von Microsoft Office
Grundsätzliche Unterschiede
Unterschiede
zwischen Windows und Macintosh
Unterschiede
zwischen Excel für Windows und Excel für Macintosh
Unterschiede
zwischen VBA für Windows und VBA für Macintosh
Sonstige Unterschiede
Unterschiede bei Dateinamen, Dateipfaden und
Verzeichnispfaden
Allgemeines
Pfade in der
Anwendung Microsoft Excel
Pfade in der Arbeitsmappe
Pfade im VBA-Programmcode
Pfade an anderen Stellen
Unterschiede bei Dateitypen und
Dateiformaten
Unterschiede bei
Excel-Tabellenfunktionen
Unterschiede bei
Formular-Steuerelementen
Unterschiede in der Programmiersprache VBA
Allgemeines
Übersicht der
Unterschiede
Unterschiede im Objektmodell von
Microsoft Excel
Allgemeines
Übersicht
der Unterschiede
Unterschiede im Objektmodell von
Microsoft Office
Allgemeines
Übersicht
der Unterschiede
Unterschiede im Objektmodell des
VBA-Editors
Allgemeines
Übersicht der Unterschiede
Unterschiede im
Objektmodell von Microsoft Forms
Einführung
Unterschiede bei Benutzerformularen
Unterschiede bei Steuerelementen
Unterschiede bei integrierten Konstanten
Unterschiede bei VBA-Fehlermeldungen
Wissenswertes über die
Kompatibilität von VBA-Projekten
Einführung
Projekteigenschaften
Verweise
Zusätzliche
Steuerelemente
Empfehlungen
Änderungen und Erweiterungen in VBA 6.0
Einführung
Auswirkung bei
Verwendung eines nicht verfügbaren Sprachelementes
Neue Funktionen
Geänderte Funktionen
Weitere Änderungen
Abfragen der Ausführungsumgebung
Betriebssystem
herausfinden
Excelversion herausfinden
VBA-Editor-Version
herausfinden
VBA-Version herausfinden
Windowsversion
herausfinden
Version eines
anderen Microsoft Office-Programmes herausfinden
Bedingte Kompilierung
Einführung
Compiler-Konstanten und Konstanten für die bedingte
Kompilierung
Einführung
Compiler-Konstanten
Konstanten
für die bedingte Kompilierung
Compiler-Konstanten von Microsoft Office
Compiler-Konstanten
von Microsoft Office 97
Compiler-Konstanten
von Microsoft Office 2000, 2002/XP und 2003
Compiler-Konstanten von
Microsoft Office für Macintosh
Arbeitsmappen und
VBA-Programme plattformunabhängig machen
Einführung
Vorbereitung
Durchzuführende Arbeiten
Testen
Tipps für komplexe
Arbeitsmappen
VBA-Codebeispiele für Programmierer
Tipps und Empfehlungen für
Programmierer
Hintergrundwissen
Das Microsoft
Excel-Dateiformat
Alles über
externe Verknüpfungen
Die
wichtigsten Limitationen in Microsoft Excel
Links
zu weiteren Informationsquellen
Dokumentationen und
Anleitungen
Bugs und Probleme
Verschiedene Themen
Newsgroups
Anhang
Begriffserklärungen
Typografische
Dokument-Konventionen
Stichwortverzeichnis
Offene Punkte und Pendenzen
Offene Punkte
Pendenzen
Auf dieser Seite werde ich Ihnen die Unterschiede zwischen Excel für Windows und Excel für Macintosh vorstellen. Es geht hier weniger um die funktionalen Unterschiede, also beispielsweise ob ein bestimmtes Feature in beiden Excelversionen vorhanden ist. Vielmehr werden diejenigen Unterschiede beschrieben, die zur Inkompatibilität von Arbeitsmappen und VBA-Code führen. Mit anderen Worten: Hier erfahren Sie, was man alles beachten muss, wenn man Arbeitsmappen oder VBA-Programme entwickeln will, die sowohl unter Windows als auch auf Macintosh einwandfrei funktionieren sollen. Das ist nämlich gar nicht so einfach, weil es erstens ziemlich viele Inkompatibilitätsprobleme gibt, und zweitens ganz bestimmte Probleme bereits bei kleinen Arbeitsmappen ohne jeglichen VBA-Code auftreten können.
Des öfteren stellen Excel-Anwender oder Excel-Programmierer in einschlägigen Internet-Newsgroups und -Foren die Frage, ob und inwiefern VBA-Programme, die mit Microsoft Excel für Windows erstellt wurden, mit Microsoft Excel für Macintosh ausgeführt werden können (oder umgekehrt). Diese Frage ist absolut berechtigt, weil es nämlich zwischen VBA von Excel für Windows und VBA von Excel für Macintosh eine ganze Reihe wichtiger Unterschiede gibt. Die meisten davon sind bedingt durch das jeweilige Betriebssystem, insbesondere durch dessen Dateisystem.
Ich sollte noch erwähnen, dass ich selber keinen Mac-Computer und folglich auch kein Microsoft Excel für Macintosh besitze. Dennoch ist mir die Kompatibilitätsproblematik nicht ganz unbekannt, da ich in Unternehmen gearbeitet habe, die gemischte Systemumgebungen einsetzen, also Windows- und Macintosh-Rechner. Gerade in grösseren Unternehmen kann es vorkommen, dass beispielsweise die PR-/Marketing-Abteilung mit Macintosh-Computern arbeitet, der Rest der Firma aber Windows-Arbeitsstationen benutzt.
PDF-Dokument
Diese Dokumentation steht auch als Acrobat PDF-Dokument zur Verfügung. Sie können
es auf der Downloadseite kostenlos herunterladen.
Downloadseite |
Diese Dokumentation ist in acht Teile mit jeweils mehreren
Kapiteln gegliedert:
Teil 1: Vorwort, Einleitung, Allgemeines und generelle Empfehlungen
Teil 2: Keine Unterschiede
Teil 3: Unterschiede, Inkompatibilitäten und potenzielle Probleme
Teil 4: Arbeitsanleitungen, Checklisten
Teil 5: VBA-Codebeispiele, Tipps, Tricks und Empfehlungen
Teil 6: Spezialthemen und Hintergrundwissen
Teil 7: Tools, Hilfsprogramme und Links
Teil 8: Anhänge
26 VBA-Codebeispiele:
VBA-Codebeispiele für
Programmierer
10 Tipps und Empfehlungen:
Tipps und Empfehlungen für
Programmierer
50 Links zu Webseiten mit weiteren Informationen:
Links zu weiteren Informationsquellen
- Unterschiede aufzeigen
- Empfehlungen, Tipps und Lösungen anbieten
- VBA-Codebeispiele
- Arbeitsmappen und VBA-Code für beide Plattformen entwickeln, ohne beide Plattformen zu besitzen
- Einheitlicher Programmcode für beide Plattformen (Single Source Code)
- Microsoft Office/Excel-Anwender und -Entwickler
- Programmierer von Makros, Add-Ins, VBA-Anwendungen
- Support-Mitarbeiter
Die auf dieser Seite vorgestellten Informationen wurden
grösstenteils aus diesen Dokumentationen entnommen:
» Visual Basic-Referenz (VBA 5)
» Visual Basic-Referenz (VBA 6)
» VBA Editor-Referenz (Excel 97)
» VBA Editor-Referenz (Excel 2000)
» Visual Basic Add-In-Modell-Referenz (Office 97)
» Visual Basic Add-In-Modell-Referenz (Office 2000)
» Microsoft Office Visual Basic-Referenz (Office 97)
» Microsoft Forms-Referenz (Office 97)
» Microsoft Forms-Referenz (Office 2000)
» Microsoft Excel Visual Basic-Referenz (Excel 2000)
» Microsoft Excel Visual Basic-Referenz (Excel 2003)
» Microsoft Office Drawing File Format-/Escher Layer-Dokumentation
» Microsoft Excel File Format-Dokumentation von OpenOffice.org (Version 1.37)
Die übrigen in diesem Dokument aufgeführten Informationen stammen aus zuverlässigen Quellen im Internet, unter anderem aus Newsgroups, aus Foren und von 'Excel für Macintosh'-Websites, und zudem auch direkt von Excel für Macintosh-Experten (meist MVPs). Die auf diese Weise zusammengetragenen Informationen wurden von mir geprüft, konsolidiert, überarbeitet und teilweise mit zusätzlichen Beschreibungen ergänzt.
Bitte beachten Sie, dass die von Microsoft verfassten Online-Hilfen und Referenzen von VBA teilweise ziemlich schwerwiegende Fehler enthalten. Auf diese Fehler wird in diesem Dokument eingegangen und die korrekten Informationen vorgestellt.
Weitere nützliche Informationsquellen
xlam - Excel and more!
xlam - Excel and more!
www.xlam.ch
The SOSCQ Page
The SOSCQ Page
The SOSCQ Page: VBA-Befehle und
-Funktionen
The SOSCQ Page:
Excel-Objektmodell
www.xlam.ch/soscq/index.htm
The SOSCQ Page - VBA/VB-Codebeispiele
The SOSCQ Page: Codebeispiele für
VBA und VB
www.xlam.ch/vbacode/index.htm
Phil's Office Secrets
Phil's Office Secrets
Phil's Office Secrets: Namenskonventionen,
Richtlinien und Empfehlungen
Phil's Office Secrets: Neuerungen
und Änderungen in Microsoft Office-Objektmodellen
Phil's Office Secrets: Links zu Updates und
Service Packs für Microsoft Office und Excel
www.xlam.ch/pos/index.htm
XLimits
XLimits
XLimits: Excel-Sektion
XLimits: VBA/VB-Sektion
XLimits:
Excel-Internas-Sektion
XLimits: Limitationen in Microsoft
Excel
XLimits: Limitationen in Excel-VBA
und Excel-Objektmodell
www.xlam.ch/xlimits/index.htm
Siehe auch unter Links zu weiteren Informationsquellen und Die wichtigsten Limitationen in Microsoft Excel.
Allgemeines über Unterschiede und Inkompatibilitäten
Warum ist Kompatibilität wichtig?
- Arbeitsmappe für Benutzer mit Microsoft Excel für Windows und Microsoft Excel für Macintosh bearbeitbar machen.
- Nur eine Arbeitsmappe (bzw. Add-In) für beide Plattformen (Support, Bug-Fixes, Weiterentwicklung etc.).
- Grösserer Markt/mehr potenzielle Kunden.
- Vermeiden von potenziellen Problemen.
Gründe für Unterschiede und Inkompatibilitäten
1. Oft entsteht ein Problem wegen einer Unachtsamkeit, beispielsweise wenn ein vom Benutzer eingegebener Dateiname auf ungültige Zeichen überprüft wird.
2. Limitationen in Microsoft Excel
3. Bugs in Microsoft Excel
4. Technische Rahmenbedingungen
- Betriebssystem (Dateisystem)
- Office
- Excel (Oberfläche, Features)
- Arbeitsmappen
- VBA
- Office-Objektmodell
- Excel-Objektmodell
- MSForms-Objektmodell (Benutzerformulare, Steuerelemente)
- VBA-Editor-Objektmodell
- Laufzeitfehler
- VBA-Projekt
- Tabellenfunktionen
- Zusatzprogramme
- Dateiformate
Windows vs. Macintosh
Excel für Windows vs. Excel für Macintosh
VBA für Windows vs. VBA für Macintosh
VBA von Excel für Windows vs. VBA von Excel für Macintosh
Auswirkungen von Inkompatibilitäten
Excel für Windows und Excel für Macintosh enthalten das gleiche VBA. Da es keine Implementierungsunterschiede gibt, existiert auch kein Kompatibilitätsproblem zwischen VBA-Code, der mit Excel für Windows geschrieben wurde, und VBA-Code, der mit Excel für Macintosh geschrieben wurde. VBA-Code der einen Plattform lässt sich auf der anderen Plattform kompilieren und ausführen.
Es existieren - etwas allgemein betrachtet - nur fünf
Unterschiede, die zur Laufzeit (d.h. während der Codeausführung) zu einem Fehler
führen:
- Environ-Funktion (führt auf Macintosh zu einem Laufzeitfehler)
- SendKeys-Funktion (führt auf Macintosh zu einem Laufzeitfehler ?)
- MacID-Funktion (führt unter Windows zu einem Laufzeitfehler)
- MacScript-Funktion (führt unter Windows zu einem Laufzeitfehler)
- CDecl-Schlüsselwort (führt unter Windows zu einem Laufzeitfehler)
Alle anderen Unterschiede werden von VBA bzw. Excel erkannt und behandelt, oder ignoriert oder sie führen zu unterschiedlichen Ergebnissen.
Hier drei Beispiele:
1. Unterschied wird erkannt und behandelt
Eine eingebettete Landkarte (MSMap) wird in Microsoft Excel für Windows als
bearbeitbares MSMap-Objekt angezeigt. In Microsoft Excel für Macintosh wird sie in Form
eines schwarz-weissen Bildes dargestellt, welches nicht bearbeitet werden kann.
2. Unterschied wird ignoriert
3. Unterschied führt zum unterschiedlichem Ergebnis
VBA-Konstante vbNewLine
Schwerwiegende Fehler infolge einer Inkompatibilität, wie beispielsweise ein Microsoft Excel-Absturz, sind nicht bekannt.
Bevor auf die einzelnen Unterschiede zwischen Windows und Macintosh, Excel für Windows und Excel für Macintosh sowie Excel-VBA für Windows und Excel-VBA für Macintosh detailliert eingegangen wird, zuerst ein paar generelle Empfehlungen, die Sie sich unbedingt zu Herzen nehmen sollten. Diese Empfehlungen helfen Ihnen, die Kompatibilitätsproblematik global zu betrachten und Zusammenhänge zu verstehen. Dadurch werden Sie potenzielle Probleme besser und vor allem schneller erkennen und (hoffentlich) vermeiden können.
Hier meine 20 persönlichen Empfehlungen:
1) Einfache Dateinamen verwenden
Geben Sie Ihrer Arbeitsmappe einen einfachen Dateinamen. Mit anderen Worten: Verwenden Sie möglichst nur Buchstaben (a-z bzw. A-Z) und Ziffern (0-9). Alle anderen Zeichen wie Interpunktions- und Sonderzeichen sollten Sie unbedingt vermeiden.
Wenn Sie die Arbeitsmappe mit Microsoft Excel für
Macintosh speichern, sollten bzw. dürfen Sie die Zeichen
- Anführungszeichen ("),
- Schrägstrich (/),
- Umgekehrter Schrägstrich (\),
- Vertikale Linie (|),
- Kleiner als (<),
- Grösser als (>),
- Fragezeichen (?),
- Stern (*) und
- Eckige Klammer ([ und ])
nicht im Dateiname benutzen, weil diese Zeichen unter Windows bzw. in Microsoft
Excel für Windows für Dateinamen verboten sind.
Und auch die Zeichen
- Pound (#),
- Eckige Klammer ([ und ]),
- Ausrufezeichen (!) und
- Apostroph (')
sollten möglichst nicht verwendet werden, da diese von Microsoft Excel für
bestimmte Zwecke benutzt werden.
Wenn Sie unbedingt andere Zeichen als Buchstaben und
Ziffern verwenden wollen, dann nehmen Sie diese Zeichen:
- Leerzeichen
- Runde Klammer
- Gleichheitszeichen (=)
- Minus-Zeichen/Bindestrich (-)
- Plus-Zeichen (+)
- Unterstrich (_)
- Dollarzeichen ($)
- At-Zeichen (@)
- Komma (,)
- Semikolon (;)
Mehr dazu siehe unter Erlaubte Zeichen in Dateinamen.
2) Arbeitsmappe für beide Plattformen gestalten
Gestalten Sie eine Arbeitsmappe immer so, damit sie sowohl in Microsoft Excel für Windows als auch in Microsoft Excel für Macintosh verwendet werden kann. Dies natürlich unter der Annahme, dass die Arbeitsmappe potenziell auf beiden Plattformen zum Einsatz kommt. Denken Sie daran, dass diese Wahrscheinlichkeit grundsätzlich immer vorhanden ist. Sie ist lediglich mal kleiner und mal grösser.
3) Auf beiden Plattformen testen
Testen Sie Ihre Arbeitsmappe gewissenhaft auf beiden Plattformen (sofern Sie diese Möglichkeit besitzen). Genau so wie sich die Excelversionen für Windows voneinander unterscheiden, gibt es in den Excelversionen für Macintosh ein paar Unterschiede. Wenn die Arbeitsmappe in allen Versionen von Microsoft Excel für Windows fehlerfrei funktioniert, müssen Sie die gleichen Tests auch in allen Excelversionen für Macintosh durchführen.
4) Mögliche Kompatibilitätsprobleme berücksichtigen
Informieren Sie sich über allfällige Kompatibilitätsprobleme, bevor Sie mit der Erstellung der Arbeitsmappe beginnen. Beispielsweise funktionieren eingebettete ActiveX-Steuerelemente auf dem Macintosh grundsätzlich nicht. Wenn Sie also bereits viele Steuerelemente wie Schaltflächen, Optionsschaltflächen, Listenfelder und ähnliches in ein Tabellenblatt eingefügt haben, wird es schwierig, diese Objekte nachträglich durch alternative Steuerelemente zu ersetzen (beispielsweise durch Formular-Steuerelemente, die auf beiden Plattformen einwandfrei funktionieren).
5) Grundsätzliche Plattformunterschiede beachten
Berücksichtigen Sie die grundsätzlichen Unterschiede
zwischen Windows und Macintosh. Benutzen Sie in Dokumentationen, Anleitungen,
Fehlermeldungen usw. keine Ausdrücke wie unter anderem:
- "Windows" (das Betriebssystem von Macintosh heisst "Mac OS")
- "Explorer" (auf Macintosh gibt es keinen Windows Explorer)
- "Registry Editor" (es gibt keine Registry auf dem Macintosh)
- "WinZIP" (das favorisierte Komprimierungsprogramm auf Macintosh heisst
"StuffIt")
- "F1" (die Hilfe wird bei einem Mac mit der HILFE-Taste aufgerufen)
- "Pentium PC" (bei Mac heisst ein Rechner je nach Modell Power Mac G3,
G4, G4 Cube, G5, iMac, PowerBook G3, G4, iBook, eMac usw.)
Wenn Sie der Arbeitsmappe VBA-Code hinzufügen, schreiben Sie den Programmcode wenn immer möglich mit 'reinem' VBA (man könnte auch 'native' VBA sagen). Benutzen Sie nur die Objekte, Methoden, Eigenschaften etc. aus der Excel-Objektbibliothek und - falls notwendig - aus der Office-Bibliothek. Verwenden Sie keine zusätzlichen Objekte wie das "File System Object", den "Windows Scipt Host", die "DS OLE Document Properties Object Library" oder dergleichen, weil all diese Bibliotheken explizit für Windows entwickelt wurden und folgedessen auf Macintosh nicht zur Verfügung stehen.
7) Automation vermeiden
Verwenden Sie im Programmcode möglichst keine Automation. Und wenn doch, dann höchstens mit anderen Microsoft Office-Programmen. Benutzen Sie in diesem Fall unbedingt das so genannte Late Binding-Verfahren. Bei Verwendung von Early Binding muss im VBA-Projekt ein Verweis auf die Objektbibliothek der anderen Anwendung gesetzt werden, was beim Plattformwechsel zu einem Problem führen könnte.
Mehr dazu siehe unter Automatisierung.
8) Projektverweise entfernen
Entfernen Sie vor der Veröffentlichung Ihres VBA-Programmes alle nicht benötigten Verweise im VBA-Projekt (Dialogfenster "Verweise" des VBA-Editors). Dadurch reduzieren Sie die Gefahr, dass Verweise auf windowsspezifische Objekt- und Klassen-Bibliotheken (*.olb, *.tlb, *.dll), ActiveX-Steuerelemente (*.ocx) und andere Systemdateien auf dem Macintosh zu einem Problem führen.
9) Unterschiede zwischen VBA 5 und VBA 6 berücksichtigen
Beachten Sie, dass es nicht nur zwischen VBA von Excel für Windows und VBA von Excel für Macintosh Unterschiede gibt, sondern auch zwischen den einzelnen Versionen von Excel für Windows beziehungsweise Excel für Macintosh, also zum Beispiel zwischen VBA von Excel 97 und VBA von Excel 2000, oder zwischen VBA von Excel 2001 und Excel 2004. Unter anderem gibt es in VBA 5 keine Replace-, Join- und Split-Funktion. Diese wurden erst mit VBA Version 6 eingeführt, d.h. in Excel 2000 für Windows beziehungsweise Excel 2004 für Macintosh.
Mehr dazu siehe unter Änderungen und Erweiterungen in VBA 6.0.
10) Externe Funktionen und Prozeduren vermeiden
Vermeiden Sie in VBA-Programmen die Verwendung von externen Funktionen und Prozeduren, auch als so genannte API-Funktionen bekannt. Unter Windows befinden sich derartige Funktionen/Prozeduren in DLL-Dateien (Dynamic Link Library), unter Macintosh dagegen in so genannten Code Ressourcen. Auch wenn eine bestimmte Funktion sowohl in einer DLL als auch in einer Code Ressource vorhanden ist, sollten Sie von ihrer Verwendung absehen.
11) Standard-Steuerelemente "Microsoft Forms" benutzen
Benutzen Sie auf Benutzerformularen ausschliesslich die Standard-Steuerelemente MSForms (Microsoft Forms Object Library). Binden Sie keine zusätzlichen ActiveX-Steuerelemente ein, wie beispielsweise das RefEdit-, Calendar- und DateTime Picker-Control, oder "exotische" Steuerelemente wie das Animated GIF-Control. Solche Steuerelemente sind so genannte ActiveX-Controls. Diese können nur unter Windows verwendet werden. Auf dem Macintosh stehen sie nicht zur Verfügung.
Mehr dazu siehe unter ActiveX-Controls und Steuerelemente.
12) VBA-Projekt nicht schützen
Wenn Sie nicht 100-prozentig sicher sind, dass das VBA-Programm in jeder Situation fehlerfrei funktioniert, sollten Sie das VBA-Projekt nicht mit einem Kennwort schützen. Sollte beispielsweise ein Dateipfad im Programmcode falsch sein, weil zum Beispiel irrtümlich die Schreibweise von Windows- anstatt diejenige von Macintosh-Pfaden benutzt wurde, so tritt beim Kompilieren des VBA-Codes noch kein Fehler auf. Der Code scheint folglich korrekt zu funktionieren, was jedoch nicht stimmt. Wenn später auf dem Macintosh - wegen dem falschen Pfad - ein Laufzeitfehler auftritt, so kann der Excel-Anwender den Fehler (ausnahmsweise) selber beheben. Bei einem geschützten VBA-Projekt ist das nicht möglich.
Mehr dazu siehe unter Wissenswertes über die Kompatibilität von VBA-Projekten: Empfehlungen.
13) Hardcodierte Informationen vermeiden
Statische, fest im Code einprogrammierte Informationen sind absolut tabu. Das gilt insbesondere für Datei- und Verzeichnispfade. Legen Sie besser eine Information, die je nach Plattform unterschiedlich ist beziehungsweise unterschiedlich sein kann, beispielsweise in einer Zelle in einem separaten Tabellenblatt ab. Zum Beispiel kann der Pfad "C:\Daten" in der Zelle A1 statt direkt im Programmcode stehen. Wann immer Sie den Pfad im Programm benötigen, können Sie ihn aus der Zelle holen. Sie können auch eine Textdatei verwenden, die beim Programmstart bzw. beim Öffnen der Arbeitsmappe eingelesen wird. Man kann die Daten auch in Form von Konstanten im VBA-Code ablegen, wobei diese Lösung nicht optimal ist, weil die Daten statisch definiert sind. Legen Sie die Informationen auf jeden Fall nicht in der Windows Registry ab, da es auf Macintosh keine Registry gibt.
Mehr dazu siehe unter Registrierungsdatenbank.
14) Arbeitsmappe rechnerunabhängig gestalten
Gestalten Sie Ihre Arbeitsmappe beziehungsweise Ihr VBA-Programm nicht nur plattformunabhängig, sondern ganz grundsätzlich rechnerunabhängig (Hardware, Betriebssystemversion, Bildschirmauflösung, Drucker, Laufwerke, Verzeichnisse, Excelversion usw.). Mit anderen Worten: Berücksichtigen Sie nicht nur die Unterschiede zwischen Excel für Windows und Excel für Macintosh beziehungsweise Windows und Macintosh. Beachten Sie auch die Unterschiede in Bezug auf Hardware (CPU-Geschwindigkeit, RAM etc.), Drucker/Druckertreiber, Dateisystem, Verzeichnisstruktur und dergleichen.
Beachten Sie, dass unter anderem Pfade, Dateinamen und Verzeichnisnamen, die beispielsweise als Vorgabe-Einstellungen in eine Zelle eingetragen werden, je nach Plattform unterschiedlich heissen müssen. Ein Beispiel:
Der Excel für Windows-Benutzer kann wählen, in welches Verzeichnis die Exportdatei gespeichert werden soll. Der gewählte Verzeichnisname wird in eine Zelle eingetragen, damit er beim nächsten Öffnen der Mappe wieder vorhanden und beim Export vorgeblendet werden kann. Wenn nun die Mappe mit Excel für Macintosh geöffnet wird und ein Export durchgeführt werden soll, so besitzt der in der Zelle stehende Verzeichnisname die Syntax von Windows-Verzeichnisnamen. Der Name besitzt also die Syntax "<Laufwerk>:\<Verzeichnis>\<Unterverzeichnis>". Auf dem Macintosh dagegen müsste der Name die Syntax "<Festplatte>:<Verzeichnis>:<Unterverzeichnis>" besitzen. Es kommt somit zu einem Fehler.
16) Relative Pfade verwenden
Relative Pfade sind besser geeignet als absolute Pfade. Vor allem wenn die verwiesene Datei im gleichen Verzeichnis liegt wie die aktuelle Datei, wird lediglich der Dateiname angegeben - und nicht der gesamte Dateipfad. Der Vorteil ist dabei, dass keine Probleme infolge unterschiedlicher Pfadschreibweise auftreten können (vergleiche auch den vorangegangenen Punkt 15 "Pfadschreibweise beachten").
17) Defensiv programmieren
Benutzen Sie beim Schreiben Ihres VBA-Codes den defensiven Programmierstil. Das bedeutet vereinfacht ausgedrückt, dass der Programmcode so geschrieben wird, damit Laufzeitfehler gar nicht erst entstehen können. Wenn Sie beispielsweise mit VBA eine Arbeitsmappe öffnen (das wird gewöhnlich mit Workbooks.Open durchgeführt), ist es zwar korrekt, aber trotzdem unschön, wenn das Fehlschlagen der Open-Methode infolge nicht vorhandener Datei in einer Fehlerbehandlungsroutine abgefangen wird. Bedeutend besser und sicherer ist es, zuerst anhand der Dir-Funktion zu überprüfen, ob die zu öffnende Datei überhaupt existiert.
18) Fehlerbehandlungsroutinen einsetzen
In sämtlichen Sub- und Function-Prozeduren sollten Laufzeitfehler konsequent abgefangen und ausgewertet werden. Testen Sie nebst den unter Windows üblich auftretenden Fehlercodes auch sonstige Fehlercodes (d.h. Case Else bzw. Else). Der Grund ist, wil auf dem Macintosh manchmal andere Fehlermeldungen auftreten können als unter Windows.
Hier ein Beispiel: Bekanntlich besitzt die Fehlermeldung "Anwendungs- oder objektdefinierter Fehler" den Fehlercode 1004. Das kann man u.a. überprüfen, indem man im Direktfenster des VBA-Editors "?Error(1004)" oder "Error 1004" eingibt und ausführt. Auf dem Macintosh muss dies jedoch nicht der Fall sein, weil die gleiche Fehlermeldung einen anderen Fehlercode besitzen kann, nämlich die Nummer 32809. Wenn man beispielsweise die Anweisung "MsgBox Sheets(1).Name" ausführt (und es existiert eine aktive Arbeitsmappe mit einem oder mehreren Blättern), so tritt der Laufzeitfehler 32809 "Anwendungs- oder objektdefinierter Fehler" auf, falls sich auf dem ersten Arbeitsblatt ein ActiveX-Control befindet. In der Fehlerbehandlungsroutine der Prozedur sollte man folglich nicht nur den Fehlercode 1004 sondern auch den Code 32809 abfangen und behandeln.
Siehe auch unter Unterschiede bei VBA-Fehlermeldungen.
19) Unterschiedliche Ausführungsgeschwindigkeit beachten
Beachten Sie, dass Microsoft Excel für Macintosh erfahrungsgemäss geringfügig langsamer ist als Excel für Windows (aus was für Gründen auch immer das so ist). Wenn Ihr Programmcode unter Windows schon mehrere Minuten für seine Ausführung benötigt, so wird er auf dem Macintosh vermutlich noch einiges länger brauchen. Schreiben Sie daher den Programmcode möglichst optimiert, damit er auch auf nicht ganz so schnellen Rechnern zügig ausgeführt wird.
20) Einheitliches Datumswertesystem verwenden
Microsoft Excel 97 unterstützt zwei Datumswertesysteme, nämlich das 1900- und das 1904-Datumswertesystem. Für Arbeitsmappen wird je nach Plattform ein anderes Standard-Datumswertesystem verwendet: In Microsoft Excel für Windows das 1900-Datumswertesystem und in Microsoft Excel für Macintosh das 1904-Datumswertesystem.
Siehe auch unter 1900- und 1904-Datumssystem von Microsoft Excel.
Bevor auf die Unterschiede zwischen Windows und Macintosh beziehungsweise Excel für Windows und Excel für Macintosh eingegangen wird, hier kurz ein paar Dinge, die auf den beiden Plattformen gleich sind. Sie führen somit nicht zur Inkompatibilität von Arbeitsmappen.
Arbeitsmappen-Dateiformat
Microsoft Excel für Windows wie auch Microsoft Excel für Macintosh benutzt für
seine Dateien das Dateiformat namens BIFF. Seit Excel 97 für Windows beziehungsweise
Excel 98 für Macintosh wird das Format mit der Bezeichnung BIFF8 verwendet. Man kann also
eine Arbeitsmappe auf beiden Plattformen benutzen, ohne zuerst die Arbeitsmappendatei
(Dateinamenerweiterung "xls") konvertieren zu müssen.
Eine ausführliche Dokumentation des Excel-Dateiformates BIFF finden Sie hier:
Weitere Informationen |
Formular-Steuerelemente
Die Excel-Symbolleiste "Formular" stellt Steuerelemente zur Verfügung,
die in ein Arbeitsblatt eingefügt werden können. Diese Formular-Steuerelemente können
ohne Einschränkung sowohl in Excel für Windows als auch in Excel für Macintosh benutzt
werden. Beachten Sie bitte, dass die Steuerelemente der Symbolleiste
"Steuerelement-Toolbox" nur in Excel für Windows verwendet werden können.
OLE - Object
Linking and Embedding
Die Object Linking and Embedding-Technologie (auf deutsch "Objekte verknüpfen
und einbetten") funktioniert sowohl in Microsoft Office für Windows als auch in
Microsoft Office für Macintosh. Es ist somit möglich, beispielsweise ein Microsoft
Word-Dokument als Objekt in ein Tabellenblatt einer Excel-Arbeitsmappe einzufügen. Das
Objekt wird gewöhnlich OLE-Objekt genannt, damit es von anderen einfügbaren Objekten wie
zum Beispiel Zeichnungselementen, AutoFormen, Grafiken/Bildern usw. unterscheidbar ist.
In Microsoft Excel (und den meisten anderen Microsoft
Office-Programmen) stehen drei Varianten zur Auswahl:
1. Einbetten eines neuen Objektes
2. Einbetten eines von einer Datei erstellten Objektes
3. Verknüpfen eines von einer Datei erstellten Objektes
Bei jeder Variante kann das Objekt zudem auch als Symbol in das Dokument eingefügt werden.
Zwecks besserer Verständlichkeit werden die drei Varianten anhand des zuständigen Dialogfensters "Objekt" nachfolgend kurz vorgestellt.
Einbetten eines neuen Objektes
Ein neues Objekt wird eingebettet, indem Sie den "Objekt"-Dialog öffnen (Menübefehl Einfügen/Objekt), auf der Registerseite "Neu erstellen" den gewünschten Objekttyp in der Liste der verfügbaren Objekttypen auswählen und dann auf OK klicken.

Abbildung: Neues Word-Dokument-Objekt erstellen und einbetten
Einbetten eines von einer Datei erstellten Objektes
Ein von einer Datei erstelltes Objekt wird eingebettet, indem Sie den "Objekt"-Dialog öffnen (Menübefehl Einfügen/Objekt), auf der Registerseite "Von Datei erstellen" den Dateinamen einer existierenden Datei eintragen und dann auf OK klicken.

Abbildung: Objekt von einer Word-Dokument-Datei erstellen und
einbetten
Verknüpfen eines von einer Datei erstellten Objektes
Ein von einer Datei erstelltes Objekt wird verknüpft, indem Sie den "Objekt"-Dialog öffnen (Menübefehl Einfügen/Objekt), auf der Registerseite "Von Datei erstellen" den Dateinamen einer existierenden Datei eintragen, die Option "Verknüpfen" aktivieren und dann auf OK klicken. Das Objekt erhält in diesem Fall eine Verknüpfung mit der Quelldatei. Die Verknüpfung wird dadurch im Dialogfenster "Verknüpfungen" (Menübefehl Bearbeiten/Verknüpfungen) angezeigt.

Abbildung: Objekt von einer Word-Dokument-Datei erstellen und
verknüpfen
Bitte beachten: Über den "Objekt"-Dialog (Registerseite "Neu erstellen") lassen sich auch Steuerelemente einfügen, beispielsweise das 'Kalender-Steuerelement'. Derartige Steuerelemente werden als so genannte ActiveX-Controls bezeichnet. Diese Möglichkeit existiert (bzw. funktioniert) jedoch nur in Microsoft Excel für Windows. Auf Macintosh können ActiveX-Controls nicht verwendet werden.
DDE-Verknüpfungen
Text...
Dynamic Data Exchange (DDE; Dynamischer Datenaustausch) ist ein gängiges Protokoll für den Datenaustausch zwischen Windows-basierten Programmen.

Abbildung: Verknüpfungen-Dialog mit DDE-Verknüpfung
Datenbankabfragen,
Web-Queries und externe Datenbereiche
Microsoft Excel unterstützt die Einbindung von externen Daten. Sowohl in Excel
für Windows als auch in Excel für Macintosh können dazu Datenbank- und Web-Abfragen
benutzt werden. Auch Pivot-Tabellen, die Daten aus einer anderen Arbeitsmappe (so genannte
"MS Excel-Datenbank/-Liste") oder einer externen Datenquelle (Datenbank,
Textdatei oder dergleichen) beziehen, können eingesetzt werden.
Immer wenn externe Daten dargestellt werden, egal ob durch eine Datenbankabfrage, eine Web-Abfrage oder eine Pivot-Tabelle, spricht man von einem so genannten externen Datenbereich. Solche externen Datenbereiche funktionieren wie gesagt auf beiden Plattformen. Beim Bearbeiten einer unter Windows erstellten Arbeitsmappe in Excel für Macintosh muss man jedoch beachten, dass die Wahrscheinlichkeit hoch ist, dass Datenquelle, Verbindungsinformation und SQL-String nicht mehr stimmen, weil diese drei Merkmale plattformspezifische Inhalte besitzen. Das Gleiche gilt auch für Macintosh-Arbeitsmappen, die mit Excel für Windows bearbeitet werden.
Beispiele:
Wenn eine Pivot-Tabelle Daten aus einer anderen Arbeitsmappe ("MS Excel-Datenbank/-Liste") darstellt, enthält die Eigenschaft SourceData einen externen Bezug.
Bei Quelle "Excel":
MsgBox ActiveSheet.PivotTables(1).PivotCache.SourceData
MsgBox ActiveSheet.PivotTables(1).SourceData
[PivoTest.xls]Daten!Z5S1:Z26S5
'\Daten\[Pivot-Test 2.xls]Tabelle2'!Z1S1:Z7S3
Bei Quelle "Datenbank":
MsgBox ActiveSheet.PivotTables(1).PivotCache.Connection
ODBC;DefaultDir=C:\NeueDaten\SOSCQ;Driver={Microsoft Text-Treiber (*.txt; *.csv)};DriverId=27;Extensions=asc,csv,tab,txt;FIL=text;MaxBufferSize=2048;MaxScanRows=25;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;
MsgBox ActiveSheet.PivotTables(1).PivotCache.SQL
SELECT `Komma getrennte Datei2`.Name, `Komma getrennte Datei2`.Vorname, `Komma getrennte Datei2`.Anzahl FROM `Komma getrennte Datei2.csv` `Komma getrennte Datei2` ORDER BY `Komma getrennte Datei2`.Name
Beispiel von Connection einer Datenbank-Abfrage:
ODBC;DBQ=C:\Daten;DefaultDir=C:\Daten;Driver={Microsoft
Text Driver (*.txt;
*.csv)};DriverId=27;Extensions=None,asc,csv,dat,log,tab,txt;FIL=text;MaxBufferSize=2048;MaxScanRows=25;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;
Beispiel von SQL einer Datenbank-Abfrage:
SELECT Textdatei1.Name, Textdatei2.Vorname_Nachname FROM
Textdatei1.txt Textdatei1, Textdatei2.txt Textdatei2 WHERE Textdatei1.Name =
Textdatei2.Vorname_Nachname
Beispiel von Connection einer Web-Abfrage:
URL;http://webservices.pcquote.com/cgi-bin/exceldow.exe?
PivotTables
QueryTables
SourceData
Connection
SQL

Abbildung: Pivot-Tabellen-Assistent
Microsoft
Query
Das Utility Microsoft Query
existiert auch auf den Macintosh. Microsoft Query X for Mac verwendet ODBC (Open Database
Connectivity), damit Sie Daten aus Datenbanken in Microsoft Excel X importieren können.
Sie können Microsoft Query X zum Erstellen von neuen Abfragen und zum Aktualisieren von
bestehenden Abfragen einsetzen, die mit einer anderen Version von Microsoft Excel,
beispielsweise mit Excel 98 für Macintosh, Excel 2001 für Macintosh oder Excel für
Windows erstellt wurden.
Weitere Informationen erhalten Sie
hier:
http://www.microsoft.com/downloads/details.aspx?FamilyID=e8c2ab08-46e0-4536-bed5-97a997e2436e&displaylang=en
ODBC integration in
Microsoft Excel v. X
Do you have an external data range query that you created in another version
of Excel that you would like to refresh in Excel X? If so, we have good news for you.
Excel X, version 10.1.0, reintroduces Open Database Connectivity (ODBC) integration
with Excel. Excel X, version 10.1.0, is included in the latest Office update.
After you install the latest version of Excel X, Microsoft Query X for Mac, and the appropriate ODBC drivers, you can use Query X for Mac to create new queries or refresh existing queries that were created in other versions of Excel, such as Excel 98, Excel 2001, and Excel for Windows.
Informationen zum neuesten Office-Update erhalten Sie hier:
www.microsoft.com/mac/resources/resources.aspx?pid=resourcekits&rk=officex&article=/mac/download/misc/make_office_current.xml
Using Microsoft Office v. X
Weitere Informationen über
den Einsatz von ODBC finden Sie hier:
http://www.microsoft.com/mac/otherproducts/officex/using.aspx?pid=usingofficex&type=howto&article=/mac/LIBRARY/feature_articles/officex/xl_ODBC.xml
Microsoft
Formeleditor
Der Microsoft Formeleditor (Microsoft Equation) steht sowohl in Microsoft Office
für Windows als auch in Microsoft Office für Macintosh zur Verfügung. Sie können daher
beispielsweise in Microsoft Excel für Macintosh ein Formelobjekt in ein Tabellenblatt
einer Excel-Arbeitsmappe einfügen und anschliessend die Arbeitsmappe mit Excel für
Windows öffnen, ohne dass dabei das Formelobjekt verloren geht.
Zusatzprogramme und Komponenten von Microsoft Office
Microsoft Office umfasst als Software-Paket mehrere Programme (z.B. Excel, Word und PowerPoint) und Programmkomponenten (zum Beispiel Microsoft Formel-Editor und Microsoft Organisationsdiagramm). Diese können zum Erstellen von Objekten benutzt werden, die man in ein Office-Dokument, beispielsweise in eine Arbeitsmappe einfügen kann. Ein derartiges Objekt wird als OLE-Objekt bezeichnet, weil es die OLE-Technologie verwendet (OLE = Object Linking and Embedding) und in einem Dokument eingebettet bzw. verknüpft ist.
Die Zusatzprogramme sind auf einem Windows-Rechner gewöhnlich im Unterordner "Microsoft Shared" des "Programme\Gemeinsame Dateien"-Verzeichnisses abgelegt. Jedes Programm besitzt dabei einen eigenen Ordner:
| Programm | Ordner |
| Microsoft Formel-Editor (Equation) | Equation |
| Microsoft Map | Datamap |
| Microsoft Graph | MSGraph |
| Microsoft Organisationsdiagramm | Orgchart |
| Microsoft Clip Gallery | Artgalry |
| Microsoft Word Art | Wordart |
| Microsoft Query | MSQuery |
Die Objekte werden in Microsoft Excel über den Objekt-Dialog erstellt und in ein Arbeitsblatt eingefügt (Menü Einfügen/Objekt):

Abbildung: Liste der verfügbaren Objekttypen im Objekt-Dialog
von Microsoft Excel
Zum Einfügen von ClipArt- und Organigramm-Objekten stehen separate Menübefehle bereit. Diese befinden sich im Untermenü Grafik:

Abbildung: Einfügen-Menü von Excel (Ausschnitt)
Hier eine Aufstellung der wichtigsten Programme, die OLE-Objekte erzeugen können (Liste nicht abschliessend):
| Programm | Objekt | Objekt-Typ | Verbindung/Bemerkung | Verfügbarkeit |
| Microsoft Formel-Editor (Equation) | Formel | Eingebettet | =EINBETTEN("Equation";"") | Windows: Ja, Macintosh: Ja |
| Microsoft Map | Landkarte (Map) | Eingebettet | =EINBETTEN("MSMap";"") | Windows: Ja, Macintosh: Nein |
| Microsoft Graph | Diagramm | Eingebettet | =EINBETTEN("MSGraph.Chart";"") | Windows: Ja, Macintosh: Ja (1) |
| Microsoft Organisationsdiagramm | Organigramm (Org Chart) | Eingebettet | =EINBETTEN("OrgChart";"") | Windows: Ja, Macintosh: ? (2) |
| Microsoft Clip Gallery | Clip/ClipArt | Eingebettet | =EINBETTEN("MS_ClipArt_Gallery";"") | Windows: Ja, Macintosh: Ja (3) |
| Microsoft Word Art | WordArt | Eingebettet | =EINBETTEN("MSWordArt";"") | Windows: Ja, Macintosh: Ja |
| Microsoft Word | Word-Dokument | Eingebettet | =EINBETTEN("Word.Document";"") | Windows: Ja, Macintosh: Ja |
| Microsoft Word | Word-Dokument | Verknüpft | =Word.Document.8|'<Datei>'!'''' | Windows: Ja, Macintosh: Ja |
| Microsoft Word | Word-Grafik (4) | Eingebettet | =EINBETTEN("Word.Picture";"") | Windows: Ja, Macintosh: Ja |
| Microsoft PowerPoint | PowerPoint-Präsentation | Eingebettet | =EINBETTEN("PowerPoint.Show";"") | Windows: Ja, Macintosh: Ja |
| Microsoft PowerPoint | PowerPoint-Präsentation | Verknüpft | =PowerPoint.Show.8|'<Datei>'!'''' | Windows: Ja, Macintosh: Ja |
| Microsoft PowerPoint | PowerPoint-Folie (5) | Eingebettet | =EINBETTEN("PowerPoint.Slide";"") | Windows: Ja, Macintosh: Ja |
| Microsoft Query | Datenbank- oder Web-Abfrage | Externer Datenbereich | (via ODBC) | Windows: Ja, Macintosh: Ja |
Anmerkungen:
1) Auf Macintosh vermutlich verfügbar.
2) Nicht bekannt, ob auf Macintosh verfügbar.
3) Auf Macintosh vermutlich verfügbar.
4) Eine Word-Grafik kann nur eingebettet, jedoch nicht verknüpft werden.
5) Eine PowerPoint-Folie kann nur eingebettet, jedoch nicht verknüpft werden.
Objekte, die eingebettet werden können
» Microsoft Formel-Editor (Microsoft Equation)
Formel
=EINBETTEN("Equation.2";"")
» Microsoft Map
Landkarte
=EINBETTEN("MSMap.8";"")
» Microsoft Graph
Diagramm
=EINBETTEN("MSGraph.Chart.8";"")
» Microsoft Organisationsdiagramm (Microsoft Organization Chart)
Organigramm
=EINBETTEN("OrgChart";"")
» Microsoft ClipArt (Microsoft Clip Gallery)
ClipArt
=EINBETTEN("MS_ClipArt_Gallery";"")
» Microsoft WordArt
WordArt
=EINBETTEN("MSWordArt.2";"")
Objekte, die eingefügt werden können
» Microsoft WordArt
WordArt
» Formular-Steuerelement
Formular-Steuerelement
» Steuerelement-Toolbox
Microsoft Forms-Steuerelement
» ActiveX-Control
Weiteres Steuerelement
» AutoForm
AutoForm-Objekt
» Zeichnungselement
Zeichnungsobjekt
» Textfeld
Textfeld-Objekt
Andere Objekte
» Microsoft Query
Datenbank-Abfrage
Es existieren mehrere grundsätzliche Unterschiede zwischen Windows und Macintosh, die meistens technisch durch das jeweilige Betriebssystem beziehungsweise Dateisystem bedingt sind.
Zwecks besserer Übersichtlichkeit sind die Unterschiede in
vier Gruppen eingeteilt:
Unterschiede zwischen Windows und
Macintosh
Unterschiede
zwischen Excel für Windows und Excel für Macintosh
Unterschiede
zwischen VBA für Windows und VBA für Macintosh
Sonstige Unterschiede
Unterschiede zwischen Windows und Macintosh
Nachfolgend ein paar wichtige Unterschiede zwischen den
beiden Plattformen:
- Laufwerksnamen
- Dateipfade
- Erlaubte Zeichen in Dateinamen
- Relative Verzeichnispfade
- Registrierungsdatenbank (Registry) /
Initialisierungsdatei einer Anwendung
- System-Bibliotheken / Code Ressourcen
- Grafik-Dateiformate
- ActiveX-Controls
- Sonderzeichen
- Schriftarten
Laufwerksnamen
Auf einem Macintosh-Computer besitzt die Festplatte die Bezeichnung "HD"
(HD steht für "HardDisk"). Unter Windows wird ein einzelner Buchstabe als
Laufwerksbezeichnung verwendet, in der Regel "A" und "B" für
Diskettenlaufwerke, und "C" bis "Z" für lokale oder verbundene
Server-Laufwerke, CD ROM-/DVD-Laufwerke, Wechselplatten, RAM-Disks, Speicherkarten (z.B.
USB Memory Sticks) und dergleichen. Wenn der Benutzer beispielsweise eine Datei auf dem
Root einer Festplatte speichern möchte, so muss er unter Windows mindestens zwei Zeichen
eingeben (z.B. "C:"), auf einem Macintosh dagegen mindestens drei Zeichen (z.B.
"HD:").
Beispiel
Wenn beispielsweise die OK-Schaltfläche auf einem Benutzerformular erst dann
zugelassen werden soll, wenn der Benutzer eine genügend lange Laufwerksbezeichnung in ein
Textfeld eingegeben hat, so muss man im Code die aktuell verwendete Plattform
berücksichtigen.
TODO
Private Sub txtDriveLetter_Change()
If Application.OperatingSystem Like "*Windows*" Then
'Windows
If Len(txtDriveLetter.Text) > 1 Then
cmdOK.Enabled = True
Else
cmdOK.Enabled = False
End If
Else
'Macintosh
If Len(txtDriveLetter.Text) > 2 Then
cmdOK.Enabled = True
Else
cmdOK.Enabled = False
End If
End If
End Sub
Informationen über das Abfragen des Betriebssystems finden Sie unter Betriebssystem herausfinden.
Dateipfade
In Dateipfaden wird je nach Plattform ein anderes Zeichen zum Unterteilen der
einzelnen Pfadbestandteile verwendet.
| Plattform | Merkmal |
| Windows | Die Bestandteile eines Pfades werden durch
umgekehrte Rückstriche (\) getrennt. Beispiel: C:\Dateien\Excel\EineMappe.xls |
| Macintosh | Die Bestandteile eines Pfades werden durch
Doppelpunkte (:) getrennt. Beispiel: HD:Dateien:Excel:EineMappe |
Wenn Sie beispielsweise in einem Eingabefeld dem Benutzer einen Pfad vorblenden oder den Dateinamen aus einem Dateipfad extrahieren möchten, so müssen Sie das je nach Plattform korrekte Pfadtrennzeichen benutzen. Bei Microsoft Excel können das zu verwendende Trennzeichen anhand der PathSeparator-Eigenschaft herausfinden (siehe auch unter PathSeparator-Eigenschaft).
Tipp:
Dateipfad in Dateiname und Pfadname aufteilen ohne das Pfadtrennzeichen zu kennen
Man kann den Dateinamen aus einem Dateipfad ermitteln, ohne das Pfadtrennzeichen zu
kennen. Diese Lösung ist vor allem dann nützlich, wenn der VBA-Code nicht
ausschliesslich in Microsoft Excel ausgeführt werden soll. In Microsoft Word existiert
die PathSeparator-Eigenschaft ebenfalls. In Microsoft PowerPoint dagegen nicht;
und zwar weder in Version 98, 2000, 2002 noch in Version 2003.
Mit Dir kann Pfadname und Dateiname aus einem Dateipfad ermittelt werden. Der folgende Programmcode funktioniert auf beiden Plattformen:
Sub SplitPathAndFile()
Dim strFull As String
strFull = Application.GetOpenFilename
MsgBox "Pfad und Datei: " & strFull
MsgBox "Datei: " & Dir(strFull)
MsgBox "Pfad: " & Left(strFull, Len(strFull) - Len(Dir(strFull)) - 1)
End Sub
Siehe auch
Codebeispiel 2
"Plattformunabhängiges Pfadtrennzeichen bei Bedarf anfügen".
Erlaubte
Zeichen in Dateinamen
Nicht zu unterschätzen sind die Richtlinien für Dateinamen, insbesondere die
erlaubten beziehungsweise verbotenen Zeichen in Dateinamen.
Je nach Plattform sind bestimmte Zeichen in Dateinamen verboten. Sie müssen dies beim (erstmaligen) Speichern einer Arbeitsmappe unbedingt berücksichtigen.
| Plattform | Merkmal |
| Windows | Anführungszeichen ("), Schrägstrich (/),
umgekehrter Schrägstrich (\), Doppelpunkt (:), vertikale Linie (|), Kleiner als (<)
und Grösser als (>). Zudem können auch das Fragezeichen (?) und der Stern (*) nicht verwendet werden, da diese Zeichen in Windows als Platzhalter dienen. |
| Macintosh | Doppelpunkt (:) |
Auf dem Macintosh ist im Dateiname lediglich der Doppelpunkt nicht erlaubt.
Zusammenfassung
Wenn Sie die Arbeitsmappe mit Microsoft Excel für Macintosh speichern, sollten
bzw. dürfen Sie die Zeichen
- Anführungszeichen ("),
- Schrägstrich (/),
- Umgekehrter Schrägstrich (\),
- Vertikale Linie (|),
- Kleiner als (<),
- Grösser als (>),
- Fragezeichen (?) und
- Stern (*)
nicht im Dateiname benutzen, weil unter Windows diese Zeichen für Dateinamen
verboten sind.
Die eckige Klammer ([ und ]) ist zwar unter Windows erlaubt, aber in Microsoft Excel für Windows verboten (vergleiche Fehlermeldung-Abbildung weiter unten).
Diese Zeichen sind ebenfalls zu vermeiden:
- Pound (#), weil dieses Zeichen Probleme hervorruft, wenn es in Hyperlinks
verwendet wird.
- Ausrufezeichen (!), weil dieses Zeichen in Verknüpfungsinformationen verwendet
wird.
- Apostroph ('), weil dieses Zeichen zu Problemen bei externen Bezügen führen
kann.
Wenn Sie unbedingt andere Zeichen als Buchstaben und
Ziffern verwenden wollen, dann nehmen Sie diese Zeichen:
- Leerzeichen
- Runde Klammer
- Gleichheitszeichen (=)
- Minus-Zeichen/Bindestrich (-)
- Plus-Zeichen (+)
- Unterstrich (_)
- Dollarzeichen ($)
- At-Zeichen (@)
- Komma (,)
- Semikolon (;)
Diese Fehlermeldung tritt in Microsoft Excel für Windows auf, wenn ein Dateiname beispielsweise ein nicht erlaubtes Zeichen enthält:

Abbildung: Nicht erlaubte Zeichen in Dateinamen (Microsoft
Excel)
Diese Fehlermeldung erscheint im Windows Explorer, wenn eine Datei umbenannt und dabei ein nicht erlaubtes Zeichen verwendet wird:

Abbildung: Nicht erlaubte Zeichen in Dateinamen (Windows)
Beispiel
Da unter Windows/Macintosh beziehungsweise in Microsoft Excel für
Windows/Macintosh nicht die gleichen Zeichen erlaubt respektive verboten sind, muss man
diese Unterschiede auch im VBA-Programmcode berücksichtigen. Beispielsweise in der
Validierungsroutine, die überprüft, ob ein vom Benutzer eingegebene Dateiname
grundsätzlich gültig ist. Dieses Beispiel stellt eine Musterlösung vor:
Sub CheckFilename()
Dim strFile As String
Dim intCounter As Integer
strFile = InputBox("Bitte Dateiname eingeben:",
"Dateiname")
If Application.OperatingSystem Like "*Windows*" Then
'Windows
For intCounter = 1 To Len(strFile)
If InStr("?*<>|/\:", Mid$(strFile,
intCounter, 1)) > 0 Or InStr(Chr$(34), Mid$(strFile, intCounter, 1)) > 0 Then
MsgBox "Bitte geben Sie einen gültigen
Dateinamen ein." & vbCrLf & vbCrLf & _
"Dateinamen dürfen keines
dieser Zeichen enthalten:" & vbCrLf & "? * / \ : | < >
""", vbInformation
Exit Sub
End If
Next intCounter
Else
'Macintosh
If InStr(":", strFile) > 0 Then
MsgBox "Bitte geben Sie einen gültigen Dateinamen
ein." & vbCrLf & vbCrLf & _
"Dateinamen dürfen keinen Doppelpunkt
(:) enthalten.", vbInformation
Exit Sub
End If
End If
End Sub
Siehe auch
Codebeispiel 1
"Gültigkeit eines vom Benutzer eingegebenen Dateinamens überprüfen".
Informationen über das Abfragen des Betriebssystems finden Sie unter Betriebssystem herausfinden.
Verwandte Themen
Unterschiede zwischen Windows und Macintosh: Sonderzeichen
Relative
Verzeichnispfade
Zum Wechseln relativer Verzeichnisse werden unter Microsoft Windows und auf dem
Macintosh unterschiedliche Symbole verwendet.
| Plattform | Merkmal |
| Windows | Zum Wechseln des aktuellen Verzeichnisses eine
Ebene nach oben werden zwei Punkte (..) verwendet. Beispiel: ChDir ".." |
| Macintosh | Zum Wechseln des aktuellen Verzeichnisses eine
Ebene nach oben werden zwei Doppelpunkte (::) verwendet. Beispiel: ChDir "::" |
Beispiel
Auf diese Weise wird - abhängig von der jeweiligen Plattform - korrekt ein
Verzeichnis nach oben gewechselt:
Sub MoveOneDirectoryUp()
If Application.OperatingSystem Like "*Windows*" Then
'Windows
ChDir ".."
Else
'Macintosh
ChDir "::"
End If
End Sub
Informationen über das Abfragen des Betriebssystems finden Sie unter Betriebssystem herausfinden.
Ausführliche Informationen über relative Pfade und die ChDir-Anweisung finden Sie hier:
Weitere Informationen |
Registrierungsdatenbank
(Registry) / Initialisierungsdatei einer Anwendung
Auf einem Macintosh-System gibt es keine Registry, wie es bei Windows-Systemen der
Fall ist. Dennoch können die Anweisungen und Funktionen GetSetting, GetAllSettings,
SaveSetting und DeleteSetting unverändert auf beiden Plattformen
eingesetzt werden. Auf dem Macintosh-Rechner werden alle Zugriffe an die
Initialisierungsdatei der jeweiligen Anwendung umgeleitet. Unter Windows wird bei den oben
erwähnten Befehlen für das Argument Appname der Name der Anwendung angegeben.
Auf dem Macintosh ist dies der Name der Initialisierungsdatei im Ordner Preferences aus
dem Systemordner.
Hier ein Beispiel, wie die Initialisierungsdatei von
Microsoft Word 98 für Macintosh aussieht:
WD98: What Is Stored in the Word Settings (8)
File
http://support.microsoft.com/?scid=kb;EN-US;180850
System-Bibliotheken
(DLL; Dynamic Link Library) / Code Ressourcen
In Windows gibt es eine Vielzahl DLL-Dateien. Als Programmierer kann man über eine
spezielle Schnittstelle (API; Application Programming Interface) auf die in einer
DLL-Datei enthaltenen Prozeduren und Funktionen zugreifen. DLLs sind eine
windowsspezifische "Erfindung", d.h. dass auf Macintosh-Systemen keine DLLs
existieren. Auf der Macintosh-Plattform gibt es als Pendant so genannte Code Ressourcen,
auf die man ebenfalls via API zugreifen kann.
Grafik-Dateiformate
Die beiden Plattformen Windows und Macintosh verwenden unterschiedliche
Dateiformate für Grafiken. Während unter Windows das weit verbreitete Format namens BMP
zum Einsatz kommt, wird auf dem Macintosh üblicherweise das Dateiformat PICT verwendet.

Abbildung: Dateityp-Auswahl mit Format "Macintosh
PICT"
Dateien mit dem Grafikformat PICT besitzen unter Windows die Dateinamenerweiterung "pct".
TODO: Grafikfilter, Grafik einfügen, Hintergrundbild
In Bezug auf Benutzerformulare (UserForms in einem VBA-Projekt) müssen Sie beachten, dass das PICT-Format, aber auch andere Grafikformate, zu schwerwiegenden Problemen führen können.
Mehr über diese Problematik erfahren Sie hier:
MacXL: "Invalid Picture" When Setting
Picture Property
http://support.microsoft.com/?scid=kb;en-us;175918
ActiveX-Controls
Auf dem Macintosh existieren grundsätzlich keine ActiveX-Controls (auch
OCX-Controls genannt). Sie können folglich nicht verwendet werden.
Bei Microsoft Excel befinden sich die ActiveX-Controls, die in ein Arbeitsblatt eingefügt werden können, auf der Symbolleiste "Steuerelement-Toolbox":

Abbildung: Steuerelement-Toolbox
In Bezug auf Microsoft Excel bedeutet dies somit, dass die Steuerelemente der "Steuerelement-Toolbox" auf keinen Fall in ein Arbeitsblatt einfügt werden dürfen. Ausser, die Arbeitsmappe wird ausschliesslich in Microsoft Excel für Windows benutzt.
Beim VBA-Editor befinden sich die Steuerelemente auf dem Werkzeugsammlung-Fenster. Alle Steuerelemente, die aus der Microsoft Forms Objekt-Bibliothek stammen, können benutzt, sprich auf einem Benutzerformular angeordnet werden. Sie funktionieren sowohl in Microsoft Excel für Windows als auch in Microsoft Excel für Macintosh. Alle andere, zusätzliche Steuerelemente dürfen dagegen grundsätzlich nicht verwendet werden.

Abbildung: Werkzeugsammlung
Dieser Artikel enthält Informationen über das Problem
beim Verwenden von ActiveX-Controls auf dem Macintosh:
MacXL: Error When You Paste ActiveX Controls or
Run a Macro
http://support.microsoft.com/?scid=kb;en-us;274222
Verwandte Themen
Unterschiede bei Benutzerformularen und Steuerelementen:
Steuerelemente
Sonderzeichen
Auch in Bezug auf die zur Verfügung stehenden Zeichen/Zeichensätze gibt es
Unterschiede, insbesondere bei Sonderzeichen. Betroffen ist sowohl die Anzeige als auch
die Behandlung solcher Zeichen in Kennwörtern.
Anzeige von Sonderzeichen auf Arbeitsblättern
Einige Windows-Schriften enthalten spezielle Zeichen wie beispielsweise solche zum
Darstellen von Fraktionen (z.B. 1/4, 1/2 und 3/4). In Microsoft Word sind diese Zeichen
standardmässig verfügbar, und zwar als normaler Text. Man kann sie jederzeit über den
Menübefehl Einfügen/Sonderzeichen in ein Dokument einfügen. Die
Abbildung zeigt das Dialogfenster "Sonderzeichen" mit selektiertem Zeichen '¼':

Abbildung: Sonderzeichen einfügen (Microsoft Word)
Die automatische Benutzung von Fraktionen kann man zudem einstellen, indem im AutoKorrektur-Dialog die dafür zuständige Ersetzen-Option "Brüche (1/2) durch Sonderzeichen (½)" aktiviert. Diese Option gibt es übrigens gleich zwei Mal im AutoKorrektur-Dialogfenster, nämlich auf der Registerseite "AutoFormat während der Eingabe" und auf der Seite "AutoFormat". Hier eine Abbildung des Dialogfensteres "AutoKorrektur" von Microsoft Word (Version 97):

Abbildung: AutoKorrektur-Dialog (Microsoft Word)
Auch in Microsoft Excel für Windows kann man die Zeichen 1/2 und 1/4 sehr einfach in eine Zelle, in ein Textfeld oder in ein anderes Textobjekt schreiben, indem man die Tastenkombination Alt+171 (=½) beziehungsweise Alt+172 (=¼) drückt.
Auf dem Macintosh dagegen gibt es diese beiden Zeichen nicht, weil sie grundsätzlich in den Macintosh-Schriften fehlen. Wenn man ein solches Zeichen in ein Word für Windows-Dokument einfügt und das Dokument anschliessend mit Word für Macintosh öffnet, so wird das Zeichen automatisch in einen Unterstrich (_) konvertiert. Das gleiche passiert mit dem Zeichen in einer Excel-Arbeitsmappe, wenn man das Zeichen in Microsoft Excel für Windows benutzt und dann die Arbeitsmappe mit Microsoft Excel für Macintosh öffnet.
Wenn Sie auf beiden Plattformen beispielsweise das Zeichen ½ benötigen und nicht als 1/2 darstellen möchten, so bleibt Ihnen nichts anderes übrig, als mit dem Microsoft Formeleditor (Microsoft Equation) ein Formel-Objekt mit enthaltenem "Diagonal angeordneter Bruch" in das Arbeitsblatt einzubetten. Da es den Formeleditor auch in Microsoft Office für Macintosh gibt, wird das Zeichen auf beiden Systemen korrekt ausgegeben.
Mehr zu diesem Thema siehe hier:
MacOFF: Fractions Converted to Underscore
Characters
http://support.microsoft.com/?scid=kb;en-us;193979
Behandlung von Sonderzeichen in Kennwörtern
Nicht zu unterschätzen ist, dass bestimmte Sonderzeichen zu Problemen führen
können, wenn man sie in einem Kennwort benutzt. Vielleicht haben Sie schon mal diese
Fehlermeldung gesehen, sie aber möglicherweise nicht näher beachtet:

Abbildung: Fehler-/Warnmeldung wegen Sonderzeichen im Kennwort
Die Fehlermeldung erscheint, wenn man ein Kennwort festlegt und in diesem Kennwort ganz bestimmte Zeichen verwendet. Betroffen sind alle Kennwörter in Microsoft Excel, also unter anderem das Lese-/Schreibkennwort, das Schreibschutzkennwort sowie das Blattschutzkennwort. Die beiden folgenden Abbildungen zeigen die jeweiligen Dialogfenster.

Abbildung: Speichern-Optionen-Dialog

Abbildung: Blatt schützen-Dialog
Weitere betroffene Kennwörter sind das Arbeitsmappenschutz- und das Freigabeschutzkennwort.
Sobald man eines oder mehrere der folgenden Zeichen im
Kennwort verwendet, tritt die oben vorgestellte Fehlermeldung auf:
- °
- ç
- §
- ¦
- ¬
- ¢
- ´
- ¨
- £
- é
- è
- à
- Das Zeichen ^ ist verwendbar, wenn es nicht in
Kombination mit einem Vokal (a, e, i, o, u) benutzt wird.
- Das Zeichen ~ ist verwendbar, wenn es nicht in Kombination mit den Buchstaben n,
a und o benutzt wird.
Verwandte Themen
Unterschiede zwischen Windows und Macintosh:
Erlaubte Zeichen in Dateinamen
Tabellenfunktion ZEICHEN
Tabellenfunktion CODE
Schriftarten
Bezüglich Schriftarten gibt es ebenfalls Dinge, die man ganz allgemein
berücksichtigen sollte. Denken Sie vor allem daran, dass in Excel für Windows und Excel
für Macintosh nicht die gleiche Schriftart als Standardschrift verwendet wird.
| Excelversion | Standardschrift |
| Excel für Windows | Arial 10 Punkte (nicht-fett, nicht-kursiv) |
| Excel für Macintosh | Geneva 10 Punkte (nicht-fett, nicht-kursiv) |
Wenn Sie beispielsweise ein VBA-Programm auf dem Macintosh schreiben, sollten Sie einer Zelle oder einem Objekt mit Text nicht explizit die Schriftart Geneva zuweisen (obwohl es die Standardschriftart von Excel für Macintosh ist). Vermeiden Sie daher Codezeilen wie beispielsweise diese:
ActiveCell.Font.Name = "Geneva"
Das Problem einer derartigen Codezeile ist, dass sie in Microsoft Excel für Windows zwar ohne Fehlermeldung ausgeführt wird. Weil aber auf einem Windows-Computer standardmässig die angegebene Schriftart nicht existiert, verwendet Excel für Windows für die Anzeige automatisch eine andere, ähnliche Schriftart. Im Falle von Geneva ist es gewöhnlich die Schriftart Arial. Die Zelle besitzt jedoch nach wie vor die Schriftart Geneva. Dies hat zur Folge, dass in der Arbeitsmappe eine Schrift verwendet wird, die auf dem Windows-Rechner nicht installiert ist. Das gilt natürlich auch umgekehrt, also für die in Windows benutzten Schriftarten, die auf dem Macintosh nicht existieren.
Bedenken Sie, dass man mit VBA-Programmcode nicht nur bei Zellen eine andere Schriftart einstellen kann. Die meisten Objekte besitzen eine Font-Eigenschaft, die ein Font-Objekt zurückgibt, welches seinerseits eine Name-Eigenschaft zum Abfragen und Setzen der Schriftart bereitstellt. Nebst Range besitzen unter anderem auch Style, FormatCondition, ChartArea, ChartTitle, AxisTitle und Characters eine Font-Eigenschaft. Nur TextEffectFormat stellt eine Ausnahme dar. Bei diesem Objekt heisst die zuständige Eigenschaft FontName.
TODO
ActiveSheet.Shapes.AddTextEffect msoTextEffect3, "Willkommen!", "Verdana", 22, True, False, 50, 100
Um sicherzugehen, dass die gewünschte Schriftart wirklich verfügbar ist, kann man vor der Verwendung der Schriftart zuerst überprüfen, ob sie auf dem eingesetzten Computer vorhanden ist. Anhand einer kleinen selbstgeschriebenen VBA-Funktion lässt sich dies ganz einfach erledigen.
Siehe dazu unter
Codebeispiel 12
"Verfügbarkeit einer Schriftart überprüfen".
TODO
Je nach Plattform eine andere Standard-Schriftart für Microsoft Excel einstellen:
If Application.OperatingSystem Like "*Macintosh*" Then
Application.StandardFont = "Geneva"
Else
Application.StandardFont = "Arial"
End If
Wenn Sie die Schriftart mit der Eigenschaft StandardFont ändern, wird diese Änderung erst dann durchgeführt, wenn Sie Microsoft Excel erneut starten.
In Microsoft PowerPoint gibt es übrigens eine Funktionalität zum Ersetzen von Schriftarten. Hier ein Auszug aus der Dokumentation von Microsoft PowerPoint 97 (Originaltext):
| Umwandeln von Macintosh-Schriftarten in
Windows-Schriftarten Wenn Sie eine Apple Macintosh-Präsentation in eine Microsoft Windows-Präsentation umgewandelt haben, stehen auf beiden Computern möglicherweise nicht dieselben Schriftarten zur Verfügung. Die folgende Tabelle zeigt Apple Macintosh-Schriftarten und deren Microsoft Windows-Entsprechungen.
Um eine Macintosh-Schriftart zu ersetzen, klicken Sie im Menü Format auf Schriftarten ersetzen. Klicken Sie in den Feldern Ersetzen und Durch auf die zu entsprechenden Schriftarten. PowerPoint ersetzt die Schriftart, behält jedoch den Macintosh-Schriftartnamen bei. |
Anhand der Replace-Methode der Fonts-Auflistung einer Präsentation können Schriftarten auf mit VBA-Code ersetzt werden.
Detaillierte Informationen über Excel-Schriftarten und die maximale Anzahl verschiedene Schriften in Excel erhalten Sie hier:
Weitere Informationen
|
Unterschiede zwischen Excel für Windows und Excel für Macintosh
Nachfolgend ein paar wichtige Unterschiede zwischen den
beiden Excel-Ausgaben:
- Tabellenfunktionen
- Dateinamen
- Speichern einer Arbeitsmappe
- Hyperlink-Basis
- 1900- und
1904-Datumssystem
- Tastaturbelegung/Tastenkombinationen
- Landkarten (Data Maps)
- Publish and Subscribe
Tabellenfunktionen
Alle Tabellenfunktionen von Excel für Windows können auch in Excel für Macintosh
(bzw. umgekehrt) benutzt werden. Es gibt keine Funktionen, die ausschliesslich in Excel
für Windows oder in Excel für Macintosh verwendet werden können. Allerdings liefern
einzelne Tabellenfunktionen je nach Plattform unterschiedliche Ergebnisse. Davon sind
insbesondere ein paar Informations-, Text- und Datum-/Zeit-Funktionen betroffen.
Welche Tabellenfunktionen unterschiedliche Resultate liefern, ist im Kapitel Unterschiede bei Excel-Tabellenfunktionen beschrieben.
Dateinamen
Auf dem Macintosh verwenden Arbeitsmappendateien nicht die unter Windows übliche
Dateinamenerweiterung ".xls", sondern gar keine Dateinamenerweiterung (Diese
Angabe ist ohne Gewähr!).
Speichern
einer Arbeitsmappe
Die Art und Weise, wie eine Microsoft Excel-Arbeitsmappe gespeichert wird, ist auf
den beiden Plattformen Windows und Macintosh unterschiedlich. Hier ein Auszug aus einer
Dokumentation von Microsoft (Originaltext):
When you
save a file that you changed in some way on a Windows-based computer, Microsoft Excel
saves the file with a temporary file name and places this file in the same folder as the
original file. This creates a new file. The original file is then deleted and the
temporary file is renamed with the original file name.
If this process is somehow interrupted, your file may not be saved properly or you
may find one or more temporary files in the folder where you tried to save your file. In
addition, you may receive one of several alert or error messages.
When you use Microsoft Excel to save a file that you changed in some way on a
Macintosh-based computer, and the program unexpectedly quits, Microsoft Excel saves the
file with a temporary file name. Temporary files are placed in an invisible folder called
Temporary Items in the root level of the hard disk. When Microsoft Excel unexpectedly
quits, this folder becomes visible. When you restart the computer, this folder is moved to
the Trash and placed in a folder called "Rescued Items from <hard disk
name>." You can then drag the file back to the hard disk to recover it.
Hyperlink-Basis
Anhand der so genannten Hyperlink-Basis kann man für eine Arbeitsmappe ein
Verzeichnis festlegen, welches als Basis für alle relativen Hyperlinks in der
Arbeitsmappe verwendet wird. In Microsoft Excel wird die Hyperlink-Basis im
Eigenschaften-Dialogfenster der Arbeitsmappe (Menü Datei/Eigenschaften)
eingegeben bzw. abgefragt. Diese Einstellung gilt pro Arbeitsmappe.

Abbildung: Dokument-Eigenschaften mit Hyperlink-Basis
Bitte beachten Sie, dass der als Hyperlink-Basis festgelegte Pfad nicht unbedingt gültig sein muss. Das bedeutet, dass der Pfad nicht vorhanden/verfügbar sein könnte. Es kann sogar sein, dass als Hyperlink-Basis etwas ganz anderes eingegeben wurde, also irgend ein Wort oder Text. Das Problem ist nämlich, dass das Feld "Hyperlink-Basis" ein gewöhnliches Texteingabefeld ist, dessen Inhalt nicht überprüft wird.
Wenn man nun eine Arbeitsmappe mit Microsoft Excel für Windows erstellt und als Hyperlink-Basis zum Beispiel "D:\Daten" einträgt, und dann die Mappe mit Microsoft Excel für Macintosh öffnet, so werden die relativen Hyperlinks in der Arbeitsmappe nicht mehr funktionieren, weil der Macintosh mit der Angabe "D:\Daten" nichts anfangen kann. Wie weiter oben beschrieben wurde, müsste - sofern es das "Daten"-Verzeichnis auf dem Mac-Rechner überhaupt gibt - der Pfad korrekterweise "HD:Daten" lauten. Das gleiche Problem tritt natürlich auch beim umgekehrten Vorgehen auf, also beim Bearbeiten einer mit Excel für Macintosh erstellten Mappe mit Microsoft Excel für Windows.
Die Auswirkung dieses Problems äusserst sich in einer Fehlermeldung, die beim Anklicken eines Hyperlinks erscheint. Beim Öffnen der Arbeitsmappe tritt dagegen kein Fehler auf. Die angezeigte Fehlermeldung ist zu allem Übel noch ziemlich miss- bzw. unverständlich:

Abbildung: Fehlermeldung "Die Adresse dieser Web-Site ist
unzulässig"
Der Text ist insofern 'ungünstig', weil auch dann von "Adresse" und "Web-Site" gesprochen wird, wenn der Hyperlink auf eine Arbeitsmappendatei zeigt, die sogar im gleichen Ordner wie die aktuelle Arbeitsmappe liegt. Zudem ist die vorgeschlagene Überprüfung gar nicht immer so einfach, wie die nachfolgende Abbildung beweist:

Abbildung: Hyperlink bearbeiten (mit Hyperlink-Basis)
Zusammenfassend lässt sich somit sagen, dass eine statische, sprich in den Dokument-Eigenschaften eingetragene Hyperlink-Basis nicht mehr funktioniert, sobald man die Arbeitsmappe auf der anderen Systemplattform bearbeitet. Damit die (relativen) Hyperlinks sowohl unter Windows als auch auf Macintosh funktionieren, muss man die Hyperlink-Basis mit VBA-Programmcode dynamisch festlegen, damit die plattformspezifischen Unterschiede berücksichtigt werden können.
Der Zugriff auf die Hyperlink-Basis erfolgt via BuiltInDocumentProperties-Eigenschaft der Arbeitsmappe, indem man als Element-Index das Schlüsselwort "Hyperlink base" angibt.
Hier wird die Hyperlink-Basis der aktiven Arbeitsmappe abgefragt:
Sub
GetHyperlinkBase()
MsgBox ActiveWorkbook.BuiltInDocumentProperties("Hyperlink base").Value
End Sub
Dieses Beispiel zeigt, wie die Hyperlink-Basis automatisch beim Öffnen der Arbeitsmappe festgelegt wird, wobei dies in Abhängigkeit der aktuell eingesetzten Plattform geschieht:
Private Sub Workbook_Open()
If Application.OperatingSystem Like "*Windows*" Then
'Windows
ThisWorkbook.BuiltInDocumentProperties("Hyperlink
base").Value = "C:\Daten"
Else
'Macintosh
ThisWorkbook.BuiltInDocumentProperties("Hyperlink
base").Value = "HD:Daten"
End If
End Sub
Siehe auch
Codebeispiel 8
"Hyperlink-Basis abfragen/ändern".
1900-
und 1904-Datumssystem von Microsoft Excel
Microsoft Excel 97 unterstützt zwei Datumswertesysteme: das 1900- und das
1904-Datumswertesystem. In Microsoft Excel 97 für Windows wird standardmässig das
1900-Datumswertesystem verwendet. Um zum 1904-Datumswertesystem zu wechseln, klicken Sie
im Menü Extras auf Optionen, klicken Sie auf die Registerkarte Berechnen, und aktivieren
Sie dann das Kontrollkästchen 1904-Datumswerte.
Die folgende Tabelle enthält für beide Datumswertesysteme das erste und das letzte Datum sowie die entsprechenden seriellen Datumswerte:
| Datumswertesystem | Erstes Datum | Letztes Datum |
| 1900 | 1. Januar 1900 Serieller Wert: 1 |
31. Dezember 9999 Serieller Wert: 2958525 |
| 1904 | 2. Januar 1904 Serieller Wert: 1 |
31. Dezember 9999 Serieller Wert: 2957063 |
Bei Microsoft Excel für Windows (und Lotus 1-2-3) werden Tage vom Anfang dieses Jahrhunderts an gezählt; die serielle Datumszahl 1 entspricht dem Datum 1. Januar 1900. Microsoft Excel für den Macintosh verwendet das 1904-Datumswertesystem; die serielle Datumszahl 1 entspricht dem Datum 2. Januar 1904. Um das Datumssystem für Berechnungen zu ändern, klicken Sie im Menü Extras auf Optionen und dann auf die Registerkarte Berechnen. Unter Arbeitsmappe aktivieren Sie das Kontrollkästchen 1904-Datumswerte. Verwenden Sie das 1904-Datumswertesystem für eine Arbeitsmappe, wenn Sie diese zusammen mit Arbeitsmappen nutzen, in denen das 1904-Datumswertesystem eingesetzt wird.
Wenn Sie in Microsoft Excel für Windows eine Datei öffnen, die in Microsoft Excel, Version 2.0 oder höher, für den Macintosh erstellt wurde, erkennt Microsoft Excel das Dateiformat und ändert die Datumswerte automatisch in das 1900-Datumswertesystem. Ebenso wird eine Datei, die mit Microsoft Excel für Windows erstellt wurde, beim Macintosh in das 1904-Datumswertesystem umgewandelt.
TODO
- Bei Einsatz des 1900-Datumssystems (Standard in Microsoft Excel für Windows), liefert DATUM(91; 1; 1) den Wert 33239. Dies ist die fortlaufende Zahl, die dem 1. Januar 1991 entspricht.
- Bei Einsatz des 1904-Datumssystems (Standard in Microsoft Excel für den Macintosh), liefert DATUM(91; 1; 1) den Wert 31777. Dies ist die fortlaufende Zahl, die dem 1. Januar 1991 entspricht.
Einstellung "1904-Datumswerte" (Optionen-Dialog von Excel)
Wenn aktiviert: Ersetzt das Anfangsdatum 1. Januar 1900, aus dem alle Datumswerte berechnet werden, durch den 2. Januar 1904.
Siehe auch
Codebeispiel 9
"Datumssystem einstellen".
Hinweis
Hier ein paar Artikel aus der Microsoft Knowledge Base zu
diesem Thema:
XL (alle Versionen): 1900- und 1904-Datumssystem
im Vergleich
http://support.microsoft.com/?scid=kb;de;214330
MacXL: Date Returned in a Macro Is Four Years Too Early
http://support.microsoft.com/?scid=kb;en-us;274238
Description of the differences between the 1900 Date System and the
1904 Date System in Excel
http://support.microsoft.com/?scid=kb;en-us;214330
XL98: How Microsoft Excel Works with Two-Digit Year Numbers
http://support.microsoft.com/?scid=kb;EN-US;164406
XL2001: How Microsoft Excel Works with Two-Digit Year Numbers
http://support.microsoft.com/?scid=kb;en-us;302768
MacXL: Chart Axis May Be Four Years Early After You Format Scale
http://support.microsoft.com/?scid=kb;en-us;274277
MacXL: Date Values Earlier Than 1904 Appear as Text
http://support.microsoft.com/?scid=kb;en-us;323218
XL (all Versions): Days of the week before March 1, 1900 are
incorrect in Excel
http://support.microsoft.com/?scid=kb;en-us;214058
Verwandte Themen
Date-Anweisung
Unterschiede bei
Excel-Tabellenfunktionen
Tastaturbelegung/Tastenkombinationen
in Microsoft Excel
Zwischen Excel für Windows und Excel für Macintosh gibt es bezüglich
Tastenbefehlen ein paar kleinere Unterschiede. Der wohl wichtigste Unterschied betrifft
die Taste zum Aufrufen der Online-Hilfe. In Excel für Windows wird dazu üblicherweise
die Funktionstaste F1 benutzt - in Excel für Macintosh dagegen die speziell dafür
vorhandene HILFE-Taste. Einem Excel für Macintosh-Anwender darf man also nicht empfehlen,
er solle die Taste F1 drücken. Auf dem Macintosh wird mit dieser Taste nämlich die
letzte Aktion rückgängig gemacht (entspricht der Tastenkombination Strg+Z in Excel für
Windows). In der Macintosh-Ausgabe von Microsoft Excel gibt es eine ähnliche
Tastenkombination wie Strg+Z, nämlich COMMAND+Z. Diese macht jedoch die letzte Selektion
und nicht den letzten Befehl rückgängig.
Diese Tabelle zeigt die deutschen und englischen Tastenbezeichnungen für Windows und Macintosh:
| Windows (deutsch) | Windows (englisch) | Macintosh (deutsch) | Macintosh (englisch) |
| Strg | Ctrl | BEFEHL | COMMAND |
| Alt | Alt | OPTION | OPTION |
| Umschalt | Shift | Umschalt | Shift |
| F1 | F1 | HILFE | HELP |
Eine vollständige Liste sämtlicher Tastenbefehle von
Microsoft Excel 2001 für Macintosh finden Sie hier:
XL2001: Shortcut Keys Available in Excel 2001
for Mac (Part 1)
http://support.microsoft.com/?scid=kb;en-us;275633
XL2001: Shortcut Keys Available in Excel 2001 for Mac (Part 2)
http://support.microsoft.com/?scid=kb;en-us;275634
XL2001: Shortcut Keys Available in Excel 2001 for Mac (Part 3)
http://support.microsoft.com/?scid=kb;en-us;275635
Landkarten (Data Maps)
Mithilfe von Landkarten kann man sehr einfach geografische Daten visualisieren.
Eine Landkarte wird anhand des Zusatzprogrammes Microsoft Map erstellt.

Abbildung: Muster einer Landkarte (Ausschnitt eines
Tabellenblattes)
Bitte beachten Sie, dass Landkarten nur in Microsoft Excel für Windows existieren. Diese können über das Menü Einfügen/Landkarte in ein Arbeitsblatt eingefügt werden. Wenn Sie eine mit Excel für Windows gespeicherte Arbeitsmappe in Excel für Macintosh öffnen, so erscheint die Landkarte als eingebettetes schwarz-weisses Bildobjekt. Wird ein Doppelklick auf das Bild ausgeführt (was unter Windows zum Bearbeiten der Landkarte führt), wird auf dem Macintosh stattdessen eine Fehlermeldung eingeblendet. Interessant ist, dass, obwohl es in Excel für Macintosh keine Landkarten gibt, die eingebettete Landkarte vollständig erhalten bleibt. Man kann somit die Arbeitsmappeappe bearbeiten und speichern. Wird die Mappe anschliessend in Microsoft Excel für Windows geöffnet, liegt die Landkarte wieder als bearbeitbares Objekt vor und ist vollkommen intakt.
Mehr zum Thema Data Maps in Excel erfahren Sie hier:
MacXL: Data Maps Are Not Supported in Microsoft
Excel for Mac
http://support.microsoft.com/?scid=kb;en-us;274220
Publish and
Subscribe
Die Office-Programme für Macintosh von Microsoft Office Version 2001 besitzen
keine Publish and Subscribe-Funktionalität.
Informationen zu diesem Thema erhalten Sie hier:
OFF2001: Publish and Subscribe Not Available in
Office 2001 Programs
http://support.microsoft.com/?scid=kb;en-us;288951
In älteren Versionen von Microsoft Excel für Macintosh (z.B. Version 4.x) gab es dagegen Publisher und Subscriber (Verleger und Abonnenten).
Unterschiede zwischen VBA für Windows und VBA für Macintosh
Nachfolgend ein paar interessante Unterschiede zwischen den
beiden VBA-Ausgaben:
- VBA-Version
- Anzahl gleichzeitig geöffnete
Dateien
- Unicode-Zeichenfolgen
- Automatisierung
VBA-Version
Zwar kein 'echter' Unterschied zwischen VBA für Windows und VBA für Macintosh,
aber unbedingt zu beachten: Je nach Office-Version ist eine andere Version von VBA in der
Office-Anwendung enthalten. Während unter Windows der Wechsel von VBA 5 auf VBA 6 bereits
bei Microsoft Office 2000 vollzogen wurde, enthält Microsoft Office für Macintosh noch
bis zur Version v.X die VBA-Version 5. Erst Office 2004 für Macintosh verwendet VBA 6.
Hier die Übersicht der in Microsoft Office integrierten VBA-Versionen:
| Office-Version | VBA-Version |
| Office 97 (Windows) | VBA 5 |
| Office 98 (Macintosh) | VBA 5 |
| Office 2000 (Windows) | VBA 6 |
| Office 2001 (Macintosh) | VBA 5 |
| Office 2002/XP (Windows) | VBA 6 |
| Office v.X (Macintosh) | VBA 5 |
| Office 2003 (Windows) | VBA 6 |
| Office 2004 (Macintosh) | VBA 6 |
Wenn Sie also mit Microsoft Excel für Windows ein VBA-Programm schreiben, welches auch mit Excel für Macintosh fehlerfrei funktionieren soll, so dürfen Sie nur die Sprachelemente von VBA 5 benutzen, weil Excel für Macintosh fast ausschliesslich noch VBA 5 enthält. Nur die neueste Version Excel 2004 enthält VBA 6.
Anzahl
gleichzeitig geöffnete Dateien
Unter Windows können mit einem VBA-Programm bedeutend mehr Dateien gleichzeitig
geöffnet sein als auf einem Macintosh-Computer.
| Plattform | Merkmal |
| Windows | 512 Dateien (Angabe ohne Gewähr) |
| Macintosh | 40 Dateien (Standard-Einstellung; kann geändert werden) |
Diese Limitation müssen Sie beachten, wenn Sie beispielsweise viele Dateien für Lese- und/oder Schreibzugriffe anhand der Open-Anweisung von VBA öffnen.
Beispiel
Zum Öffnen einer Datei wird gewöhnlich die Open-Anweisung von VBA
verwendet. So wird eine Datei für den Lesezugriff geöffnet:
Open "<Datei>" For Input As #<n>
Auf einem Macintosh-Rechner können Sie die obige Anweisung 40 mal hintereinander ausführen, wenn Sie für "<n>" unterschiedliche Dateinummern angeben und keine der bereits geöffneten Dateien zwischenzeitlich schliessen.
TODO
Sub OpenFiles()
Dim intCounter As Integer
For intCounter = 1 To 256
Open "C:\Daten\Textdatei.txt" For Input As #FreeFile()
Next intCounter
Close
End Sub
Verwandte Themen
Fehlermeldung: Zu viele Dateien (Fehler 67)
FreeFile-Funktion
Unicode-Zeichenfolgen
Visual Basic für den Macintosh unterstützt keine Unicode-Zeichenfolgen. (Quelle:
Microsoft Excel Visual Basic-Referenz, Thema "Chr-Funktion")
| Definition von Unicode: ISO-Zeichenstandard (International Standards Organization). Unicode verwendet eine 16-Bit-Codierung (2 Bytes), die 65'536 verschiedene Zeichen erlaubt. Unicode enthält Darstellungen für Satzzeichen, mathematische Symbole und Dingbats und bietet noch ausreichend Platz für künftige Erweiterungen. |
Verwandte Themen
AscW-Funktion
ChrW-Funktion
Automatisierung
Wenn Sie Code zum Automatisieren von anderen Office-Programmen schreiben, sollten
Sie auf jeden Fall die so genannte Late Binding-Technik benutzen. Bei Late Binding wird im
VBA-Projekt kein Verweis auf die Objektbibliothek der zu automatisierenden Anwendung
gesetzt. Alle Objektvariablen werden mit dem Datentyp Object deklariert (zum
Beispiel "Dim objSlide As Object"). Die Instanzierung erfolgt mittels CreateObject
oder GetObject.
Wenn Sie sich nicht mit Late Binding auskennen oder ganz allgemein Informationen darüber erhalten möchten, werfen Sie einen Blick auf die Seite Automation Theory. Sie finden dort eine detaillierte Beschreibung sämtlicher Automation-Techniken und vieles mehr. Verschiedene Dokumentationen und Anleitungen von Microsoft stehen ausserdem auf der Downloadseite zur Verfügung.
Creator Code von Microsoft
Office-Programmen
Die Creator-Eigenschaft wurde speziell für den Einsatz in Microsoft Excel
für den Macintosh geschaffen. Jede Anwendung auf dem Macintosh besitzt einen
Urheber-Code, der aus vier Zeichen besteht. Der Urheber-Code wird oft Creator Code
genannt. Der Creator Code für Microsoft Excel lautet "XCEL".
Weitere Informationen erhalten Sie hier:
The eXpLorer: Die Bedeutung des von
Application.Creator zurückgegebenen Wertes
http://195.186.84.74/explorer/creator.htm
Senden von
Tastenfolgen
Leider ist nicht eindeutig zu erkennen, ob die SendKeys-Anweisung von VBA
auf dem Macintosh zur Verfügung steht oder nicht. Der Grund liegt an den
widersprüchlichen Beschreibungen in den VBA-Referenzen von Excel 97 und Excel 2000.
Während in der Dokumentation von Excel-VBA 97 ganz klar steht, dass SendKeys auf dem
Macintosh nicht benutzt werden kann, steht in der Dokumentation von Excel-VBA 2000 das
genaue Gegenteil.
Nachstehend zwei Auszüge aus den beiden Referenzen (die wichtigen Textstellen sind dunkelblau und unterstrichen dargestellt):
VBA-Referenz von Microsoft Excel 97:
| Thema "Beispiel zur
SendKeys-Anweisung" In diesem Beispiel wird die Shell-Funktion verwendet, um die Rechner-Anwendung von Microsoft Windows auszuführen. Anschliessend werden mit der SendKeys-Anweisung Tastenanschläge an den Rechner gesendet, um Zahlen zu addieren und den Rechner wieder zu beenden. Die SendKeys-Anweisung steht auf dem Macintosh nicht zur Verfügung. (Sie probieren das Beispiel aus, indem Sie es in eine Prozedur einfügen und diese anschliessend ausführen. Da AppActivate den Fokus auf die Rechner-Anwendung setzt, können Sie den Code nicht mit Einzelschritten ausführen.) Thema
"SendKeys-Anweisung" |
VBA-Referenz von Microsoft Excel 2000:
| Thema "Beispiel zur
SendKeys-Anweisung" In diesem Beispiel wird die Shell-Funktion verwendet, um die Rechner-Anwendung von Microsoft Windows auszuführen. Anschliessend werden mit der SendKeys-Anweisung Tastenanschläge an den Rechner gesendet, um Zahlen zu addieren und den Rechner wieder zu beenden. (Sie probieren das Beispiel aus, indem Sie es in eine Prozedur einfügen und diese anschliessend ausführen. Da AppActivate den Fokus auf die Rechner-Anwendung setzt, können Sie den Code nicht mit Einzelschritten ausführen.) Verwenden Sie auf dem Macintosh anstelle des Windows-Rechners eine Macintosh-Anwendung, die Tastatureingabe akzeptiert. Thema "SendKeys-Anweisung" |
Auch in der Dokumentation der Microsoft Excel Makro-Funktionen ist angegeben, dass das Senden von Tastenanschlägen nicht möglich ist:
Microsoft Excel Makro-Funktionen Hilfe:
| Thema "TASTENF.SENDEN" TASTENF.SENDEN Sendet Tastenanschläge an die aktive Anwendung, als wenn sie direkt über die Tastatur eingegeben würden. Verwenden Sie TASTENF.SENDEN, um Tastenanschläge, die Aktionen und Befehle ausführen, an Anwendungen zu senden, die Sie mit den anderen DDE-Funktionen (DDE=Dynamischer Datenaustausch) von Microsoft Excel ablaufen lassen. Syntax Hinweis |
Aufgrund dieser Unklarheit sollten Sie auf die Benutzung der SendKeys-Anweisung möglichst verzichten.
Unterschiede bei Dateinamen, Dateipfaden und Verzeichnispfaden
Macintosh- und Windows-Computer verwenden unterschiedliche Bezeichnungen und Schreibweisen für Pfade.
- Laufwerke: Auf einem Macintosh-Computer besitzt die Festplatte die Bezeichnung "HD" ("HD" steht für "HardDisk"). Windows dagegen verwendet einen einzelnen Buchstaben, von "A" bis "Z", als Laufwerksbezeichnung.
- Verzeichnisse: Auf Macintosh wird zum Unterteilen der einzelnen Bestandteile eines Pfades der Doppelpunkt ':' verwendet. Bei Windows dagegen wird der umgekehrte Schrägstrich '\' verwendet (z.B. C:\Programme\Microsoft Office\Vorlagen).
- Dateien: In Dateinamen ist auf dem Macintosh lediglich der Doppelpunkt ':' nicht erlaubt, wogegen Windows eine ganze Reihe spezieller Zeichen verbietet.
Dateiname: z.B. MeineMappe.xls
Dateipfad: z.B. C:\Daten\MeineMappe.xls
Verzeichnispfad:
Pfade in der Anwendung Microsoft Excel
- Standardarbeitsordner in Optionen
- Zusätzlicher Startordner in Optionen
...
Zellen
Zellen können sowohl im Zelltext als auch in der Zellformel Pfade enthalten.
Externe Zellbezüge
='C:\Daten\Excel\[Statistik 2005.xls]Regionen'!$A$1
Werden im Verknüpfungen-Dialog angezeigt.
Externe benutzerdefinierte Funktionen
='C:\Daten\Excel\Funktionen.xls'!GetVersion()
Werden im Verknüpfungen-Dialog angezeigt.
Statische Pfade
C:\Daten
C:\Daten\Excel\Statistik 2005.xls
DDE-Verknüpfungen
=WinWord|'D:\NeueDaten\Statistik.doc'!Umsatz
Werden im Verknüpfungen-Dialog angezeigt.
Namen
Namen können Bezüge auf Zellen anderer Arbeitsmappen enthalten und auch auf benutzerdefinierte Funktionen zugreifen, die sich in anderen Mappen befinden.
Externe Zellbezüge
='C:\Daten\Excel\[Statistik 2005.xls]Regionen'!$A$1
Werden im Verknüpfungen-Dialog angezeigt.
Externe benutzerdefinierte Funktionen

Abbildung: Name mit Pfad in Bezug (Dialog "Namen
festlegen")
Werden im Verknüpfungen-Dialog angezeigt.
Objekt-Makrozuweisungen
(AutoForm, Zeichnungselement, Bild, Textfeld, Formular-Steuerelement, Diagramm, eingebettetes Objekt, WordArt-Objekt, Symbolleisten-Steuerelement etc.)
Werden im Verknüpfungen-Dialog angezeigt.
Verknüpfte Objekte
z.B. Bild oder Formular-Steuerelement
| Objekttyp | Objekt |
| Zeichnungsobjekt | Rechteck, Ellipse |
| AutoForm | Standardformen, Blockpfeile, Flussdiagramm, Sterne und Banner, Legende |
| Formular-Steuerelement | Bezeichnungsfeld, Gruppenfeld, Schaltfläche |
| Bild | Verknüpfte Grafik (siehe Anmerkung) |
| Textfeld | Textfeld |
MsgBox ActiveSheet.Shapes("Button 1").DrawingObject.Formula
Werden im Verknüpfungen-Dialog angezeigt.
Verknüpfte OLE-Objekte
z.B. verknüpftes Word-Dokument:
=Word.Document.8|'C:\Daten\Brief.doc'!''''
?ActiveSheet.OLEObjects(6).SourceName
Word.Document.8|D:\NeueDaten\Tools\Cell Format Analyzer\Behandlung von speziellen
Zellen.doc!'
?activesheet.shapes("Object
11").drawingobject.sourcename
Word.Document.8|D:\NeueDaten\Tools\Cell Format Analyzer\Behandlung von speziellen
Zellen.doc!'
Werden im Verknüpfungen-Dialog angezeigt.
Hyperlinks
Pfade in Hyperlinks (Zellen, Objekte)
Werden im Verknüpfungen-Dialog nicht angezeigt.
Konsolidierungen

Abbildung: Bezüge auf externe Konsolidierungsbereiche (Dialog
"Konsolidieren")
Werden im Verknüpfungen-Dialog nicht angezeigt.
Diagramme

Abbildung: Externer Bezug in einer Diagramm-Datenquelle (Dialog
"Datenquelle")
Werden im Verknüpfungen-Dialog nicht angezeigt.
Externe Datenbereiche
Listenbereiche und Ausgabeverknüpfungen von Formular-Steuerelementen

Abbildung: Dialog "Steuerelement formatieren"
Werden im Verknüpfungen-Dialog nicht angezeigt.
Es gibt massenhaft Sprachelemente, d.h. Anweisungen, Funktionen, Methoden, Eigenschaften usw., die als Argumente oder Parameter Datei- bzw. Pfadnamen verwenden. Weil Macintosh und Windows unterschiedliche Dateisysteme benutzen, muss bei jedem dieser Sprachelemente der benötigte Pfad in der korrekten, der eingesetzten Plattform entsprechenden Schreibweise angegeben sein. In einem VBA-Programm gibt es folgedessen eine Vielzahl Codezeilen, die zu einem Fehler führen können, wenn der Dateiname bzw. der Pfad falsch geschrieben ist.
Beispiel:
Kopieren einer Arbeitsmappe in einen anderen Ordner.
Windows:
FileCopy "C:\Daten\Personl.xls", "C:\Backup\Personl.xls"
Macintosh:
FileCopy "HD:Daten:Personal Macro Workbook", "HD:Backup:Personal Macro Workbook"
Ein paar Sprachelemente existieren erst ab Excel 2000.
Bei einigen Sprachelementen ist auf den ersten Blick nur schwer zu erkennen, weshalb sie einen Zusammenhang mit dem Dateisystem besitzen. Beispielsweise bei der Raise-Methode des ErrObject-Objektes von VBA:
Err.Raise 9000, , "Ausnahmefehler aufgetreten!", "C:\MeinProgramm\Hilfedatei.hlp", 1000
OnTime-Eigenschaft des Application-Objektes von Excel:
Sub SetTimer()
Dim varTime As Variant
varTime = Now + TimeValue("0:00:05")
Application.OnTime varTime, "C:\Daten\DemoMappe.xls!MeineProzedur"
End Sub
Nachfolgend finden Sie mehrere Tabellen mit sämtlichen Dateisystem-relevanten Sprachelementen von VBA und den Objektmodellen von Excel, Office, MSForms und VBA-Editor.
Es sind insgesamt 187 verschiedene Sprachelemente. Davon sind 136 Sprachelemente solche von VBA und Excel-VBA.
Anweisungen und Funktionen von VBA
Aufsteigend sortiert nach Element.
| Element | Typ | Bemerkung |
| ChDir | Anweisung | - |
| ChDrive | Anweisung | - |
| CurDir | Funktion | - |
| Dir | Funktion | - |
| FileAttr | Funktion | - |
| FileCopy | Anweisung | - |
| FileDateTime | Funktion | - |
| FileLen | Funktion | - |
| GetAttr | Funktion | - |
| GetObject | Funktion | - |
| HelpFile | Eigenschaft | Eigenschaft des ErrObject-Objektes |
| InputBox | Funktion | - |
| Kill | Anweisung | - |
| MkDir | Anweisung | - |
| MsgBox | Funktion | - |
| Name | Anweisung | - |
| Open | Anweisung | - |
| Raise | Methode | Methode des ErrObject-Objektes |
| RmDir | Anweisung | - |
| SetAttr | Anweisung | - |
| Shell | Funktion | - |
Methoden und Eigenschaften des Excel-Objektmodells
Aufsteigend sortiert nach Objekt/Klasse und Element.
Objekt/Klasse |
Element |
Typ |
Bemerkung |
AddIn |
FullName |
Eigenschaft |
- |
AddIn |
Name |
Eigenschaft |
- |
AddIn |
Path |
Eigenschaft |
- |
AddIns |
Add |
Methode |
- |
Application |
AltStartupPath |
Eigenschaft |
- |
Application |
CheckSpelling |
Methode |
- |
Application |
DDEInitiate |
Methode |
- |
Application |
DefaultFilePath |
Eigenschaft |
- |
Application |
GetOpenFilename |
Methode |
- |
Application |
GetSaveAsFilename |
Methode |
- |
Application |
Help |
Methode |
- |
Application |
InputBox |
Methode |
- |
Application |
LibraryPath |
Eigenschaft |
- |
Application |
MacroOptions |
Methode |
- |
Application |
NetworkTemplatesPath |
Eigenschaft |
- |
Application |
OnCalculate |
Eigenschaft |
Ausgeblendet im Objektmodell |
Application |
OnData |
Eigenschaft |
Ausgeblendet im Objektmodell |
Application |
OnDoubleClick |
Eigenschaft |
Ausgeblendet im Objektmodell |
Application |
OnEntry |
Eigenschaft |
Ausgeblendet im Objektmodell |
Application |
OnKey |
Methode |
- |
Application |
OnRepeat |
Methode |
- |
Application |
OnSheetActivate |
Eigenschaft |
Ausgeblendet im Objektmodell |
Application |
OnSheetDeactivate |
Eigenschaft |
Ausgeblendet im Objektmodell |
Application |
OnTime |
Methode |
- |
Application |
OnUndo |
Methode |
- |
Application |
OnWindow |
Eigenschaft |
- |
Application |
Path |
Eigenschaft |
- |
Application |
RegisterXLL |
Methode |
- |
Application |
Run |
Methode |
- |
Application |
SaveWorkspace |
Methode |
- |
Application |
StartupPath |
Eigenschaft |
- |
Application |
TemplatesPath |
Eigenschaft |
- |
Chart |
CheckSpelling |
Methode |
- |
Chart |
Export |
Methode |
- |
Chart |
OnDoubleClick |
Eigenschaft |
Ausgeblendet im Objektmodell |
Chart |
OnSheetActivate |
Eigenschaft |
Ausgeblendet im Objektmodell |
Chart |
OnSheetDeactivate |
Eigenschaft |
Ausgeblendet im Objektmodell |
Chart |
PrintOut |
Methode |
Ab Excel 2000 |
Chart |
SaveAs |
Methode |
- |
Chart |
SetBackgroundPicture |
Methode |
- |
ChartFillFormat |
TextureName |
Eigenschaft |
- |
ChartFillFormat |
UserPicture |
Methode |
- |
ChartFillFormat |
UserTextured |
Methode |
- |
Charts |
Add |
Methode |
- |
Charts |
PrintOut |
Methode |
Ab Excel 2000 |
Fill |
TextureName |
Eigenschaft |
- |
Fill |
UserPicture |
Methode |
- |
Fill |
UserTextured |
Methode |
- |
FillFormat |
TextureName |
Eigenschaft |
- |
FillFormat |
UserPicture |
Methode |
- |
FillFormat |
UserTextured |
Methode |
- |
Hyperlink |
Address |
Eigenschaft |
- |
Hyperlink |
CreateNewDocument |
Methode |
Ab Excel 2000 |
Hyperlink |
Name |
Eigenschaft |
- |
Hyperlinks |
Add |
Methode |
- |
OLEObjects |
Add |
Methode |
- |
PivotCache |
Connection |
Eigenschaft |
- |
PivotCache |
SQL |
Eigenschaft |
- |
PivotTable |
PivotTableWizard |
Methode |
- |
PivotTable |
SourceData |
Eigenschaft |
- |
PublishObject |
FileName |
Eigenschaft |
- |
PublishObjects |
Add |
Methode |
- |
QueryTable |
Connection |
Eigenschaft |
- |
QueryTable |
SQL |
Eigenschaft |
- |
QueryTables |
Add |
Methode |
- |
Range |
Consolidate |
Methode |
- |
Range |
PrintOut |
Methode |
Ab Excel 2000 |
RecentFile |
Name |
Eigenschaft |
- |
RecentFile |
Path |
Eigenschaft |
- |
RecentFiles |
Add |
Methode |
- |
Shape |
OnAction |
Eigenschaft |
- |
Shapes |
AddOLEObject |
Methode |
- |
Shapes |
AddPicture |
Methode |
- |
Sheets |
Add |
Methode |
- |
SoundNote |
Import |
Methode |
- |
Window |
Close |
Methode |
- |
Window |
OnWindow |
Eigenschaft |
- |
Window |
PrintOut |
Methode |
Ab Excel 2000 |
Workbook |
ChangeLink |
Methode |
- |
Workbook |
Close |
Methode |
- |
Workbook |
FollowHyperlink |
Methode |
- |
Workbook |
FullName |
Eigenschaft |
- |
Workbook |
LinkInfo |
Methode |
- |
Workbook |
MergeWorkbook |
Methode |
- |
Workbook |
Name |
Eigenschaft |
- |
Workbook |
OnSave |
Eigenschaft |
Ausgeblendet im Objektmodell |
Workbook |
OnSheetActivate |
Eigenschaft |
Ausgeblendet im Objektmodell |
Workbook |
OnSheetDeactivate |
Eigenschaft |
Ausgeblendet im Objektmodell |
Workbook |
OpenLinks |
Methode |
- |
Workbook |
Path |
Eigenschaft |
- |
Workbook |
PrintOut |
Methode |
Ab Excel 2000 |
Workbook |
ProtectSharing |
Methode |
- |
Workbook |
SaveAs |
Methode |
- |
Workbook |
SaveCopyAs |
Methode |
- |
Workbook |
SetLinkOnData |
Methode |
- |
Workbook |
UpdateLink |
Methode |
- |
Workbooks |
Add |
Methode |
- |
Workbooks |
Open |
Methode |
- |
Workbooks |
OpenDatabase |
Methode |
Ab Excel 2002 |
Workbooks |
OpenText |
Methode |
- |
Workbooks |
OpenXML |
Methode |
Ab Excel 2002 |
Worksheet |
ConsolidationSources |
Eigenschaft |
- |
Worksheet |
OnCalculate |
Eigenschaft |
Ausgeblendet im Objektmodell |
Worksheet |
OnData |
Eigenschaft |
Ausgeblendet im Objektmodell |
Worksheet |
OnDoubleClick |
Eigenschaft |
Ausgeblendet im Objektmodell |
Worksheet |
OnEntry |
Eigenschaft |
Ausgeblendet im Objektmodell |
Worksheet |
OnSheetActivate |
Eigenschaft |
Ausgeblendet im Objektmodell |
Worksheet |
OnSheetDeactivate |
Eigenschaft |
Ausgeblendet im Objektmodell |
Worksheet |
PasteSpecial |
Methode |
- |
Worksheet |
PivotTableWizard |
Methode |
- |
Worksheet |
PrintOut |
Methode |
Ab Excel 2000 |
Worksheet |
SaveAs |
Methode |
- |
Worksheet |
SetBackgroundPicture |
Methode |
- |
Worksheets |
Add |
Methode |
- |
Worksheets |
PrintOut |
Methode |
Ab Excel 2000 |
Methoden und Eigenschaften des Office-Objektmodells
Aufsteigend sortiert nach Objekt/Klasse und Element.
| Objekt/Klasse | Element | Typ | Bemerkung |
| Assistant | FileName | Eigenschaft | - |
| CommandBarButton | HelpFile | Eigenschaft | - |
| CommandBarButton | OnAction | Eigenschaft | - |
| CommandBarComboBox | HelpFile | Eigenschaft | - |
| CommandBarComboBox | OnAction | Eigenschaft | - |
| CommandBarControl | HelpFile | Eigenschaft | - |
| CommandBarControl | OnAction | Eigenschaft | - |
| CommandBarPopup | HelpFile | Eigenschaft | - |
| CommandBarPopup | OnAction | Eigenschaft | - |
| FileSearch | FileName | Eigenschaft | Nur Windows |
| FileSearch | FoundFiles | Eigenschaft | Nur Windows. Gibt ein FoundFiles-Objekt zurück. |
| FileSearch | LookIn | Eigenschaft | Nur Windows |
| FoundFiles | LookIn | Eigenschaft | Nur Windows |
| IFind | Results | Eigenschaft | Nur Macintosh. Gibt ein FileFindResults-Objekt (IFoundFiles) zurück. |
| IFind | SearchPath | Eigenschaft | Nur Macintosh |
| IFoundFiles | Item | Eigenschaft | Nur Macintosh |
Methoden und Eigenschaften des MSForms-Objektmodells
Aufsteigend sortiert nach Objekt/Klasse und Element.
| Objekt/Klasse | Element | Typ | Bemerkung |
| CheckBox | MouseIcon | Eigenschaft | - |
| CheckBox | Picture | Eigenschaft | - |
| ComboBox | MouseIcon | Eigenschaft | - |
| CommandButton | MouseIcon | Eigenschaft | - |
| CommandButton | Picture | Eigenschaft | - |
| Frame | MouseIcon | Eigenschaft | - |
| Frame | Picture | Eigenschaft | - |
| Image | MouseIcon | Eigenschaft | - |
| Image | Picture | Eigenschaft | - |
| Label | MouseIcon | Eigenschaft | - |
| Label | Picture | Eigenschaft | - |
| ListBox | MouseIcon | Eigenschaft | - |
| OptionButton | MouseIcon | Eigenschaft | - |
| OptionButton | Picture | Eigenschaft | - |
| Page | Picture | Eigenschaft | - |
| ScrollBar | MouseIcon | Eigenschaft | - |
| SpinButton | MouseIcon | Eigenschaft | - |
| TabStrip | MouseIcon | Eigenschaft | - |
| TextBox | MouseIcon | Eigenschaft | - |
| ToggleButton | MouseIcon | Eigenschaft | - |
| ToggleButton | Picture | Eigenschaft | - |
| UserForm | MouseIcon | Eigenschaft | - |
| UserForm | Picture | Eigenschaft | - |
Methoden und Eigenschaften des VBIDE-Objektmodells
Aufsteigend sortiert nach Objekt/Klasse und Element.
| Objekt/Klasse | Element | Typ | Bemerkung |
| CodeModule | AddFromFile | Methode | - |
| Reference | FullPath | Eigenschaft | - |
| Reference | Name | Eigenschaft | - |
| References | AddFromFile | Methode | - |
| VBComponent | Export | Methode | - |
| VBComponent | InsertFile | Methode | Ab Excel 2000 |
| VBComponent | SaveAs | Methode | Ab Excel 2000. Kann nur bei Standalone-Projekten verwendet werden. |
| VBComponents | Import | Methode | - |
| VBProject | BuildFileName | Eigenschaft | Ab Excel 2000 |
| VBProject | FileName | Eigenschaft | Ab Excel 2000 |
| VBProject | HelpFile | Eigenschaft | - |
| VBProject | SaveAs | Methode | Ab Excel 2000. Kann nur bei Standalone-Projekten verwendet werden. |
- Pfad der Hyperlink-Basis in den Dokument-Eigenschaften
Siehe auch unter Hyperlink-Basis
- Pfad der Hilfedatei des VBA-Projektes
Siehe auch unter Projekteigenschaften
- Pfade von Verweisen im VBA-Projekt
- Pfade in Makrozuweisungen von Symbolleisten-Steuerelementen
- Pfade in Hyperlinks von Symbolleisten-Steuerelementen
- Pfade in Benutzerformularen und Steuerelementen
Unterschiede bei Dateitypen und Dateiformaten
...

Abbildung: Datei mit Format CSV (Macintosh) im Editor

Abbildung: Datei mit Format CSV (OS/2 oder MS-DOS) im Editor
| Dateityp | Beschreibung |
| Text (Tabs getrennt) | |
| Text (Macintosh) | |
| Text (OS/2 oder MS-DOS) | |
| CSV (Komma getrennt) | |
| CSV (Macintosh) | |
| CSV (OS/2 oder MS-DOS) |
Verwandte Themen
Unterschiede bei integrierten
Konstanten
Dateiformate (Konstanten)
Unterschiede bei Excel-Tabellenfunktionen
Sämtliche Tabellenfunktionen funktionieren in den neueren Excelversionen, d.h. ab Excel 97 für Windows bzw. Excel 98 für Macintosh, absolut identisch. Es existieren diesbezüglich keinerlei Inkompatibilitäten zwischen den Excelversionen für Windows und Macintosh. Man muss allerdings beachten, dass einzelne Excel-Tabellenfunktionen je nach Plattform unterschiedliche Resultate liefern. Nachfolgend die wichtigsten Unterschiede (Liste nicht abschliessend).
Informationsfunktionen
- INFO
- ZELLE
Textfunktionen
- SÄUBERN
- ZEICHEN
- CODE
Datums- und Zeitfunktionen
- DATUM
- DATWERT
- HEUTE
- JETZT
- JAHR
Matrixfunktionen
- HYPERLINK
Die Tabellenfunktion INFO liefert Informationen zu der aktuellen Betriebssystemumgebung. Sie funktioniert unter Windows und auf Macintosh identisch.
Bei der Tabellenfunktion INFO muss lediglich beachtet werden, dass bei Verwendung des Infotyps "Verzeichnis" (oder "Directory") der Pfad des aktuellen Verzeichnisses zurückgegeben wird, und zwar in der Schreibweise der gerade verwendeten Plattform. In Microsoft Excel für Windows könnte dies beispielsweise "C:\Daten\Excel" sein, während Microsoft Excel für Macintosh "HD:Daten:Excel" zurückgibt.
Die Infotypen "System", "SysVersion" (bzw. "OSVersion") und "Version" liefern das aktuelle Betriebssystem, die Betriebssystemversion sowie die Excelversion. All diese Informationen sind je nach verwendeter Plattform unterschiedlich.
Verwandte Themen
Dateipfade
Abfragen der Ausführungsumgebung
Die Tabellenfunktion ZELLE liefert Informationen zu der Formatierung, der Position oder dem Inhalt einer Zelle.
Bei der Tabellenfunktion ZELLE muss bei Verwendung des Infotyps "Dateiname" darauf geachtet werden, dass der zurückgegebene Dateiname, welcher den vollständigen Dateipfad enthält, je nach Plattform die Windows- oder die Macintosh-Schreibweise besitzt.
Mit dem Infotyp "Adresse" wird eine Zelladresse zurückgegeben. Befindet sich die Zelle auf einem anderen Arbeitsblatt, wird zusätzlich zum Blattname immer auch der Dateiname der Arbeitsmappe geliefert.
Verwandte Themen
Dateipfade
Die Tabellenfunktion SÄUBERN löscht alle nicht druckbaren Zeichen aus einem Text. Verwenden Sie SÄUBERN für Texte, die aus anderen Anwendungsprogrammen importiert wurden und eventuell Zeichen enthalten, die das von Ihnen verwendete Betriebssystem nicht drucken kann. Beispielsweise können Sie SÄUBERN dazu einsetzen, maschinennahen Code zu entfernen, der sich häufig am Anfang und Ende einer Datendatei befindet und nicht gedruckt werden kann.
Auch die Tabellenfunktion SÄUBERN kann somit unterschiedliche Ergebnisse erzeugen, da sie das eingesetzte Betriebssystem berücksichtigt.
Die Tabellenfunktion ZEICHEN liefert das der Codezahl entsprechende Zeichen. Verwenden Sie ZEICHEN, um Zahlen in einer anderen Kodierung, die Sie aus Dateien erhalten, die auf Rechnern anderen Typs erstellt wurden, in Zeichen umzuwandeln.
Bei Microsoft Excel für Windows gibt die Tabellenfunktion ZEICHEN ein Zeichen des ANSI-Zeichensatzes zurück. Bei Microsoft Excel für Macintosh dagegen liefert ZEICHEN ein Zeichen des Macintosh-Zeichensatzes. Man darf somit nicht davon ausgehen, dass man in beiden Excel-Programmen das gleiche Zeichen erhält.
| Systemumgebung | Zeichensatz |
| Windows | ANSI |
| Macintosh | Macintosh-Zeichensatz |
Beispiel:
=ZEICHEN(189)
Liefert unter Windows das Zeichen "½".
Verwandte Themen
Sonderzeichen
Die Tabellenfunktion CODE liefert die Codezahl des ersten Zeichens in einem Text. Die ausgegebene Codezahl entspricht dem Zeichensatz, mit dem der verwendete Rechner arbeitet.
Bei Microsoft Excel für Windows gibt die Tabellenfunktion CODE eine Codezahl des ANSI-Zeichensatzes zurück. Bei Microsoft Excel für Macintosh dagegen liefert CODE eine Codezahl des Macintosh-Zeichensatzes. Man darf somit nicht davon ausgehen, dass man in beiden Excel-Programmen die gleiche Codezahl erhält.
| Systemumgebung | Zeichensatz |
| Windows | ANSI |
| Macintosh | Macintosh-Zeichensatz |
Verwandte Themen
Sonderzeichen
Die Tabellenfunktion DATUM liefert die fortlaufende Zahl des angegebenen Datums.
Syntax
DATUM(Jahr,Monat,Tag)
Die DATUM-Tabellenfunktion verwendet die folgenden Argumente:
| Teil | Beschreibung |
| Jahr | Jahr ist in Microsoft Excel für Windows eine ganze Zahl im Bereich von 1900 bis 9999 oder in Microsoft Excel für den Macintosh im Bereich von 1904 bis 9999. |
| Monat | Monat ist eine Zahl, die den Monat des jeweiligen Jahres angibt. Ist Monat grösser als 12, addiert Monat die Zahl der Monate zu dem ersten Monat des angegebenen Jahres hinzu. So liefert beispielsweise DATUM(90;14;2) die fortlaufende Zahl, die dem 2. Februar 1991 entspricht. |
| Tag | Tag ist eine Zahl, die den Tag des jeweiligen Monats angibt. Ist Tag grösser als die Anzahl der Tage des angegebenen Monats, addiert Tag die Zahl der Tage zu dem ersten Tag des angegebenen Monats hinzu. So liefert beispielsweise DATUM(91;1;35) die fortlaufende Zahl, die dem 4. Februar 1991 entspricht. |
Beispiele
- Bei Einsatz des 1900-Datumssystems (Standard in Microsoft Excel für Windows), liefert DATUM(91; 1; 1) den Wert 33239. Dies ist die fortlaufende Zahl, die dem 1. Januar 1991 entspricht.
- Bei Einsatz des 1904-Datumssystems (Standard in Microsoft Excel für den Macintosh), liefert DATUM(91; 1; 1) den Wert 31777. Dies ist die fortlaufende Zahl, die dem 1. Januar 1991 entspricht.
Verwandte Themen
1900- und 1904-Datumssystem von
Microsoft Excel
Die Tabellenfunktion DATWERT wandelt ein als Text vorliegendes Datum in eine fortlaufende Zahl um. Verwenden Sie DATWERT, wenn Sie ein in Textform vorliegendes Datum in eine fortlaufende Zahl umwandeln möchten.
Der bei DATWERT angegebene Datumstext ist ein Text, der ein Tagesdatum in einem der Microsoft Excel-Datumsformate angibt. Wird mit dem standardmässigen Datumssystem von Microsoft Excel für Windows gearbeitet, muss Datumstext ein Datum darstellen, das zwischen dem 1. Januar 1900 und dem 31. Dezember 9999 liegt. Wird mit dem standardmässigen Datumssystem von Microsoft Excel für den Macintosh gearbeitet, muss Datumstext ein Datum darstellen, das zwischen dem 1. Januar 1904 und dem 31. Dezember 9999 liegt. Entspricht Datumstext einem Datum, das ausserhalb dieses Bereichs liegt, liefert DATWERT den Fehlerwert #WERT!.
Verwandte Themen
1900- und 1904-Datumssystem von
Microsoft Excel
Die Tabellenfunktion HEUTE liefert die fortlaufende Zahl des heutigen Datums. Eine fortlaufende Zahl ist eine Datums- oder Zeitangabe in der Kodierung, die Microsoft Excel für Datums- und Zeitberechnungen verwendet.
Verwandte Themen
1900- und 1904-Datumssystem von
Microsoft Excel
Die Tabellenfunktion JETZT liefert die fortlaufende Zahl des aktuellen Datums und der aktuellen Uhrzeit. Eine fortlaufende Zahl ist eine Datums- oder Zeitangabe in der Kodierung, die Microsoft Excel für Datums- und Zeitberechnungen verwendet.
Verwandte Themen
1900- und 1904-Datumssystem von
Microsoft Excel
Die Tabellenfunktion JAHR wandelt eine fortlaufende Zahl in eine Jahreszahl um. Das Jahr wird als ganze Zahl ausgegeben, die einen Wert von 1900 bis 9999 annehmen kann.
Syntax
JAHR(Zahl)
Die JAHR-Tabellenfunktion verwendet die folgenden Argumente:
| Teil | Beschreibung |
| Zahl | Zahl ist die Kodierung für Datum und Zeit, die Microsoft Excel für Datums- und Zeitberechnungen verwendet. Sie müssen das Argument Zahl nicht zwingend als Zahl, sondern können es auch als Text angeben, also zum Beispiel "15. April 1993" oder "15.4.93". Ein solcher Text wird automatisch in die entsprechende fortlaufende Zahl umgewandelt. |
Hinweis
Microsoft Excel für Windows und Microsoft Excel für den Macintosh verwenden unterschiedliche Standard-Datumssysteme.
Beispiele
Unabhängig vom verwendeten Datumssystem
JAHR("5.7.90") liefert den Wert 1990
1900-Datumssystem (Voreinstellung in Microsoft Excel für Windows)
JAHR(0,007) liefert den Wert 1900
JAHR(29747,007) liefert den Wert 1981
1904-Datumssystem (Voreinstellung in Microsoft Excel für Macintosh)
JAHR(0,007) liefert den Wert 1904
JAHR(29747,007) liefert den Wert 1985
Verwandte Themen
1900- und 1904-Datumssystem von
Microsoft Excel
Die Tabellenfunktion HYPERLINK erstellt eine Verknüpfung oder einen Sprung über die ein auf einem Netzwerk-Server, im Intranet oder im Internet gespeicherte Datei geöffnet wird. Beim Klicken auf die Zelle mit der Funktion HYPERLINK öffnet Microsoft Excel 97 die in Hyperlink_Adresse gespeicherte Datei.
Syntax
HYPERLINK(Hyperlink_Adresse;Freundlicher_Name)
Die HYPERLINK-Tabellenfunktion verwendet die folgenden Argumente:
| Teil | Beschreibung |
| Hyperlink_Adresse | Erforderlich. Hyperlink_Adresse ist der Pfad- und Dateiname der Datei, die als Text geöffnet werden soll. Hyperlink_Adresse kann ein Bezug zu einer Stelle in einem Dokument, beispielsweise eine bestimmte Zelle oder ein benannter Bereich in einer Microsoft Excel-Tabelle oder -Arbeitsmappe oder zu einer Textmarke in einem Microsoft Word-Dokument sein. Der Pfad kann entweder eine auf einer Festplatte gespeicherte verweisen, oder ein UNC (Universal Naming Convention)-Pfad auf einem Server (in Microsoft Excel 97 für Windows) oder ein URL (Uniform Resource Locator)-Pfad im Internet oder einem Intranet sein. |
| Freundlicher_Name | Optional. Freundlicher_Name ist der Sprungtext oder eine Zahl, die in der Zelle angezeigt wird. Freundlicher_Name wird blau und unterstrichen angezeigt. Wird Freundlicher_Name nicht angegeben, wird in der Zelle die Hyperlink_Adresse als Sprungtext angezeigt. |
Hinweise
- Hyperlink_Adresse ist entweder eine in Anführungszeichen eingeschlossene
Zeichenfolge oder eine Zelle, welche die Verknüpfung als Textzeichenfolge enthält.
- Freundlicher_Name kann ein Wert, eine Textzeichenfolge, ein Name oder eine
Zelle sein, die den Sprungtext oder den Wert enthält.
- Gibt Freundlicher_Name einen Fehlerwert (beispielsweise #WERT!), wird in der
Zelle der Fehler anstelle des Sprungtextes angezeigt.
- Wenn der durch Hyperlink_Adresse festgelegte Sprung nicht existiert oder nicht
erreichbar ist, entsteht beim Klicken auf die Zelle ein Fehler.
- Um eine Zelle, die HYPERLINK enthält zu markieren, klicken Sie auf eine Zelle daneben,
und verwenden Sie eine Pfeiltaste, um sich zu der Zelle zu bewegen.
Beispiele
Im folgenden Beispiel wird ein Tabellenblatt mit dem Namen Budget Bericht.xls geöffnet,
das im Internet am Speicherort mit dem Namen www.betrieb.com/bericht befindet und zeigt
den Text "Für Bericht hier klicken" an:
HYPERLINK("http://www.betrieb.com/bericht/jahresbericht.xls"; "Für Bericht
hier klicken")
Im folgenden Beispiel wird ein Hyperlink zur Zelle F10 auf dem Tabellenblatt mit dem Namen
jährlich in der Arbeitsmappe Budget Bericht.xls erstellt, das sich im Internet am
Speicherort www.betrieb.com/bericht befindet. In der Zelle im Tabellenblatt, die den
Hyperlink enthält, wird der Inhalt der Zelle D1 als Sprungtext angezeigt:
HYPERLINK("[http://www.betrieb.com/bericht/jahresbericht.xls]jährlich!F10"; D1)
Im folgenden Beispiel wird ein Hyperlink zum Bereich mit dem Namen AbteilÜbersicht im
Tabellenblatt mit dem Namen Erstes Quartal in der Arbeitsmappe Budget Bericht.xls
erstellt, die sich im Internet an dem Speicherort mit dem Namen www.betrieb.com/bericht
befindet. Die Zelle im Tabellenblatt, die den Hyperlink enthält, zeigt den Text
"Klicken Sie hier, um eine Übersicht über das Erste Quartal der Abteilung zu
erhalten" an:
HYPERLINK("[http://www.betrieb.com/bericht/jahresbericht.xls]Erstes
Quartal!AbteilÜbersicht"; "Klicken Sie hier, um eine Übersicht über das Erste
Quartal der Abteilung zu erhalten")
Um einen Hyperlink zu einer bestimmten Stelle in einem Microsoft Word-Dokument zu
erstellen, müssen Sie eine Textmarke verwenden, um die Stelle im Dokument festzulegen, zu
der gesprungen werden soll. Im folgenden Beispiel wird ein Hyperlink zu einer Textmarke
mit dem Namen QrtlErtrag in dem Dokument mit dem Namen Jahresbericht.doc bei
www.betrieb.com erstellt:
HYPERLINK("[http://www.betrieb.com/bericht/jahresbericht.doc]QrtlErtrag";
"Vierteljährlicher Ertragsbericht")
In Microsoft Excel 97 für Windows zeigt beim folgenden Beispiel der Inhalt der Zelle D5
als Sprungtext in der Zelle an und öffnet die Datei mit dem Namen qrtl1.xls, die sich auf
einem Server mit dem Namen FINANZ auf der Freigabe Angaben befindet. In diesem Beispiel
wird ein UNC-Pfad verwendet:
HYPERLINK("\\FINANZ\Angaben\qrtl1.xls"; D5)
Im folgenden Beispiel wird die Datei qrtl1.xls in Microsoft Excel 97 für Windows
geöffnet, die sich in einem Verzeichnis mit dem Namen Finanz auf dem Laufwerk D befindet
und der Wert von Zelle H10 angezeigt:
HYPERLINK("D:\FINANZ\qrtl1.xls"; H10)
Verwandte Themen
Dateipfade
Unterschiede bei Formular-Steuerelementen
Allgemeines
Formular-Steuerelemente stehen sowohl in Microsoft Excel für Windows als auch in Miccrosoft Excel für Macintosh zur Verfügung. Sie sind uneingeschränkt zwischen den verschiedenen Excelversionen kompatibel.
Einige Formular-Steuerelemente können einen so genannten Listenbereich und/oder eine Ausgabeverknüpfung besitzen. Beide Eigenschaften erlauben die Verwendung von Zellbereichen, die sich in einer anderen Arbeitsmappe befinden.

Abbildung: Steuerung-Eigenschaften eines
Formular-Steuerelementes
Wenn der Listenbereich beziehungsweise die Ausgabeverknüpfung eines Formular-Steuerelementes einen Bezug auf eine andere Arbeitsmappe enthält, so wird in der Arbeitsmappendatei ein SUPBOOK-Record geschrieben, der den relativen Pfad zur anderen Mappe enthält.
Formular-Steuerelemente
CheckBox-Steuerelement (Kontrollkästchen)
- Pfad in Ausgabeverknüpfung
OptionButton-Steuerelement (Optionsfeld)
- Pfad in Ausgabeverknüpfung
DropDown-Steuerelement (Kombinationsfeld)
- Pfad in Listenbereich
- Pfad in Ausgabeverknüpfung
ListBox-Steuerelement (Listenfeld)
- Pfad in Listenbereich
- Pfad in Ausgabeverknüpfung
ScrollBar-Steuerelement (Bildlaufleiste)
- Pfad in Ausgabeverknüpfung
SpinButton-Steuerelement (Drehfeld)
- Pfad in Ausgabeverknüpfung
Unterschiede in der Programmiersprache VBA
In diesem Kapitel geht es um diejenigen Sprachelemente von VBA, die auf Macintosh und unter Windows verschieden sind.
nicht auf beiden Plattformen funktionieren,
unterschiedliche Ergebnisse liefern
Insbesondere in diesen Bereichen gibt es Unterschiede:
» Laufwerks-, Verzeichnis- und Dateinamen (auf Macintosh werden andere Zeichen
verwendet)
» Dateioperationen und Dateizugriffe (Unterschiede bei SetAttr, Dir, Kill, Name usw.)
» Dateisuche (FileFind-Objekt auf Macintosh)
» Systemumgebung (z.B. Environ)
» Registry-Zugriffe (auf Macintosh werden Anwendungs-Initialisierungsdateien
verwendet)
» ActiveX-Controls (existieren nur in Windows)
» Grafik-Dateiformate (PICT auf Macintosh)
» API-Funktionen (Macintosh verwendet Code Ressourcen und nicht DLLs)
Gewöhnlich sind existierende Unterschiede und Spezialitäten direkt im jeweiligen Thema in der VBA-Referenz beschrieben. Leider sind sie nur sehr schwierig aufzuspüren, da es keine Übersicht aller Unterschiede zwischen VBA von Windows und Macintosh gibt.
Nachfolgend werden sämtliche derzeit bekannten Unterschiede ausführlich beschrieben. Die Microsoft VBA-Referenz enthält mehrere Fehler, die in den nachstehenden Beschreibungen korrigiert sind.
| Element | Typ | Element von | Bibliothek |
| Shell | Funktion | VBA | VBA |
| Name | Anweisung | VBA | VBA |
| Dir | Funktion | VBA | VBA |
| SetAttr | Anweisung | VBA | VBA |
| GetAttr | Funktion | VBA | VBA |
| CurDir | Funktion | VBA | VBA |
| ChDir | Anweisung | VBA | VBA |
| ChDrive | Anweisung | VBA | VBA |
| Kill | Anweisung | VBA | VBA |
| AppActivate | Anweisung | VBA | VBA |
| GetObject | Funktion | VBA | VBA |
| Raise | Methode | Err-Objekt | VBA |
| FreeFile | Funktion | VBA | VBA |
| SendKeys | Anweisung | VBA | VBA |
| StrConv | Funktion | VBA | VBA |
| AscW | Funktion | VBA | VBA |
| ChrW | Funktion | VBA | VBA |
| Timer | Funktion | VBA | VBA |
| RGB | Funktion | VBA | VBA |
| Date | Anweisung | VBA | VBA |
| Declare | Anweisung | VBA | VBA |
| CDecl | Schlüsselwort | VBA | VBA |
| MacScript | Funktion | VBA | VBA |
| MacID | Funktion | VBA | VBA |
| MsgBox | Funktion | VBA | VBA |
| InputBox | Funktion | VBA | VBA |
| Option Compare | Anweisung | VBA | VBA |
| Environ | Funktion | VBA | VBA |
| LastDLLError | Eigenschaft | Err-Objekt | VBA |
Shell führt ein ausführbares Programm aus. Falls erfolgreich, gibt sie einen Wert vom Typ Variant (Double) zurück, der die Task-ID des Programms darstellt. Andernfalls wird Null zurückgegeben.
Syntax
Shell(Pathname[, WindowStyle])
Die Syntax der Shell-Funktion verwendet die folgenden benannten Argumente:
| Teil | Beschreibung |
| Pathname | Erforderlich. Wert vom Typ Variant (String). Name des auszuführenden Programms sowie alle erforderlichen Argumente oder Befehlszeilen-Optionen. Auch Verzeichnis-, Ordner- oder Laufwerksangaben können enthalten sein. Auf dem Macintosh können Sie mit der MacID-Funktion die Signatur einer Anwendung anstelle ihres Namens angeben. |
| WindowStyle | Optional. Wert vom Typ Variant (Integer), der dem Stil des Fensters entspricht, in dem das Programm ausgeführt werden soll. Wenn WindowStyle nicht angegeben wird, erhält das Programm den Fokus und wird im minimierten Zustand gestartet. Auf dem Macintosh (System 7.0 oder höher) bestimmt WindowStyle lediglich, ob die Anwendung bei der Ausführung den Fokus erhält. |
Die Werte des benannten Arguments WindowStyle sind folgendermassen definiert (Shell-Konstanten):
| Konstante | Wert | Beschreibung |
| vbHide | 0 | Das Fenster ist ausgeblendet, und das ausgeblendete Fenster erhält den Fokus. Die Konstante vbHide kann auf Macintosh nicht verwendet werden. |
| vbNormalFocus | 1 | Das Fenster hat den Fokus, und die ursprüngliche Grösse und Position wird wiederhergestellt. |
| VbMinimizedFocus | 2 | Das Fenster wird als Symbol mit Fokus angezeigt. |
| vbMaximizedFocus | 3 | Das Fenster wird maximiert mit Fokus angezeigt. |
| vbNormalNoFocus | 4 | Die zuletzt verwendete Grösse und Position des Fensters wird wiederhergestellt. Das momentan aktive Fenster bleibt aktiv. |
| vbMinimizedNoFocus | 6 | Das Fenster wird als Symbol angezeigt. Das momentan aktive Fenster bleibt aktiv. |
Die obigen Shell-Konstanten heissen auf beiden Plattformen gleich, besitzen aber zum Teil unterschiedliche Auswirkungen.
In Bezug auf Anzeige des Anwendungsfenster im Vordergrund oder Hintergrund gibt es Unterschiede. Auf dem Macintosh plazieren vbNormalFocus, vbMinimizedFocus und vbMaximizedFocus die Anwendung im Vordergrund. vbNormalNoFocus und vbMinimizedNoFocus plazieren die Anwendung im Hintergrund.
Bemerkungen
Wenn die Shell-Funktion die angegebene Datei erfolgreich ausführt, liefert sie die Task-ID des gestarteten Programmes zurück. Die Task-ID ist eine Zahl, die das ausgeführte Programm eindeutig kennzeichnet. Wenn die Shell-Funktion das angegebene Programm nicht starten kann, tritt ein Fehler auf.
Auf dem Macintosh können Sie mit der MacID-Funktion die Signatur einer Anwendung anstelle ihres Namens angeben. Im folgenden Beispiel wird die Signatur für Microsoft Word verwendet:
Shell MacID("MSWD")
In diesem Beispiel wird Microsoft Excel gestartet:
Shell MacID("XCEL")
Wenn Sie die MacID-Funktion mit Shell unter Microsoft Windows verwenden, tritt ein Fehler auf.
Weitere Beispiele
Dim Ergebnis As Long
' Unter Windows:
Ergebnis = Shell("C:\Windows\Calc.exe", vbNormalFocus)
' Auf Macintosh:
Ergebnis = Shell("Microsoft Excel")
Ergebnis = Shell(MacID("XCEL"))
Achtung!
In der Visual Basic Online-Hilfe steht, dass auch vbHide die Anwendung in den Hintergrund stellt. Diese Angabe ist jedoch falsch. Korrekt ist, dass vbHide auf einem Macintosh-System nicht verwendet werden kann. Zudem steht in der Online-Hilfe, dass vbNoFocus und vbMinimizeFocus die Anwendung im Hintergrund plazieren. Auch das stimmt nicht ganz, weil die Konstanten vbNormalNoFocus und vbMinimizedNoFocus heissen.
Anmerkung
Die Shell-Funktion startet ein Programm standardmässig asynchron. Daher muss ein mit Shell ausgeführtes Programm noch nicht abgeschlossen sein, wenn die nächsten Anweisungen, die auf die Shell-Funktion folgen, ausgeführt werden.
Tipp: ActivateMicrosoftApp-Methode für
Microsoft-Anwendungen einsetzen
Wenn Sie in Ihrem VBA-Programm eine andere Microsoft-Anwendung starten wollen,
können Sie anstelle der Shell-Funktion die Methode ActivateMicrosoftApp
des Application-Objektes benutzen.
TODO
Verwandte Themen
MacID-Funktion
AppActivate-Anweisung
Unterschiede bei integrierten Konstanten
Detaillierte Informationen über das synchrone und asynchrone Starten von Programmen erhalten Sie hier:
Weitere Informationen |
Benennt eine Datei, ein Verzeichnis oder einen Ordner um. Die Name-Anweisung kann auch zum Verschieben einer Datei verwendet werden.
Syntax
Name AlterPfadname As NeuerPfadname
In den folgenden Beispielen wird die Name-Anweisung verwendet, um den Namen einer Datei zu ändern. Im Rahmen dieses Beispiels wird angenommen, dass die Verzeichnisse/Ordner bereits existieren. Auf dem Macintosh ist der Standardlaufwerkname "HD", und die Bestandteile des Pfadnamens sind durch Doppelpunkte statt umgekehrte Schrägstriche voneinander getrennt.
Beispiele
Dim AlterName As String
Dim NeuerName As String
AlterName = "DATEIALT"
NeuerName = "DATEINEU"
Name AlterName As NeuerName
' Unter Windows:
AlterName = "C:\VERZ1\DATEIALT"
NeuerName = "C:\VERZ2\DATEINEU"
Name AlterName As NeuerName
' Auf Macintosh:
AlterName = "HD:ORDNER1:DATEIALT"
NeuerName = "HD:ORDNER2:DATEINEU"
Name AlterName As NeuerName
Verwandte Themen
Unterschiede zwischen Windows und Macintosh: Dateipfade
Dir-Funktion (Apple Power Macintosh)
Unter Microsoft Windows unterstützt die Dir-Funktion die Verwendung von Platzhaltern für mehrere Zeichen (*) und für ein einzelnes Zeichen (?), um mehrere Dateien anzugeben. Auf dem Macintosh werden diese Zeichen jedoch als gültige Zeichen von Dateinamen behandelt und können daher nicht als Platzhalter zum Angeben mehrerer Dateien verwendet werden. Da der Macintosh die Platzhalter nicht unterstützt, verwenden Sie den Dateityp, um Gruppen von Dateien zu kennzeichnen. Sie können die MacID-Funktion verwenden, um den Dateityp anstatt des Dateinamens anzugeben. Die folgende Anweisung gibt z.B. den Namen der ersten TEXT-Datei im aktuellen Ordner zurück:
Dir("Pfad2", MacID("TEXT"))
Sie können alle Dateien in einem Ordner durchlaufen, indem Sie eine leere Zeichenfolge angeben:
Dir("")
Wenn Sie die MacID-Funktion zusammen mit der Dir-Funktion in Microsoft Windows verwenden, tritt ein Fehler auf.
Attribut-Werte, die grösser als 256 sind, werden als MacID-Werte angesehen.
Gemäss VBA-Referenz sind die beiden folgenden Konstanten auf dem Macintosh nicht verfügbar:
| Konstante | Wert | Beschreibung |
| vbSystem | 4 | Systemdatei |
| vbVolume | 8 | Datenträgerbezeichnung |
Gemäss VBA-Referenz ist die folgende Konstante nur auf dem Macintosh verfügbar:
| Konstante | Wert | Beschreibung |
| vbAlias | 64 | Der angegebene Dateiname ist ein Alias |
Wichtiger Hinweis!
Bitte beachten Sie, dass die obigen, der VBA-Referenz
entnommenen Informationen unvollständig sind! Korrekt ist, dass auf Macintosh nur diese
vier und sonst keine anderen Konstanten für Dir verfügbar sind:
- vbNormal
- vbReadOnly
- vbHidden
- vbAlias
Alle anderen Konstanten sind auf Macintosh nicht erlaubt.
Eine vollständige Liste der Konstanten-Inkompatibilitäten finden Sie unter Unterschiede bei integrierten Konstanten.
Beispiel
' Dateityp mit der MacID-Funktion angeben.
' Die folgende Anweisung gibt die erste Datei mit dem Typ "TEXT"
' zurück, die im angegebenen Verzeichnis oder Ordner gefunden wurde.
Datei1 = Dir("HD:ORDNER1:", MacID("TEXT"))
Verwandte Themen
MacID-Funktion
SetAttr-Anweisung und GetAttr-Funktion
Die SetAttr-Anweisung und die GetAttr-Funktion arbeiten unter Windows und Macintosh identisch. Es gibt aber Unterschiede bei den zur Verfügung stehenden Konstanten (sogenannte VbFileAttribute-Konstanten).
Gemäss VBA-Referenz sind die beiden folgenden Konstanten auf dem Macintosh nicht verfügbar:
| Konstante | Wert | Beschreibung |
| vbSystem | 4 | Systemdatei |
| vbVolume | 8 | Datenträgerbezeichnung |
Gemäss VBA-Referenz ist die folgende Konstante ausschliesslich auf dem Macintosh verfügbar:
| Konstante | Wert | Beschreibung |
| vbAlias | 64 | Der angegebene Dateiname ist ein Alias |
Wichtiger Hinweis!
Bitte beachten Sie, dass die obigen, der VBA-Referenz
entnommenen Informationen unvollständig sind! Korrekt ist, dass auf dem Macintosh nur
diese vier und sonst keine anderen Konstanten für SetAttr und GetAttr
verfügbar sind:
- vbNormal
- vbReadOnly
- vbHidden
- vbAlias
Alle anderen Konstanten sind auf dem Macintosh nicht erlaubt und sollten daher nicht verwendet werden.
Eine vollständige Liste der Konstanten-Inkompatibilitäten finden Sie unter Unterschiede bei integrierten Konstanten.
Gibt einen Wert vom Typ Variant (String) zurück, der den aktuellen Pfad darstellt.
Syntax
CurDir[(Laufwerk)]
Das optionale Argument Laufwerk ist ein Zeichenfolgenausdruck, der ein existierendes Laufwerk angibt. Ist kein Laufwerk angegeben, oder enthält das Laufwerk eine Null-Zeichenfolge (""), so gibt die CurDir-Funktion den Pfad des aktuellen Laufwerks zurück.
Anmerkung
Wenn für Laufwerk ein ungültiges Zeichen angegeben wird, so erscheint der Laufzeitfehler 5 "Unzulässiger Prozeduraufruf oder ungültiges Argument". Als Zeichen sind nur Buchstaben von a bis z beziehungsweise von A bis Z erlaubt.
Wird ein existierendes Laufwerk angegeben, welches aber nicht bereit ist, so wird das Stammverzeichnis des angegebenen Laufwerkes zurückgegeben (z.B. "A:\" beim Diskettenlaufwerk "A:", auch wenn keine Diskette eingelegt ist).
Wenn ein nicht vorhandenes Laufwerk angegeben wird, so tritt der Laufzeitfehler 68 "Gerät nicht verfügbar" auf.
Bemerkungen
Beim Macintosh ignoriert CurDir die Angabe für Laufwerk und gibt einfach den Pfad des aktuellen Laufwerks zurück. Wenn das Programm auf einem Macintosh ausgeführt wird, können Sie für Laufwerk irgend etwas angeben, weil es keinen Einfluss auf den von CurDir zurückgegebenen Pfad hat.
Verwandte Themen
ChDir-Anweisung
ChDrive-Anweisung
Wechselt das aktuelle Verzeichnis oder den aktuellen Ordner.
Syntax
ChDir Pfad
Das erforderliche Argument Pfad ist ein Zeichenfolgenausdruck, der angibt, welches Verzeichnis oder welcher Ordner zum neuen Standardverzeichnis oder -ordner wird. Pfad kann das Laufwerk beinhalten. Ist kein Laufwerk angegeben, so wechselt die ChDir-Anweisung das Standardverzeichnis oder den Standardordner auf dem aktuellen Laufwerk.
Anmerkung
Als Pfad kann auch ein UNC-Pfad (\\Server\Share...) angegeben werden, was bedeutet, dass ChDir korrekt zwischen UNC-Pfaden wechselt.
Achtung!
Beachten Sie bitte, dass im Gegensatz zu ChDir die Anweisung ChDrive keine UNC-Pfade verarbeiten kann (siehe unter ChDrive-Anweisung).
Bemerkungen
Die ChDir-Anweisung wechselt das Standardverzeichnis, aber nicht das Standardlaufwerk. Ist das Standardlaufwerk zum Beispiel C:, dann wechselt die folgende Anweisung zwar das Standardverzeichnis auf Laufwerk D:, aber C: bleibt das Standardlaufwerk. In diesem Beispiel ist die genau der Fall:
ChDir "D:\TMP"
Auf dem Power Macintosh ändert sich das Standardlaufwerk immer auf das Laufwerk, das in Pfad angegeben wird. Eine vollständige Pfadangabe beginnt mit dem Volumennamen, eine relative Pfadangabe beginnt mit einem Doppelpunkt (:). ChDir löst alle im Pfad angegebenen Aliase auf:
ChDir "MacDrive:Tmp" ' Auf dem Macintosh (vollständiger Pfad)
ChDir ":Tmp" ' Auf dem Macintosh (relativer Pfad)
Beim Wechseln relativer Verzeichnisse werden unter Microsoft Windows und auf dem Macintosh unterschiedliche Symbole verwendet:
ChDir ".." ' Wechselt unter Microsoft Windows ein Verzeichnis nach oben
ChDir "::" ' Wechselt auf dem Macintosh
ein Verzeichnis nach oben
Verwandte Themen
CurDir-Funktion
ChDrive-Anweisung
Mit der ChDrive-Anweisung wird das aktuelle Laufwerk gewechselt.
Syntax
ChDrive Laufwerk
Das erforderliche Argument Laufwerk ist ein Zeichenfolgenausdruck, der ein existierendes Laufwerk angibt. Wenn Sie eine Null-Zeichenfolge ("") angeben, ändert sich das aktuelle Laufwerk nicht. Ist das Argument Laufwerk eine Zeichenfolge mit mehreren Zeichen, so verwendet die ChDrive-Anweisung grundsätzlich nur das erste angegebene Zeichen.
Beim Macintosh wechselt ChDrive vom aktuellen Verzeichnis zum Stammverzeichnis des angegebenen Laufwerks.
Achtung!
Beachten Sie bitte, dass ChDrive keine UNC-Pfade bzw. mittels UNC ausgedrückte Laufwerksangaben verarbeitet. Wenn für Laufwerk ein UNC-Pfad bzw. -Laufwerk angegeben wird, erscheint ein Laufzeitfehler. Diesen können Sie verhindern, indem die Anweisung On Error Resume Next verwendet wird, oder indem geprüft wird, ob die ersten beiden Zeichen von Laufwerk umgekehrte Schrägstriche (\) sind.
Anmerkung
Die ChDir-Anweisung dagegen kann UNC-Pfade problemlos verarbeiten (siehe unter ChDir-Anweisung).
Bemerkungen
Immer wenn das angegebene Zeichen bzw. das erste der angegebenen Zeichen kein Buchstabe von a bis z beziehungsweise von A bis Z ist, so erscheint der Laufzeitfehler 5 "Unzulässiger Prozeduraufruf oder ungültiges Argument".
Verwandte Themen
CurDir-Funktion
ChDir-Anweisung
Die Kill-Anweisung löscht eine oder mehrere Datei(en).
Syntax
Kill Pfadname
Das erforderliche Argument Pfadname ist ein Zeichenfolgenausdruck, der eine oder mehrere zu löschende Dateien angibt. Pfadname kann ein Verzeichnis oder einen Ordner sowie ein Laufwerk enthalten.
Anmerkung zu Windows
Unter Microsoft Windows unterstützt die Kill-Anweisung die Verwendung von Platzhaltern für mehrere Zeichen (*) und für ein einzelnes Zeichen (?), um mehrere Dateien anzugeben und zu löschen.
Anmerkung zu Macintosh
Auf dem Macintosh werden die Platzhalterzeichen * und ? als gültige Zeichen von Dateinamen behandelt und können daher nicht als Platzhalter zum Angeben mehrerer Dateien verwendet werden. Da der Macintosh diese Platzhalter nicht unterstützt, müssen Sie stattdessen den Dateityp verwenden, um Gruppen von Dateien zu kennzeichnen. Sie können die MacID-Funktion verwenden, um den Dateityp anstatt des Dateinamens anzugeben. Die folgende Anweisung löscht zum Beispiel alle TEXT-Dateien im aktuellen Ordner:
Kill MacID("TEXT")
Wenn Sie die MacID-Funktion zusammen mit der Kill-Anweisung in Microsoft Windows verwenden, tritt der Laufzeitfehler 13 "Typen unverträglich" auf:

Abbildung: Laufzeitfehler 13
Verwandte Themen
MacID-Funktion
Unterschiede zwischen Windows und Macintosh: Dateipfade
Mit AppActivate wird ein Anwendungsfenster aktiviert.
Syntax
AppActivate Title[, Wait]
Die Syntax der AppActivate-Anweisung verwendet die folgenden benannten Argumente:
| Teil | Beschreibung |
| Title | Erforderlich. Ein Zeichenfolgenausdruck, der den Titel in der Titelleiste des zu aktivierenden Anwendungsfensters angibt. Die von der Shell-Funktion zurückgegebene Task-ID kann anstelle von Title verwendet werden, um eine Anwendung zu aktivieren. |
| Wait | Optional. Ein Wert vom Typ Boolean, der angibt, ob die aufrufende Anwendung den Fokus hat, bevor sie eine andere Anwendung aktiviert. Beim Wert False (Voreinstellung) wird die angegebene Anwendung mit sofortiger Wirkung aktiviert, auch wenn die aufrufende Anwendung nicht den Fokus hat. Beim Wert True wartet die aufrufende Anwendung, bis sie den Fokus erhält, und aktiviert dann die angegebene Anwendung. |
Bemerkungen
Die AppActivate-Anweisung setzt den Fokus auf die angegebene Anwendung oder das angegebene Fenster, hat aber keinen Einfluss darauf, ob diese maximiert oder minimiert dargestellt werden. Das aktivierte Anwendungsfenster verliert den Fokus, wenn der Benutzer das Fenster schliesst oder den Fokus auf ein anderes Fenster setzt. Verwenden Sie die Shell-Funktion, wenn Sie eine Anwendung starten und den Fensterstil festlegen möchten.
Welche Anwendung aktiviert werden soll, wird bestimmt, indem Title mit der Zeichenfolge des Titels jeder einzelnen momentan ausgeführten Anwendung verglichen wird. Wenn es keine genaue Übereinstimmung gibt, wird eine beliebige Anwendung, deren Zeichenfolge mit Title beginnt, aktiviert. Wenn mehr als eine Instanz dieser Anwendung mit Title bezeichnet ist, wird eine der Instanzen willkürlich aktiviert.
Beispiele
Dim Ergebnis As Long
' Unter Windows und auf Macintosh:
AppActivate "Microsoft Word"
' Unter Windows:
Ergebnis = Shell("C:\Windows\Calc.exe", vbNormalFocus)
AppActivate Ergebnis
' Auf Macintosh:
Ergebnis = Shell(MacID("XCEL"))
AppActivate Ergebnis
Verwandte Themen
Shell-Funktion
MacID-Funktion
Weiterführende Informationen über das Aktivieren von Anwendungen erhalten Sie hier:
Dokumentation |
Die GetObject-Funktion gibt einen Verweis auf ein ActiveX-Objekt aus einer Datei zurück oder referenziert eine bereits laufende Server-Anwendung.
Syntax
GetObject([Pathname] [, Class])
Die Syntax der GetObject-Funktion verwendet die folgenden benannten Argumente:
| Teil | Beschreibung |
| Pathname | Optional. Ein Wert vom Typ Variant (String). Der vollständige Pfad und Name der Datei, die das abzurufende Objekt enthält. Wird Pathname nicht angegeben, so ist Class erforderlich. |
| Class | Optional. Ein Wert vom Typ Variant (String). Eine Zeichenfolge, die die Klasse des Objekts darstellt. |
Wird eine Datei bei Pathname angegeben, so muss ihr Pfad- und Dateiname entsprechend den Namenskonventionen der aktuellen Plattform angepasst werden.
Verwandte Themen
Unterschiede zwischen Windows und Macintosh: Dateipfade
Raise-Methode des Err-Objektes
Die Raise-Methode des Err-Objektes von VBA löst einen Laufzeitfehler aus.
Syntax
Err.Raise Number, [Source], [Description], [HelpFile], [HelpContext]
Die Raise-Methode funktioniert unter Windows und auf Macintosh identisch. Lediglich beim Argument HelpFile müssen Sie daran denken, dass der Pfad- und Dateiname der angegebenen Hilfedatei an die jeweils vorhandene Plattform angepasst werden muss.
Verwandte Themen
Unterschiede zwischen Windows und Macintosh: Dateipfade
Die FreeFile-Funktion gibt einen Wert vom Typ Integer zurück, der die nächste verfügbare Dateinummer darstellt, die die Open-Anweisung zum Öffnen einer Datei verwenden kann.
Syntax
FreeFile([Bereichsnummer])
Die FreeFile-Funktion funktioniert unter Windows und auf Macintosh genau gleich. Man muss jedoch beachten, dass je nach Konfiguration des Rechners (egal ob PC oder Macintosh) der Aufruf von FreeFile mehr oder weniger schnell zum Laufzeitfehler 67 "Zu viele Dateien" führen kann.
Verwandte Themen
Fehlermeldung: Zu viele Dateien (Fehler 67)
SendKeys sendet eine Tastenfolge, die aus einem oder mehreren Tastenanschlägen bestehen kann, an das aktive Fenster, als ob sie über die Tastatur eingegeben worden wäre.
Es ist nicht eindeutig erkennbar, ob die SendKeys-Anweisung auf dem Macintosh verfügbar ist oder nicht.
TODO
Wenn Sie SendKeys auf dem Macintosh ausführen, tritt der Laufzeitfehler 5 "Unzulässiger Prozeduraufruf oder ungültiges Argument" auf.
Verwandte Themen
Senden von Tastenfolgen
Eine umfassende Dokumentation zum Thema "Senden von Tastenbefehlen" finden Sie hier:
Dokumentation |
StrConv-Funktion (StrConv-Konstanten)
Die StrConv-Funktion wandelt eine Zeichenfolge um. Sie gibt einen Wert vom Typ Variant (String) zurück, der wie angegeben umgewandelt wurde.
Syntax
StrConv(String, Conversion)
Die Einstellungen für das Argument Conversion sind:
| Konstante | Wert | Beschreibung |
| vbUpperCase | 1 | Wandelt die Zeichenfolge in Grossbuchstaben um. |
| vbLowerCase | 2 | Wandelt die Zeichenfolge in Kleinbuchstaben um. |
| vbProperCase | 3 | Wandelt den Anfangsbuchstaben in jedem Wort der Zeichenfolge in einen Grossbuchstaben um. |
| vbWide | 4 | Wandelt schmale Zeichen (Einzelbyte) in der Zeichenfolge in breite Zeichen (Doppelbyte) um. Betrifft Gebietsschemata Fernost. |
| vbNarrow | 8 | Wandelt breite Zeichen (Doppelbyte) in der Zeichenfolge in schmale Zeichen (Einzelbyte) um. Betrifft Fernost-Gebietsschemata. |
| vbKatakana | 16 | Wandelt Hiragana-Zeichen in der Zeichenfolge in Katakana-Zeichen um. Betrifft nur Japan. |
| vbHiragana | 32 | Wandelt Katakana-Zeichen in der Zeichenfolge in Hiragana-Zeichen um. Betrifft nur Japan. |
| vbUnicode | 64 | Wandelt die Zeichenfolge unter Verwendung der Standard-Zeichenumsetzungstabelle des Systems in Unicode um. Nicht verfügbar auf dem Macintosh. |
| vbFromUnicode | 128 | Wandelt die Zeichenfolge unter Verwendung der Standard-Zeichenumsetzungstabelle des Systems aus Unicode um. Nicht verfügbar auf dem Macintosh. |
Wie der obigen Tabelle entnommen werden kann, stehen die beiden Konstanten vbUnicode und vbFromUnicode auf dem Macintosh nicht zur Verfügung. Bei Verwendung dieser Konstanten auf Macintosh tritt ein Laufzeitfehler auf.
Eine vollständige Liste der Konstanten-Inkompatibilitäten finden Sie unter Unterschiede bei integrierten Konstanten.
Verwandte Themen
Unicode-Zeichenfolgen
Die Asc-Funktion gibt einen Wert vom Typ Integer zurück, der den Zeichencode entsprechend dem ersten Buchstaben in einer Zeichenfolge darstellt. Die AscW-Funktion gibt den Unicode-Zeichencode zurück.
Visual Basic für den Macintosh unterstützt keine Unicode-Zeichenfolgen. Daher kann AscW(n) nicht alle Unicode-Zeichen für n Werte im Bereich von 128 65'535 zurückgeben, wie das in der Windows-Umgebung passiert. Statt dessen versucht AscW(n), die Unicode-Werte zu "erraten", für die n grösser als 127 ist. Sie sollten daher AscW nicht in der Macintosh-Umgebung verwenden.
Verwandte Themen
Unicode-Zeichenfolgen
Die Chr-Funktion gibt einen Wert vom Typ String zurück, der das Zeichen enthält, das dem angegebenen Zeichen-Code zugeordnet ist. Die ChrW-Funktion gibt einen Wert vom Typ String zurück, der das Unicode-Zeichen enthält.
Visual Basic für den Macintosh unterstützt keine Unicode-Zeichenfolgen. Deshalb kann ChrW(n) nicht wie in der Windows-Umgebung alle Unicode-Zeichen für n Werte im Bereich von 128 bis 65'535 zurückgeben. Statt dessen versucht ChrW(n), für Unicode-Werte, bei denen n grösser als 127 ist, den Wert zu "erraten". Sie sollten ChrW daher nicht in der Macintosh-Umgebung verwenden.
Anmerkung
In der Referenz von VBA 5 (Office 97 für Windows, Office 98 für Macintosh, Office 2001 für Macintosh und Office v.X für Macintosh) steht nicht exakt das gleiche wie in der Referenz von VBA 6 (ab Office 2000 für Windows bzw. ab Office 2004 für Macintosh). In der VBA 5-Referenz ist angegeben, dass auf Macintosh die ChrW-Funktion das gleiche Zeichen wie die Chr-Funktion zurückgibt. In der VBA 6-Referenz steht jedoch, dass man auf Macintosh die ChrW-Funktion nicht verwenden sollte.
Verwandte Themen
Unicode-Zeichenfolgen
Mit der Timer-Funktion erhält man einen Wert vom Typ Single (Gleitkommazahl mit einfacher Genauigkeit) zurück, der die Anzahl der seit Mitternacht vergangenen Sekunden angibt.
Unter Microsoft Windows gibt die Timer-Funktion Bruchteile einer Sekunde zurück (z.B. 48651.43). Die kleinste Einheit ist Hundertstel-Sekunde. Auf dem Macintosh ist die Einheit dagegen eine Sekunde.
Die RGB-Funktion gibt einen Wert vom Typ Long zurück, der einen RGB-Farbwert (red, green, blue) darstellt.
Die von dieser Funktion zurückgegebenen RGB-Farbwerte sind nicht mit den vom Macintosh-Betriebssystem zurückgegebenen Werten kompatibel. Sie können im Zusammenhang mit Microsoft-Anwendungen für den Macintosh verwendet werden, sollten aber nicht zum Einsatz kommen, wenn Farbänderungen direkt dem Macintosh-Betriebssystem mitgeteilt werden.
Speichert oder erstellt einen Eintrag einer Anwendung in der Windows-Registrierung oder, auf dem Macintosh, die entsprechenden Informationen in der Initialisierungsdatei der Anwendung.
Anmerkung zum Argument appname
Das Argument appname ist erforderlich und enthält einen Zeichenfolgenausdruck mit dem Namen der Anwendung oder des Projekts, deren/dessen Schlüsseleinstellungen angefordert werden. Auf dem Macintosh ist dies der Name der Initialisierungsdatei im Ordner Preferences aus dem Systemordner.
Gibt einen Wert einer Schlüsseleinstellung aus dem Eintrag einer Anwendung in der Windows-Registrierung oder, auf dem Macintosh, die entsprechenden Informationen aus der Initialisierungsdatei der Anwendung zurück.
Anmerkung zum Argument appname
Das Argument appname ist erforderlich und enthält einen Zeichenfolgenausdruck mit dem Namen der Anwendung oder des Projekts, deren/dessen Schlüsseleinstellungen angefordert werden. Auf dem Macintosh ist dies der Name der Initialisierungsdatei im Ordner Preferences aus dem Systemordner.
Gibt eine Liste von Schlüsseleinstellungen zusammen mit den zugehörigen Werten (die ursprünglich mit SaveSetting erstellt wurden) für den Eintrag einer Anwendung in der Windows-Registrierung oder, auf dem Macintosh, die entsprechenden Informationen aus der Initialisierungsdatei der Anwendung zurück.
Anmerkung zum Argument appname
Das Argument appname ist erforderlich und enthält einen Zeichenfolgenausdruck mit dem Namen der Anwendung oder des Projekts, deren/dessen Schlüsseleinstellungen angefordert werden. Auf dem Macintosh ist dies der Name der Initialisierungsdatei im Ordner Preferences aus dem Systemordner.
Löscht einen Abschnitt oder eine Schlüsseleinstellung aus einem Eintrag einer Anwendung in der Windows-Registrierung oder, auf dem Macintosh, die entsprechenden Informationen in der Initialisierungsdatei der Anwendung.
Anmerkung zum Argument appname
Das Argument appname ist erforderlich und enthält einen Zeichenfolgenausdruck mit dem Namen der Anwendung oder des Projekts, deren/dessen Schlüsseleinstellungen angefordert werden. Auf dem Macintosh ist dies der Name der Initialisierungsdatei im Ordner Preferences aus dem Systemordner.
Stellt das aktuelle Systemdatum ein.
Syntax
Date = Datum
- Auf Systemen vom Typ Microsoft Windows 95 muss das mit
dem Argument Datum angegebene Datum zwischen dem 1. Januar 1980 und dem 31.
Dezember 2099 (einschliesslich) liegen.
- Auf Systemen vom Typ Microsoft Windows NT muss das mit dem Argument Datum
angegebene Datum zwischen dem 1. Januar 1980 und dem 31. Dezember 2079 (einschliesslich)
liegen.
- Beim Macintosh muss Datum ein Tag zwischen dem 1. Januar 1904 und dem 5.
Februar 2040 sein.
Verwandte Themen
1900 und 1904 Datumssystem von
Microsoft Excel
Die Declare-Anweisung deklariert auf Modulebene Verweise auf externe Prozeduren in einer Dynamic Link Library (DLL) oder Code-Ressource (Macintosh).
Syntax 1
[Public | Private] Declare Sub Name Lib "BibName" [Alias "Aliasname"] [([ArgListe])]
Syntax 2
[Public | Private] Declare Function Name Lib "BibName" [Alias "Aliasname"] [([ArgListe])] [As Typ]
Syntax 3 (Power Macintosh)
[Public | Private ] Declare Function Name [CDecl] Lib "BibName" [Alias "Aliasname" ] [([ArgListe])] [As Typ]
Die Syntax der Declare-Anweisung besteht aus folgenden Teilen:
| Teil | Beschreibung |
| Public | Optional. Deklariert Prozeduren, die allen anderen Prozeduren in allen Modulen zur Verfügung stehen. |
| Private | Optional. Deklariert Prozeduren, die nur innerhalb des Moduls verfügbar sind, in dem sie deklariert wurden. |
| Sub | Optional (entweder Sub oder Function muss auftreten). Die Prozedur gibt keinen Wert zurück. |
| Function | Optional (entweder Sub oder Function muss auftreten). Die Prozedur gibt einen Wert zurück, der in einem Ausdruck verwendet werden kann. |
| Name | Erforderlich. Ein beliebiger gültiger Name für eine Prozedur. Beachten Sie, dass bei den Namen der DLL-Einsprungpunkte zwischen Gross-/Kleinschreibung unterschieden wird. |
| Lib | Erforderlich. Die deklarierte Prozedur ist in einer DLL oder Code-Ressource enthalten. Der Lib-Abschnitt ist bei allen Deklarationen erforderlich. |
| BibName | Erforderlich. Name der DLL oder Code-Ressource, die die deklarierte Prozedur enthält. |
| Alias | Optional. Gibt an, dass die aufgerufene Prozedur
in der DLL einen anderen Namen hat. Dies ist sinnvoll, wenn der Name einer externen
Prozedur einem Schlüsselwort entspricht. Alias kann auch verwendet werden, wenn
eine DLL-Prozedur denselben Namen hat wie eine öffentliche Variable, Konstante oder eine
andere Prozedur mit demselben Gültigkeitsbereich. Alias bietet sich darüber
hinaus an, wenn bestimmte Zeichen im Namen der DLL-Prozedur aufgrund der Namenskonvention
für DLLs nicht zulässig sind. Auf dem Power Macintosh kann das Schlüsselwort Alias auch verwendet werden, um anzuzeigen, dass die aufgerufene Prozedur sich in einer Macintosh Code-Ressource befindet. |
| Aliasname | Optional. Name der Prozedur in der DLL oder
Code-Ressource. Wenn das erste Zeichen nicht das Zeichen # ist, gibt Aliasname den Namen
des Einsprungpunktes in der DLL an. Ist das Zeichen # das erste Zeichen, so müssen alle
nachfolgenden Zeichen die Ordnungszahl (laufende Nummer) für den Einsprungpunkt in die
Prozedur angeben. Auf dem Power Macintosh kann Aliasname folgendermassen verwendet werden, um den Typ der Code-Ressource anzugeben: "[Ressourcentyp]$[Ressourcenname]" Der Ressourcentyp ist eine beliebige zulässige Konstante. Wird sie nicht angegeben, so ist der Standard-Ressourcentyp CODE. Der Ressourcenname ist der Name der Prozedur in der Code-Ressource. Wird Ressourcenname weggelassen, so wird Name als Ressourcenname angenommen. |
| ArgListe | Optional. Variablenliste mit den Argumenten, die beim Aufruf an die Prozedur übergeben werden. |
| Typ | Optional. Datentyp des Rückgabewerts einer Function-Prozedur. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (nur Zeichenfolgen variabler Länge) oder Variant, ein benutzerdefinierter Typ oder ein Objekttyp. |
| CDecl | Auf dem Power Macintosh kann das Schlüsselwort CDecl verwendet werden, um anzuzeigen, dass die Prozedur die Argument-Reihenfolge, Namens- und Aufrufkonventionen der Sprache C verwendet. |
Das Argument ArgListe hat die folgende Syntax und die folgenden Teile:
[Optional] [ByVal | ByRef] [ParamArray] VarName[( )] [As Typ]
| Teil | Beschreibung |
| Optional | Optional. Ein Argument ist nicht erforderlich. Alle im Anschluss an Optional in ArgListe angegebenen Argumente müssen ebenfalls optional sein und mit dem Schlüsselwort Optional deklariert werden. Optional kann nicht verwendet werden, wenn ParamArray verwendet wird. |
| ByVal | Optional. Das Argument wird als Wert übergeben. |
| ByRef | Das Argument wird als Referenz übergeben. ByRef ist die Voreinstellung in Visual Basic. |
| ParamArray | Optional. Wird nur als letztes Argument in ArgListe verwendet und gibt an, dass das letzte Argument ein Datenfeld vom Typ Optional aus Elementen vom Typ Variant ist. Das Schlüsselwort ParamArray erlaubt die Angabe einer variablen Anzahl von Argumenten und darf nicht in Kombination mit den Schlüsselwörtern ByVal, ByRef oder Optional verwendet werden. |
| VarName | Erforderlich. Name der Variablen, die das an die Prozedur zu übergebende Argument darstellt. Der Name muss den Standardkonventionen für Namen von Variablen entsprechen. |
| ( ) | Erforderlich für Datenfeldvariablen. Zeigt an, dass VarName ein Datenfeld ist. |
| Typ | Optional. Datentyp des an die Prozedur übergebenen Arguments. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (nur Zeichenfolgen variabler Länge), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp. |
Bemerkungen
In Function-Prozeduren legt der Datentyp für die Prozedur den Datentyp des Rückgabewerts fest. Mit einem As-Abschnitt im Anschluss an ArgListe können Sie den Rückgabetyp der Funktion festlegen. Innerhalb von ArgListe legen Sie mit einem As-Abschnitt den Datentyp der einzelnen an die Prozedur übergebenen Argumente fest. Neben den Standard-Datentypen können Sie an dieser Stelle auch As Any in ArgListe angeben, um die Typprüfung zu unterdrücken und einen beliebigen Datentyp an die Prozedur zu übergeben.
Ein leeres Klammernpaar steht für eine Sub- oder Function-Prozedur ohne Argumente und weist darauf hin, dass Visual Basic keine Argumente übergeben soll. Im folgenden Beispiel wird "Erster" ohne Argumente deklariert. Wenn Sie beim Aufruf von "Erster" ein Argument verwenden, tritt ein Fehler auf:
Declare Sub Erster Lib "MeineLib" ()
Wenn Sie eine Argumentliste angeben, werden die Anzahl und der Typ der Argumente bei jedem Prozeduraufruf überprüft. Im folgenden Beispiel erwartet "Erster" ein Argument vom Typ Long:
Declare Sub Erster Lib "MeineLib" (X As Long)
Anmerkung
Zeichenfolgen fester Länge sind in der Argumentliste einer Declare-Anweisung nicht zulässig, da nur Zeichenfolgen variabler Länge an eine Prozedur übergeben werden können. Zeichenfolgen fester Länge sind als Prozedurargumente zwar zulässig, werden aber vor der Übergabe in Zeichenfolgen variabler Länge umgewandelt.
Anmerkung
Die Konstante vbNullString wird von Visual Basic für den Aufruf externer Prozeduren verwendet, wenn die externe Prozedur eine Zeichenfolge mit dem Wert Null erfordert. Eine solche Zeichenfolge ist nicht mit einer Null-Zeichenfolge ("") identisch.
Auf dem Power Macintosh unterstützt die Declare-Anweisung Aufrufe von native Code nur in Codefragmenten. Der Aufruf von Code in Code-Ressourcen wird ebenfalls unterstützt, aber nur im 68000-Emulationsmodus.
Bei Verwendung auf dem Power Macintosh ist die Syntax der Declare-Anweisung folgende:
Declare Function MeineFunktion Lib "hd:Systemordner:Systemerweiterungen:MeinCodeFragment" Alias "MeineFunktion" () As Long
Sowohl bei Codefragmenten als auch bei Code-Ressourcen kann ein vollständiger oder teilweiser Pfadname in der Lib-Klausel angegeben werden. Falls die angegebene Lib-Klausel mehrdeutig ist, wird sie folgendermassen aufgelöst:
Damit ist die Erstellung von "Fat"-Codefragmenten möglich, d.h. von Dateien, die sowohl Code-Fragmente als auch 68000-Code-Ressourcen enthalten. Bei Ausführung von Visual Basic for Applications auf einem 68000-Macintosh wird die Code-Ressource verwendet. Bei Ausführung auf einem Power Macintosh wird das native Codefragment verwendet.
Die Macintosh-Toolbox ist auf dem Power Macintosh mit Hilfe einer Deklaration in das Codefragment des Systems zugänglich.
In diesem Beispiel wird die Verwendung der Declare-Anweisung auf Modulebene eines Standardmoduls gezeigt, um einen Verweis auf eine externe Prozedur in einer Dynamic Link Library (DLL) oder Macintosh-Code-Ressource zu deklarieren. Sie können Declare-Anweisungen in Klassenmodulen angeben, wenn die Declare-Anweisungen das Attribut Private haben.
Code für Microsoft Windows (16-Bit):
Declare Sub MessageBeep Lib "User" (ByVal N
As Integer)
' Signal1 ist ein Alias für den Prozedurnamen.
Declare Sub MessageBeep Lib "User" Alias "Signal1"(ByVal N As Integer)
' Laufende Nummer in Alias-Abschnitt zum Aufruf von GetWinFlags
verwenden.
Declare Function GetWinFlags Lib "Kernel" Alias "#132"() As Long
Code für Microsoft Windows (32-Bit und 16-Bit):
' Geben Sie in 32-Bit Microsoft
Windows-Systemen nicht die Bibliothek USER.DLL an, sondern USER32.DLL.
' Mit bedingter Kompilierung können Sie Code schreiben, der sowohl unter Win32 als
auch unter Win16 ausgeführt werden kann.
#If Win32 Then
Declare Sub MessageBeep Lib "User32" (ByVal N As Long)
#Else
Declare Sub MessageBeep Lib "User" (ByVal N As Integer)
#End If
Code für Macintosh:
Declare Sub MessageAlert Lib "HD1:Warnung1" Alias
"Warnung1" (ByVal N As Integer)
' Code-Ressource in Alias-Abschnitt verwenden.
Declare Sub MessageAlert Lib "HD1:Warnung1" Alias "XTST$Warnung1"
(ByVal N As Integer)
' Wenn der Typbezeichner der
Code-Ressource nur 3 Zeichen hat, müssen Sie ein Leerzeichen an der Stelle stehen lassen,
' an der das letzte Zeichen normalerweise stehen würde.
Declare Sub MessageAlert Lib "HD1:EineWarnung" Alias "COD
$EineWarnung" (ByVal N As Integer)
Verwandte Themen
CDecl-Schlüsselwort
Auf dem Power Macintosh kann in einer Declare-Anweisung das Schlüsselwort CDecl verwendet werden, um anzuzeigen, dass die Prozedur die Argument-Reihenfolge, Namens- und Aufrufkonventionen der Sprache C verwendet.
Syntax der Declare-Anweisung (Power Macintosh)
[Public | Private] Declare Function Name [CDecl] Lib "BibName" [Alias "Aliasname" ] [([ArgListe])] [As Typ]
Das CDecl-Schlüsselwort steht nur auf Macintosh zur Verfügung. Bei Verwendung von CDecl unter Windows tritt der Laufzeitfehler 49 "Falsche DLL-Aufrufkonvention" auf, sobald die externe Funktion aufgerufen wird.
Verwandte Themen
Declare-Anweisung
Laufzeitfehler 49 "Falsche DLL-Aufrufkonvention"
Die MacScript-Funktion führt ein AppleScript-Skript aus und gibt durch das Skript einen Wert zurück, falls vorhanden. Sie ist nur auf dem Macintosh verfügbar.
Syntax
MacScript Skript
Das Argument Skript ist ein Zeichenfolgenausdruck. Der Zeichenfolgenausdruck kann entweder eine Reihe von AppleScript-Befehlen repräsentieren oder den Namen eines AppleScript-Skripts oder eine Skriptdatei angeben.
Anmerkung
Weil die MacScript-Funktion zum Standard-Sprachumfang von VBA gehört, kann der Programmcode auf beiden Plattformen fehlerfrei kompiliert werden (d.h. es tritt kein Kompilierungsfehler auf). Wird aber eine Codezeile mit MacScript unter Windows ausgeführt, tritt der Laufzeitfehler 5 "Ungültiger Prozeduraufruf oder ungültiges Argument" auf, weil die Funktion nicht aufgerufen werden kann. Die Codezeile darf nur dann ausgeführt werden, wenn das Programm auf dem Macintosh läuft.
Ob ein Macintosh- oder Windows-System vorliegt, kann sehr einfach abgefragt werden. Wie das geht, erfahren Sie unter Abfragen der Ausführungsumgebung.
Die MacID-Funktion wird auf dem Macintosh verwendet, um eine 4-Zeichen-Konstante in einen Wert umzuwandeln, der von Dir, Kill, Shell und AppActivate verwendet werden kann.
Syntax
MacID(Konstante)
Das erforderliche Argument Konstante besteht aus vier Zeichen, die verwendet werden, um einen Ressourcentyp, Dateityp, eine Anwendungssignatur oder ein Apple-Ereignis anzugeben. Beispiele:
Bemerkungen zu Dir und Kill
MacID wird mit Dir und Kill verwendet, um einen Macintosh-Dateityp anzugeben. Da der Macintosh die Platzhalterzeichen * und ? nicht unterstützt, können Sie eine 4-Zeichen-Konstante verwenden, anstatt Gruppen von Dateien zu kennzeichnen. Die folgende Anweisung gibt z.B. alle Dateien vom Typ TEXT im aktuellen Ordner zurück:
Dir("EinPfad", MacID("TEXT"))
Bemerkungen zu Shell und AppActivate
MacID wird mit Shell und AppActivate verwendet, um eine Anwendung anzugeben, die die eindeutige Signatur dieser Anwendung verwendet.
In diesem Beispiel werden verschiedene Einsatzmöglichkeiten der MacID-Funktion aufgezeigt. Die MacID-Funktion steht unter Microsoft Windows nicht zur Verfügung.
Dim strFilename As String, lngResult As Long
' Die erste Textdatei im Ordner HD:ORDNER1 zurückgeben.
strFilename = Dir("HD:ORDNER1:", MacID("TEXT"))
' Alle Dateien vom Typ
"TEXT" im aktuellen Ordner löschen.
Kill MacID("TEXT")
' Microsoft Excel starten.
lngResult = Shell(MacID("XCEL"))
' Microsoft Word aktivieren.
AppActivate MacID("MSWD")
Anmerkung
Weil die MacID-Funktion zum Standard-Sprachumfang von VBA gehört, kann der Programmcode auf beiden Plattformen fehlerfrei kompiliert werden (d.h. es tritt kein Kompilierungsfehler auf). Wird aber eine Codezeile mit MacID unter Windows ausgeführt, tritt in den meisten Fällen der Laufzeitfehler 5 "Ungültiger Prozeduraufruf oder ungültiges Argument" auf, weil die Funktion nicht aufgerufen werden kann. In bestimmten Situationen kann auch ein anderer Laufzeifehler auftreten. Beispielsweise erscheint der Laufzeitfehler 53 "Datei nicht gefunden", wenn die MacID-Funktion zusammen mit Shell verwendet wird. Die Codezeile darf nur dann ausgeführt werden, wenn das Programm auf dem Macintosh läuft.
Ob ein Macintosh- oder Windows-System vorliegt, kann sehr einfach abgefragt werden. Wie das geht, erfahren Sie unter Abfragen der Ausführungsumgebung.
Verwandte Themen
Shell-Funktion
Dir-Funktion
Kill-Anweisung
AppActivate-Anweisung
Kennzeichnen von Konstanten mit einem Bibliotheksverweis
TODO
Sie können einen Verweis auf eine Konstante mit folgender Syntax kennzeichnen:
[BibName.][Modulname.]KonstName
Die Syntax für zu qualifizierende Konstanten besteht aus diesen Teilen:
| Teil | Beschreibung |
| BibName | Optional. Der Name der Klassenbibliothek, die die Konstante definiert. Für die meisten benutzerdefinierten Steuerelemente (nicht verfügbar beim Macintosh) ist dies auch der Klassenname des Steuerelements. Wenn Sie sich nicht mehr an den Klassennamen des Steuerelements erinnern, führen Sie den Mauszeiger über das Steuerelement in der Werkzeugsammlung. Der Klassenname wird in der QuickInfo angezeigt. |
| Modulname | Optional. Der Name des Moduls innerhalb der Klassenbibliothek, die die Konstante definiert hat. Sie können den Namen des Moduls im Objektkatalog finden. |
| KonstName | Der für die Konstante definierte Name in der Klassenbibliothek. |
Die Konstante vbNewLine existiert auf beiden Plattformen, verhält sich jedoch unterschiedlich, sprich besitzt einen anderen Inhalt.
| Plattform | Merkmal |
| Windows | Die Konstante vbNewLine enthält die Zeichen Chr(13) + Chr(10). vbNewLine entspricht somit der Konstante vbCrLf. |
| Macintosh | Die Konstante vbNewLine enthält das Zeichen Chr(13). vbNewLine entspricht somit der Konstante vbCr. |
Wenn Sie vbNewLine verwenden, müssen Sie daran denken, dass sie unter Windows zwei Zeichen lang ist, auf einem Macintosh-Rechner dagegen nur ein Zeichen.
TODO
Um mögliche Probleme zu vermeiden, sollten ...
Eine vollständige Liste der Konstanten-Inkompatibilitäten finden Sie unter Unterschiede bei integrierten Konstanten.
Die MsgBox-Funktion zeigt eine Meldung in einem Dialogfeld an und wartet darauf, dass der Benutzer auf eine Schaltfläche klickt. Es wird dann einen Wert vom Typ Integer zurückgegeben, der anzeigt, auf welche Schaltfläche der Benutzer geklickt hat.
Syntax
MsgBox(Prompt[, Buttons] [, Title] [, HelpFile, Context])
In der VBA-Referenz von Microsoft steht folgendes (Thema "MsgBox-Funktion", Originaltext):
Wenn sowohl HelpFile als auch Context angeben werden, kann der Benutzer F1 (Windows) oder HILFE (Macintosh) drücken, um das Hilfethema für Context anzuzeigen. Einige Host-Anwendungen, zum Beispiel Microsoft Excel, fügen dem Dialogfeld automatisch die Schaltfläche "Hilfe" hinzu.
Die obige Information stimmt nur für Windows-Systeme! Auf einem Macintosh-Rechner wird keine Schaltfläche "Hilfe" hinzugefügt.
TODO
vbMsgBoxHelpButton (16384)
Mehr zum Problem mit der vermissten
"Hilfe"-Schaltfläche erfahren Sie hier:
MacOFF: Help Button
Is Missing in VBA Macro Message Box
http://support.microsoft.com/?scid=kb;en-us;205191
TODO: Dateipfad in HelpFile
Verwandte Themen
InputBox-Funktion
InputBox-Methode (Excel)
Die InputBox-Funktion zeigt eine Eingabeaufforderung in einem Dialogfeld an, wartet auf die Eingabe eines Textes oder auf das Klicken auf eine Schaltfläche und gibt einen Wert vom Typ String zurück, der den Inhalt des Textfeldes angibt.
Syntax
InputBox(Prompt[, Title] [, Default] [, XPos] [, YPos] [, HelpFile, Context])
Es ist nicht klar erkennbar, ob InputBox korrekt funktioniert, oder wie die MsgBox-Funktion einen Bug besitzt.
TODO: Dateipfad in HelpFile
Verwandte Themen
MsgBox-Funktion
InputBox-Methode (Excel)
Die Option Compare-Anweisung wird auf Modulebene verwendet, um das Standardverfahren für den Vergleich von Zeichenfolgen festzulegen.
Syntax
Option Compare {Binary | Text | Database}
Die Option Compare-Anweisung legt das Verfahren für den Zeichenfolgenvergleich (Binary, Text oder Database) innerhalb eines Moduls fest. Enthält ein Modul keine Option Compare-Anweisung, so ist Binary das verwendete Standardverfahren.
Auf dem Macintosh wird die Sortierreihenfolge durch den Zeichensatz bestimmt.
Anmerkung
Aufgrund der Beschreibung in der Visual Basic-Referenz ist nicht klar erkennbar, ob auf einem Macintosh-Computer die Option Compare-Anweisung überhaupt eine Auswirkung besitzt. Es wird daher empfohlen, diese Anweisung generell nicht zu verwenden.
Die Environ-Funktion gibt die mit einer Betriebssystem-Umgebungsvariablen verbundene Zeichenfolge (String) zurück.
Diese Funktion ist auf dem Macintosh nicht verfügbar. Wird sie auf dem Macintosh verwendet, tritt der Laufzeitfehler 5 "Unzulässiger Prozeduraufruf oder ungültiges Argument" auf.
LastDLLError-Eigenschaft des Err-Objektes
Gibt einen Systemfehler-Code zurück, der von einem Aufruf an eine Dynamic Link Library (DLL) erzeugt wurde. Schreibgeschützt.
Auf dem Macintosh gibt LastDLLError immer Null zurück.
Unterschiede im Objektmodell von Microsoft Excel
In diesem Kapitel geht es um diejenigen Sprachelemente von VBA, die auf Macintosh und unter Windows verschieden sind.
nicht auf beiden Plattformen funktionieren,
unterschiedliche Ergebnisse liefern
Nachfolgend werden sämtliche derzeit bekannten Unterschiede ausführlich beschrieben. Die Microsoft VBA-Referenz enthält mehrere Fehler, die in den nachstehenden Beschreibungen korrigiert sind.
| Element | Typ | Element von | Bibliothek |
| Creator | Eigenschaft | Diverse Excel-Objekte | Excel |
| GetSaveAsFilename | Methode | Application-Objekt | Excel |
| GetOpenFilename | Methode | Application-Objekt | Excel |
| InputBox | Methode | Application-Objekt | Excel |
| PathSeparator | Eigenschaft | Application-Objekt | Excel |
| LibraryPath | Eigenschaft | Application-Objekt | Excel |
| CommandUnderlines | Eigenschaft | Application-Objekt | Excel |
| ActivateMicrosoftApp | Methode | Application-Objekt | Excel |
| Connection | Eigenschaft | PivotCache- und QueryTable-Objekt | Excel |
Creator-Eigenschaft (Verschiedene Excel-Objekte)
Die Creator-Eigenschaft gibt den aus vier Zeichen bestehenden Code für die Anwendung zurück, in der das angegebene Objekt erstellt wurde. Nur Macintosh. Long. Nur-Lese-Zugriff.
Bei Verwendung unter Windows tritt kein Fehler auf. In Excel für Windows wird der Wert 1480803660 zurückgegeben.
Verwandte Themen
Creator Code
GetSaveAsFilename-Methode des Application-Objektes (Excel)
Die GetSaveAsFilename-Methode des Application-Objektes zeigt das Standarddialogfeld "Speichern unter" an und bekommt einen Dateinamen vom Benutzer, ohne jedoch irgendwelche Dateien zu speichern.
Syntax
Ausdruck.GetSaveAsFilename([InitialFilename], [FileFilter], [FilterIndex], [Title], [ButtonText])
Das optionale Argument ButtonText existiert nur auf Macintosh. Genauer gesagt besitzt es nur auf dem Macintosh eine Auswirkung. Wenn Sie ButtonText angeben und den Programmcode unter Windows ausführen, wird das Argument ignoriert. Es tritt kein Fehler auf.
Diese Codezeile funktioniert auf beiden Plattformen, ändert aber nur auf dem Macintosh die Beschriftung der Schaltfläche:
strFile = Application.GetSaveAsFilename(Title:="Datei kopieren", ButtonText:="Kopieren")
Da es in diesem Fall kein Inkompatibilitätsproblem gibt, müssen keine plattformspezifischen Anpassungen vorgenommen werden. Man muss lediglich daran denken, dass in der Programm-Dokumentation, beispielsweise in der Hilfe oder der Bedienungsanleitung Ihres Programmes, der korrekte Schaltflächentext angegeben wird. Bei der obigen Codezeile heisst die Schaltfläche in Excel für Macintosh "Kopieren" und in Excel für Windows "Speichern".
Verwandte Themen
GetOpenFilename-Methode des Application-Objektes
(Excel)
GetOpenFilename-Methode des Application-Objektes (Excel)
Die GetOpenFilename-Methode des Application-Objektes zeigt das Standarddialogfeld "Öffnen" an und bekommt einen Dateinamen vom Benutzer, ohne jedoch irgendwelche Dateien zu öffnen.
Syntax
Ausdruck.GetOpenFilename([FileFilter], [FilterIndex], [Title], [ButtonText], [MultiSelect])
Das optionale Argument ButtonText existiert nur auf Macintosh. Genauer gesagt besitzt es nur auf dem Macintosh eine Auswirkung. Wenn Sie ButtonText angeben und den Programmcode unter Windows ausführen, wird das Argument ignoriert. Es tritt kein Fehler auf.
Diese Codezeile funktioniert auf beiden Plattformen, ändert aber nur auf dem Macintosh die Beschriftung der Schaltfläche:
strFile = Application.GetOpenFilename(Title:="Datei importieren", ButtonText:="Importieren")
Da es in diesem Fall kein Inkompatibilitätsproblem gibt, müssen keine plattformspezifischen Anpassungen vorgenommen werden. Man muss lediglich daran denken, dass in der Programm-Dokumentation, beispielsweise in der Hilfe oder der Bedienungsanleitung Ihres Programmes, der korrekte Schaltflächentext angegeben wird. Bei der obigen Codezeile heisst die Schaltfläche in Excel für Macintosh "Importieren" und in Excel für Windows "Öffnen".
Tipp: FindFile-Methode verwenden
Wenn Sie das Standard-Dialogfeld "Öffnen" von Excel anzeigen möchten,
können Sie auch die FindFile-Methode des Application-Objektes
verwenden. Diese funktioniert auf beiden Plattformen.
Hier ein einfaches Beispiel:
Application.FindFile
Es lässt sich auch feststellen, ob der Benutzer die Abbrechen oder die Öffnen-Schaltfläche geklickt hat. Man muss dazu lediglich abfragen, ob FindFile True oder False zurückgegeben hat:
If Application.FindFile = False Then
MsgBox "Benutzer hat Abbrechen gedrückt.", vbInformation
Else
MsgBox "Benutzer hat Öffnen gedrückt und die ausgewählte Datei
geöffnet.", vbInformation
End If
Bei FindFile wird die ausgewählte Datei (beziehungsweise die ausgewählten Dateien) automatisch geöffnet. Das Auswahlfeld "Dateityp" wird automatisch gefüllt. Bei der GetOpenFilename-Methode muss man das Auswahlfeld im Programmcode füllen (FileFilter- und FilterIndex-Argument).
Verwandte Themen
GetSaveAsFilename-Methode des Application-Objektes
(Excel)
InputBox-Methode des Application-Objektes
Die InputBox-Funktion zeigt eine Eingabeaufforderung in einem Dialogfeld an, wartet auf die Eingabe eines Textes oder auf das Klicken auf eine Schaltfläche und gibt einen Wert vom Typ String zurück, der den Inhalt des Textfeldes angibt.
Syntax
InputBox(Prompt[, Title] [, Default] [, XPos] [, YPos] [, HelpFile, Context])
Es ist nicht klar erkennbar, ob InputBox korrekt funktioniert, oder wie die MsgBox-Funktion einen Bug besitzt.

Abbildung: InputBox von Microsoft Excel
TODO: Dateipfad in HelpFile
Verwandte Themen
MsgBox-Funktion
PathSeparator-Eigenschaft des Application-Objektes
Die PathSeparator-Eigenschaft des Application-Objektes von Microsoft Excel enthält das Zeichen, welches zum Trennen der einzelnen Bestandteile eines Pfades verwendet wird. Je nach Betriebssystem gibt PathSeparator ein anderes Zeichen zurück.
| Plattform | Wert von PathSeparator |
| Windows | Die Abfrage von PathSeparator gibt das Zeichen "\" zurück. |
| Macintosh | Die Abfrage von PathSeparator gibt das Zeichen ":" zurück. |
Wenn Sie aus zwei Zeichenfolgen einen Dateipfad zusammensetzen möchten, sollten Sie die PathSeparator-Eigenschaft von Microsoft Excel benutzen.
Die korrekte Lösung sieht so aus:
strFullname = strPath & Application.PathSeparator & strFile
Diese Lösung sollten Sie nicht verwenden, da sie nur auf Windows-Rechnern, nicht aber auf Macintosh funktioniert:
strFullname = strPath & "\" & strFile
Verwandte Themen
Unterschiede zwischen Windows und Macintosh: Dateipfade
LibraryPath-Eigenschaft des Application-Objektes
Die LibraryPath-Eigenschaft des Application-Objektes von Microsoft Excel enthält auf dem Macintosh als letztes Zeichen immer ein zusätzliches Pfadtrennzeichen (bei Macintosh ist das Pfadtrennzeichen der Doppelpunkt ':'). In Microsoft Excel für Windows ist dies nicht der Fall.
| Plattform | Wert von LibraryPath |
| Windows | Die Abfrage von LibraryPath gibt einen Pfad ohne
Pfadtrennzeichen (\) am Schluss zurück. Beispiel: C:\Programme\Microsoft Office\Office\Library |
| Macintosh | Die Abfrage von LibraryPath gibt einen Pfad mit
Pfadtrennzeichen (:) am Schluss zurück. Beispiel: Macintosh HD:Microsoft Office 98:Office:Excel Add-Ins: |
Microsoft empfiehlt, einen Pfad immer ohne abschliessendes Pfadtrennzeichen zu schreiben.
Beispiel
Mit diesem VBA-Makro wird das überzählige Zeichen entfernt. Der Code kann sowohl
in Excel für Windows als auch in Excel für Macintosh ausgeführt werden.
Sub GetGoodLibraryPath()
'Store the LibraryPath in a variable.
xLibraryPath = Application.LibraryPath
'If the LibraryPath ends in a colon...
If Right(xLibraryPath, 1) = ":" Then
'...remove the colon from the end of the path.
xLibraryPath = Left(xLibraryPath, Len(xLibraryPath) - 1)
End If
'Display the corrected LibraryPath.
MsgBox "The application's LibraryPath is " & xLibraryPath
End Sub
LibraryPath Includes Trailing Separator on
Macintosh
http://support.microsoft.com/?scid=kb;en-us;176803
Verwandte Themen
PathSeparator-Eigenschaft
Unterschiede zwischen Windows und Macintosh: Dateipfade
CommandUnderlines-Eigenschaft des Application-Objektes
Beschreibung folgt in Kürze...
ActivateMicrosoftApp-Methode des Application-Objektes
...
Die ActivateMicrosoftApp-Methode aktiviert eine Microsoft-Anwendung. Falls die Anwendung bereits ausgeführt wird, aktiviert diese Methode das betreffende Anwendungsfenster. Wird die Anwendung noch nicht ausgeführt, startet die Methode eine neue Instanz der Anwendung.
Syntax
Application.ActivateMicrosoftApp(Index)
Folgende Konstanten können für Index verwendet werden:
XlMSApplication-Konstanten
xlMicrosoftAccess (4)
xlMicrosoftFoxPro (5)
xlMicrosoftMail (3)
xlMicrosoftPowerPoint (2)
xlMicrosoftProject (6)
xlMicrosoftSchedulePlus (7)
xlMicrosoftWord (1)
Wenn die als Argument angegebene Office-Anwendung nicht auf dem Rechner installiert ist, erscheint der Laufzeitfehler 1004 mit einem entsprechenden Fehlermeldungstext (Beispiel 'FoxPro für Windows'):

Abbildung: Laufzeitfehler 1004 bei nicht vorhandener Anwendung
TODO: Parameter True und False
Die Connection-Eigenschaft existiert beim PivotCache- und beim QueryTable-Objekt und enthält die Verbindungsinformation zu der benutzten Datenquelle.
Bei einer QueryTable vom Typ "Web-Abfrage" enthält Connection die URL der verwendeten Web-Datenquelle.
Bei einer QueryTable vom Typ "Datenbankabfrage" enthält Connection die URL der verwendeten Web-Datenquelle.
?ActiveSheet.QueryTables(1).Connection
URL;http://webservices.pcquote.com/cgi-bin/excel.exe
Unterschiede im Objektmodell von Microsoft Office
In diesem Kapitel geht es um diejenigen Sprachelemente von VBA, die auf Macintosh und unter Windows verschieden sind.
nicht auf beiden Plattformen funktionieren,
unterschiedliche Ergebnisse liefern
Nachfolgend werden sämtliche derzeit bekannten Unterschiede ausführlich beschrieben. Die Microsoft VBA-Referenz enthält mehrere Fehler, die in den nachstehenden Beschreibungen korrigiert sind.
| Element | Typ | Element von | Bibliothek |
| Creator | Eigenschaft | Diverse Office-Objekte | Office |
| FileFind | Objekt | Office | Office |
| FileSearch | Objekt | Office | Office |
| Add | Methode | CommandBars-Auflistung | Office |
| FileName | Eigenschaft | Assistant-Objekt | Office |
Creator-Eigenschaft (Verschiedene Office-Objekte)
Die Creator-Eigenschaft gibt den aus vier Zeichen bestehenden Code für die Anwendung zurück, in der das angegebene Objekt erstellt wurde. Nur Macintosh. Long. Nur-Lese-Zugriff.
Bei Verwendung unter Windows tritt kein Fehler auf. In Excel für Windows wird der Wert 1480803660 zurückgegeben.
Verwandte Themen
Creator Code
FileFind-Objekt (nur Macintosh)
Das FileFind-Objekt stellt die Funktionen des Dialogfeldes "Dateien finden" dar und existiert ausschliesslich für Macintosh. Das Objekt befindet sich in der Objektbibliothek von Microsoft Office und wird durch die Klasse IFind repräsentiert. Unter Windows wird anstelle des FileFind-Objektes das FileSearch-Objekt verwendet.
Anmerkung
Verwechseln Sie FileFind nicht mit FindFile. FindFile
ist eine Methode des Application-Objektes von Microsoft Excel und dient zum
Anzeigen des Öffnen-Dialoges.
Das FileFind-Objekt
Das FileFind-Objekt besitzt folgende Methoden und
Eigenschaften, die nachfolgend kurz vorgestellt werden:
- FileFindResults
- Results
- Execute
- View
- FileType
- Author
- DateCreatedFrom
- DateCreatedTo
- DateSavedFrom
- DateSavedTo
- Keywords
- ListBy
- Load
- Save
- Delete
- Show
- MatchCase
- Options
FileFindResults-Objekt des FileFind-Objektes
Stellt die Liste der von einer Dateisuche zurückgegebenen Dateien dar.
Results-Eigenschaft des FileFind-Objektes
Nur Macintosh. Gibt das FileFindResults-Objekt zurück. Nur-Lese-Zugriff.
Execute-Methode des FileFind-Objektes
Nur Macintosh. Beginnt die Suche nach den angegebenen Dateien und aktualisiert die FindFileResults-Auflistung.
View-Eigenschaft des FileFind-Objektes
Nur Macintosh. Gibt das Format zurück, in dem Informationen zu den gefundenen Dateien im Dialogfeld angezeigt werden, oder legt das Format fest. Dies kann eine der folgenden msoFileFindView-Konstanten sein: msoFileFindViewFileInfo, msoFileFindViewPreview oder msoFileFindViewSummary. Variant. Nur-Lese-Zugriff.
Achtung!
In der Microsoft Office 8.0-Bibliothek (Office 97) heissen die Konstanten msoViewFileInfo,
msoViewPreview und msoViewSummary.
FileType-Eigenschaft des FileFind-Objektes
Gibt den Dateityp zurück, nach dem gesucht werden soll, oder legt ihn fest. Der Wert kann auf eine Zahl festgelegt werden, die von der MacID-Funktion zurückgegeben wird. Nur Macintosh. Long Schreib-Lese-Zugriff.
Anmerkungen
Verwenden Sie die in der folgenden Tabelle aufgelisteten Argumente mit der MacID-Funktion, um den entsprechenden
Macintosh-Dateityp zurückzugeben:
Author-Eigenschaft des FileFind-Objektes
Nur Macintosh. Gibt eine Zeichenkette (bis zu 80 Zeichen) zurück, die den in den Eigenschaften des zu suchenden Dokuments aufgeführten Autor darstellt, oder legt eine Zeichenkette fest. String. Schreib-Lese-Zugriff.
DateCreatedFrom-Eigenschaft des FileFind-Objektes
Nur Macintosh. Gibt das Datum zurück, an dem das zu
suchende Dokument erstellt wurde, oder legt das Datum fest. Dieses Datum gilt als untere
Grenze für die Suche. Variant. Schreib-Lese-Zugriff.
Anmerkungen
Sie können die DateCreatedTo-Eigenschaft verwenden, um eine obere Grenze
für die Dateisuche festzulegen, oder diese Eigenschaft auslassen, um eine unbegrenzte
Suche durchzuführen.
DateCreatedTo-Eigenschaft des FileFind-Objektes
Nur Macintosh. Gibt das Datum zurück, an dem die zu suchende Datei erstellt wurde, oder legt das Datum fest. Dieses Datum gilt als obere Grenze für die Dateisuche. Variant. Schreib-Lese-Zugriff.
DateSavedFrom-Eigenschaft des FileFind-Objektes
Nur Macintosh. Gibt das Datum zurück, an dem die zu
suchende Datei zuletzt gespeichert wurde, oder legt das Datum fest. Dieses Datum gilt als
untere Grenze für die Dateisuche. Variant. Schreib-Lese-Zugriff.
Anmerkungen
Sie können die DateSavedTo-Eigenschaft verwenden, um eine obere Grenze für die
Dateisuche festzulegen, oder diese Eigenschaft auslassen, um eine unbegrenzte Suche
durchzuführen.
DateSavedTo-Eigenschaft des FileFind-Objektes
Nur Macintosh. Gibt das Datum zurück, an dem die zu suchende Datei zuletzt gespeichert wurde, oder legt das Datum fest. Dieses Datum gilt als obere Grenze für die Dateisuche. Variant. Schreib-Lese-Zugriff.
Keywords-Eigenschaft des FileFind-Objektes
Nur Macintosh. Gibt eine Zeichenkette (bis zu 80 Zeichen) zurück, die in den Eigenschaften des zu suchenden Dokuments aufgelistete Schlüsselwörter darstellt, oder legt eine Zeichenkette fest. String. Schreib-Lese-Zugriff.
ListBy-Eigenschaft des FileFind-Objektes
Nur Macintosh. Gibt die Art zurück, wie die gefundenen Dateien im Ergebnisdialogfeld angezeigt werden, oder legt die Art fest. Dies kann eine der folgenden msoFileFindListBy-Konstanten sein: msoFileFindListByName (listet die gefundenen Dateien nach dem Systemdateinamen auf) oder msoFileFindListByTitle (listet die gefundenen Dateien nach der Titel-Eigenschaft auf). Schreib-Lese-Zugriff.
Achtung!
In der Microsoft Office 8.0-Bibliothek (Office 97) heissen die Konstanten msoListByName
und msoListByTitle.
Load-Methode des FileFind-Objektes
Nur Macintosh. Lädt die angegebene Abfrage für die
Dateisuche in den Speicher.
Syntax
Ausdruck.Load(bstrQueryName)
Ausdruck Erforderlich. Ein Ausdruck, der ein FileFind-Objekt zurückgibt.
bstrQueryName String erforderlich. Eine Zeichenkette mit höchstens 31 Zeichen, die den
Namen der gespeicherten Suchkriterien bestimmt, die geladen werden sollen.
Anmerkungen
Verwenden Sie die Execute-Methode, um eine geladene Abfrage auszuführen.
Save-Methode des FileFind-Objektes
...
Delete-Methode des FileFind-Objektes
...
Show-Methode des FileFind-Objektes
...
MatchCase-Eigenschaft des FileFind-Objektes
Nur Macintosh. True, wenn in der Dateisuche Gross- und Kleinschreibung unterschieden wird. Boolean. Schreib-Lese-Zugriff.
Options-Eigenschaft des FileFind-Objektes
Nur Macintosh. Gibt die Art zurück, wie die aktuelle Gruppe von gefundenen Dateien gegenüber der Liste von zuvor gefundenen Dateien angezeigt wird, oder legt die Art fest. Dies kann eine der folgenden msoFileFindOptions-Konstanten sein: msoFileFindOptionsNew, msoFileFindOptionsAdd oder msoFileFindOptionsWithin. Variant. Schreib-Lese-Zugriff.
Achtung!
In der Microsoft Office 8.0-Bibliothek (Office 97) heissen die Konstanten msoOptionsNew,
msoOptionsAdd und msoOptionsWithin.
FileSearch-Objekt (nur Windows)
Das FileSearch-Objekt gibt ein Objekt zur Verwendung von Dateisuchen zurück. Es ist ausschliesslich in Microsoft Windows verfügbar. Auf Macintosh wird anstelle des FileSearch-Objektes das FileFind-Objekt verwendet.
Anmerkung
Verwechseln Sie FileFind nicht mit FindFile. FindFile
ist eine Methode des Application-Objektes von Microsoft Excel und dient zum
Anzeigen des Öffnen-Dialoges.
Add-Methode der CommandBars-Auflistung (Office-Objekt)
Erstellt eine neue Befehlsleiste und fügt sie der Auflistung der Befehlsleisten hinzu. Gibt ein CommandBar-Objekt zurück.
Syntax
Ausdruck.Add(Name, Position, MenuBar, Temporary)
Argument Position:
Variant. Die Position der neuen Befehlsleiste. Dies kann eine der folgenden MsoBarPosition-Konstanten
sein:
| Konstante | Beschreibung |
| msoBarLeft | Gibt die linke Koordinate der neuen Befehlsleiste an. |
| msoBarTop | Gibt die obere Koordinate der neuen Befehlsleiste an. |
| msoBarRight | Gibt die rechte Koordinate der neuen Befehlsleiste an. |
| msoBarBottom | Gibt die untere Koordinate der neuen Befehlsleiste an. |
| msoBarFloating | Gibt an, dass die neue Befehlsleiste nicht verankert ist. |
| msoBarPopup | Gibt an, dass die neue Befehlsleiste ein Kontextmenü ist. |
| msoBarMenuBar | Gibt an, dass die neue Befehlsleiste die Systemmenüleiste auf dem Macintosh ersetzt. |
Die Konstante msoBarMenuBar kann nur auf dem Macintosh benutzt werden. Bei Verwendung unter Windows tritt zwar kein Fehler auf, und die neue Befehlsleiste wird angelegt. Diese ist aber eine Art Menüleiste, die nicht angezeigt werden kann (sie ist unsichtbar).
Eine vollständige Liste der Konstanten-Inkompatibilitäten finden Sie unter Unterschiede bei integrierten Konstanten.
FileName-Eigenschaft des Assistant-Objektes
Assistant-Objekt: Gibt den Namen der Datei des aktiven Office-Assistenten zurück oder legt ihn fest. String. Schreib-Lese-Zugriff.
In Windows lautet die Dateinamenerweiterung für Assistenten-Dateien '.act'.
Die Dateien der Assistenten liegen im Ordner "[..]\Programme\Microsoft Office\Office\Assistnt" bei Windows 95, im Ordner "[..]\Windows\MsApps\Assistnt" bei Windows NT und im Ordner "[..]:Microsoft Office:Office:Assistenten" auf dem Macintosh.
Application.Assistant.FileName = "CLIPPIT.ACT"
Unterschiede im Objektmodell des VBA-Editors
Der VBA-Editor besitzt nur wenige Unterschiede in seinem Objektmodell.
Objekte, Eigenschaften und Methoden zur Steuerung verknüpfter Fenster, verknüpfter Fensterrahmen und verankerter Fenster sind sowohl für Windows als auch für den Macintosh enthalten. Beim Macintosh allerdings nur aus Gründen der Kompatibilität mit Code, der für Windows geschrieben ist. Diese Sprachelemente sind somit zwar kompatibel, rufen jedoch Laufzeitfehler hervor, wenn sie auf einem Macintosh ausgeführt werden.
Nachfolgend werden alle Unterschiede vorgestellt.
| Element | Typ | Element von | Bibliothek |
| LinkedWindows | Objekt | VBIDE | VBIDE |
| Window | Objekt | Windows-Auflistung | VBIDE |
| Windows | Objekt | VBIDE | VBIDE |
Im Objektmodell von Microsoft Excel besitzt das Application-Objekt eine Eigenschaft namens VBE, die ein VBE-Objekt zurückgibt. Dieses stammt aus der VBIDE-Objektbibliothek ("Microsoft Visual Basic for Applications Extensibility"). Das VBE-Objekt wiederum besitzt unter anderem ein Window-Objekt und eine Windows-Auflistung. Diese sind für die Fenster des VBA-Editors zuständig.
Objekte, Eigenschaften und Methoden zur Steuerung verknüpfter Fenster, verknüpfter Fensterrahmen und verankerter Fenster sind sowohl für Windows als auch für den Macintosh enthalten. Beim Macintosh allerdings nur aus Gründen der Kompatibilität mit Code, der für Windows geschrieben ist. Diese Sprachelemente sind somit zwar kompatibel, rufen jedoch Laufzeitfehler hervor, wenn sie auf einem Macintosh ausgeführt werden.
Betroffen sind folgende Elemente:
- LinkedWindows-Auflistung
- LinkedWindows-Eigenschaft
- LinkedWindowsFrame-Eigenschaft
- Add-Methode
- Item-Methode
- Remove-Methode
- Close-Methode
- Height-Eigenschaft
- Width-Eigenschaft
- Count-Eigenschaft
Verwandte Themen
Window-Objekt
Windows-Objekt
Im Objektmodell von Microsoft Excel besitzt das Application-Objekt eine Eigenschaft namens VBE, die ein VBE-Objekt zurückgibt. Dieses stammt aus der VBIDE-Objektbibliothek ("Microsoft Visual Basic for Applications Extensibility"). Das VBE-Objekt wiederum besitzt unter anderem ein Window-Objekt und eine Windows-Auflistung. Diese sind für die Fenster des VBA-Editors zuständig.
Objekte, Eigenschaften und Methoden zur Steuerung verknüpfter Fenster, verknüpfter Fensterrahmen und verankerter Fenster sind sowohl für Windows als auch für den Macintosh enthalten. Beim Macintosh allerdings nur aus Gründen der Kompatibilität mit Code, der für Windows geschrieben ist. Diese Sprachelemente sind somit zwar kompatibel, rufen jedoch Laufzeitfehler hervor, wenn sie auf einem Macintosh ausgeführt werden.
Betroffen sind folgende Elemente:
- LinkedWindows-Auflistung
- LinkedWindows-Eigenschaft
- LinkedWindowsFrame-Eigenschaft
- Add-Methode
- Item-Methode
- Remove-Methode
- Close-Methode
- Height-Eigenschaft
- Width-Eigenschaft
- Count-Eigenschaft
Verwandte Themen
LinkedWindows-Objekt
Windows-Objekt
Im Objektmodell von Microsoft Excel besitzt das Application-Objekt eine Eigenschaft namens VBE, die ein VBE-Objekt zurückgibt. Dieses stammt aus der VBIDE-Objektbibliothek ("Microsoft Visual Basic for Applications Extensibility"). Das VBE-Objekt wiederum besitzt unter anderem ein Window-Objekt und eine Windows-Auflistung. Diese sind für die Fenster des VBA-Editors zuständig.
Objekte, Eigenschaften und Methoden zur Steuerung verknüpfter Fenster, verknüpfter Fensterrahmen und verankerter Fenster sind sowohl für Windows als auch für den Macintosh enthalten. Beim Macintosh allerdings nur aus Gründen der Kompatibilität mit Code, der für Windows geschrieben ist. Diese Sprachelemente sind somit zwar kompatibel, rufen jedoch Laufzeitfehler hervor, wenn sie auf einem Macintosh ausgeführt werden.
Betroffen sind folgende Elemente:
- LinkedWindows-Auflistung
- LinkedWindows-Eigenschaft
- LinkedWindowsFrame-Eigenschaft
- Add-Methode
- Item-Methode
- Remove-Methode
- Close-Methode
- Height-Eigenschaft
- Width-Eigenschaft
- Count-Eigenschaft
Verwandte Themen
LinkedWindows-Objekt
Window-Objekt
Unterschiede im Objektmodell von Microsoft Forms
In diesem Kapitel geht es um die Kompatibilität von Benutzerformularen (UserForms) und den auf Formularen verwendbaren Steuerelementen (Controls).

Abbildung: Werkzeugsammlung

Abbildung: Ausgewählte MS Forms-Steuerelemente (Weitere
Steuerelemente)

Abbildung: Andere verfügbare Steuerelemente (Weitere
Steuerelemente)

Abbildung: Steuerelement-Toolbox
Unterschiede zwischen Windows und Macintosh: ActiveX-Controls
Unterschiede bei Benutzerformularen
I.
| Element | Typ | Element von | Bibliothek |
| WhatsThisMode | Methode | UserForm-Objekt | MSForms |
| WhatsThisHelp | Eigenschaft | UserForm-Objekt | MSForms |
| WhatsThisButton | Eigenschaft | UserForm-Objekt | MSForms |
| Picture | Eigenschaft | UserForm-Objekt | MSForms |
| MouseIcon | Eigenschaft | UserForm-Objekt | MSForms |
| Error | Ereignis | UserForm-Objekt | MSForms |
WhatsThisMode-Methode des UserForm-Objektes
Die WhatsThisMode-Methode ändert den Mauszeiger in einen Direkthilfe-Zeiger und bereitet die Anwendung so vor, dass die Hilfe für das ausgewählte Objekt angezeigt wird.
Diese Methode existiert zwar für den Macintosh, verfügt jedoch nicht über die Zeigerfunktionalität.
Verwandte Themen
WhatsThisHelp-Eigenschaft
WhatsThisButton-Eigenschaft
WhatsThisHelp-Eigenschaft des UserForm-Objektes
Die WhatsThisHelp-Eigenschaft gibt einen Wert vom Typ Boolean zurück, der bestimmt, ob für die kontextbezogene Hilfe das von der Windows 95-Hilfe bereitgestellte Popup-Fenster oder das Hilfe-Hauptfenster verwendet wird. Diese Eigenschaft ist zur Laufzeit schreibgeschützt.
Diese Eigenschaft wird beim Macintosh nicht unterstützt.
Verwandte Themen
WhatsThisButton-Eigenschaft
WhatsThisMode-Methode
WhatsThisButton-Eigenschaft des UserForm-Objektes
Die WhatsThisButton-Eigenschaft gibt einen Wert vom Typ Boolean zurück, der bestimmt, ob in der Titelleiste eines UserForm-Objekts die Direkthilfe-Schaltfläche angezeigt wird. Diese Eigenschaft ist zur Laufzeit schreibgeschützt.

Abbildung: Benutzerformular mit Direkthilfe-Schaltfläche
Diese Eigenschaft wird beim Macintosh nicht unterstützt.
Verwandte Themen
WhatsThisHelp-Eigenschaft
WhatsThisMode-Methode
Unterschiede bei Steuerelementen
| Steuerelement (deutsch) | Steuerelement (englisch) | Eigenschaft |
| Bezeichnungsfeld | Label | Picture |
| Textfeld | TextBox | |
| Kombinationsfeld | ComboBox | RowSource |
| Listenfeld | ListBox | RowSource |
| Kontrollkästchen | CheckBox | Picture |
| Optionsfeld | OptionButton | Picture |
| Umschaltfeld | ToggleButton | Picture |
| Rahmen | Frame | Picture |
| Befehlsschaltfläche | CommandButton | Picture |
| Register | TabStrip | |
| Multiseiten | MultiPage | Picture von Page-Objekt |
| Bildlaufleiste | ScrollBar | |
| Drehfeld | SpinButton | |
| Anzeige | Image | Picture |
| Element | Typ | Element von | Bibliothek |
| RowSource | Eigenschaft | ListBox-/ComboBox-Objekt | MSForms |
| Picture | Eigenschaft | Diverse Control-Objekte | MSForms |
| MouseIcon | Eigenschaft | Alle Control-Objekte | MSForms |
| Error | Ereignis | Alle Control-Objekte | MSForms |
RowSource-Eigenschaft des ListBox- und ComboBox-Steuerelementes
Die RowSource-Eigenschaft gibt die Quelle an, die eine Liste für ein Kombinationsfeld-Steuerelement (ComboBox) oder ein Listenfeld-Steuerelement (ListBox) zur Verfügung stellt.
Syntax
Objekt.RowSource [= String]
Die RowSource-Eigenschaft akzeptiert Bereiche von Tabellenblättern von Microsoft Excel.
Anmerkung
Auf einem Benutzerformular können sowohl unter Windows als auch auf Macintosh ListBox- und ComboBox-Steuerelemente benutzt werden. Die RowSource-Eigenschaft jedoch steht auf Macintosh-Systemen nicht zur Verfügung. Wenn diese Eigenschaft trotzdem verwendet wird, erscheint der Laufzeitfehler 380 mit diesem Meldungstext:
"Could not set the RowSource property. Invalid property value."

Abbildung: Laufzeitfehler 380

Abbildung: ListBox-Eigenschaften mit RowSource
Wenn die Arbeitsmappe mit der enthaltenen UserForm potenziell auf einem Macintosh-System zum Einsatz kommen könnte, dürfen Sie RowSource nicht verwenden. und stattdessen die ListBox bzw. ComboBox mittels VBA-Code mit Werten füllen.
Hier ein Beispiel:
Private Sub UserForm_Initialize()
ListBox1.List =
Worksheets("Tabelle1").Range("A1:A5").Value
End Sub
Hier ein anderes Beispiel:
Private Sub UserForm_Initialize()
ListBox1.List =
ThisWorkbook.Worksheets("Mitarbeiter").Range("Namensliste").Value
End Sub
Weitere Informationen erhalten Sie hier:
MacXL: Run-Time Error When You Set RowSource
Property (98/2001)
http://support.microsoft.com/?scid=kb;en-us;175795
Unterschiede bei integrierten Konstanten
Es gibt Konstanten, die nur für Windows oder nur für Macintosh gelten. Verschiedene Konstanten besitzen auch unterschiedliche Auswirkungen. Zudem gibt es eine Konstante, die je nach Plattform einen anderen Inhalt besitzt.
| Konstante | Wert | Auflistung | Kategorie | Bibliothek | Plattform |
| vbNewLine | Chr(13)+Chr(10) bzw. Chr(13) |
Constants | Verschiedene Konstanten | VBA | Windows und Macintosh (unterschiedlicher Wert) Mehr dazu siehe hier. |
| vbHide | 0 | VbAppWinStyle | Shell-Konstanten | VBA | Nur Windows |
| vbNormalFocus | 1 | VbAppWinStyle | Shell-Konstanten | VBA | Windows und Macintosh (unterschiedliche Auswirkung) Mehr dazu siehe hier. |
| vbMinimizedFocus | 2 | VbAppWinStyle | Shell-Konstanten | VBA | Windows und Macintosh (unterschiedliche Auswirkung) Mehr dazu siehe hier. |
| vbMaximizedFocus | 3 | VbAppWinStyle | Shell-Konstanten | VBA | Windows und Macintosh (unterschiedliche Auswirkung) Mehr dazu siehe hier. |
| vbNormalNoFocus | 4 | VbAppWinStyle | Shell-Konstanten | VBA | Windows und Macintosh (unterschiedliche Auswirkung) Mehr dazu siehe hier. |
| vbMinimizedNoFocus | 6 | VbAppWinStyle | Shell-Konstanten | VBA | Windows und Macintosh (unterschiedliche Auswirkung) Mehr dazu siehe hier. |
| vbSystem | 4 | VbFileAttribute | Dir-, GetAttr- und SetAttr-Konstanten | VBA | Nur Windows |
| vbArchive | 32 | VbFileAttribute | Dir-, GetAttr- und SetAttr-Konstanten | VBA | Nur Windows |
| vbDirectory | 16 | VbFileAttribute | Dir-, GetAttr- und SetAttr-Konstanten | VBA | Nur Windows |
| vbVolume | 8 | VbFileAttribute | Dir-, GetAttr- und SetAttr-Konstanten | VBA | Nur Windows |
| vbAlias | 64 | VbFileAttribute | Dir-, GetAttr- und SetAttr-Konstanten | VBA | Nur Macintosh |
| vbUnicode | 64 | VbStrConv | StrConv-Konstanten | VBA | Nur Windows |
| vbFromUnicode | 128 | VbStrConv | StrConv-Konstanten | VBA | Nur Windows |
| msoBarMenuBar | 6 | MsoBarPosition | Office | Office | Nur Macintosh |
In Bezug auf Anzeige des Anwendungsfenster im Vordergrund oder Hintergrund gibt es Unterschiede. Auf dem Macintosh plazieren vbNormalFocus, vbMinimizedFocus und vbMaximizedFocus die Anwendung im Vordergrund. vbNormalNoFocus und vbMinimizedFocus plazieren die Anwendung im Hintergrund.
Unklare Konstanten
| Konstante | Wert | Auflistung | Kategorie | Bibliothek | Plattform |
| vbAppWindows | 2 | VbQueryClose | QueryClose-Konstanten | VBA | Nur Windows? |
| vbAppTaskManager | 3 | VbQueryClose | QueryClose-Konstanten | VBA | Nur Windows? |
| vbFormFeed | Chr(12) | Constants | Verschiedene Konstanten | VBA | Nur Windows? |
| vbVerticalTab | Chr(11) | Constants | Verschiedene Konstanten | VBA | Nur Windows? |
XlFileFormat-Konstanten
| FileFormat-Konstante | Bemerkung |
| xlAddIn | - |
| xlCSV | - |
| xlCSVMac | Sollte nicht unter Windows verwendet werden. |
| xlCSVMSDOS | Sollte nicht auf Macintosh verwendet werden. |
| xlCSVWindows | Sollte nicht auf Macintosh verwendet werden. |
| xlCurrentPlatformText | Sollte statt xlTextMac und xlTextWindows verwendet werden. |
| xlDBF2 | - |
| xlDBF3 | - |
| xlDBF4 | - |
| xlDIF | - |
| xlExcel2 | - |
| xlExcel2FarEast | - |
| xlExcel3 | - |
| xlExcel4 | - |
| xlExcel4Workbook | - |
| xlExcel5 | - |
| xlExcel7 | - |
| xlExcel9795 | Auch in VBA für Macintosh vorhanden? |
| xlHTML | In Excel 97 nicht vorhanden. Macintosh? |
| xlIntlAddIn | - |
| xlIntlMacro | - |
| xlSYLK | - |
| xlTemplate | - |
| xlTextMac | Sollte nicht unter Windows verwendet werden. |
| xlTextMSDOS | Sollte nicht auf Macintosh verwendet werden. |
| xlTextPrinter | |
| xlTextWindows | Sollte nicht auf Macintosh verwendet werden. |
| xlUnicodeText | In Excel 97 nicht vorhanden. Macintosh? Macht auf Macintosh keinen Sinn, weil kein Unicode. |
| xlWebArchive | Nur in Excel 2003 vorhanden. Macintosh? |
| xlWJ2WD1 | - |
| xlWJ3 | - |
| xlWJ3FJ3 | - |
| xlWK1 | - |
| xlWK1ALL | - |
| xlWK1FMT | - |
| xlWK3 | - |
| xlWK3FM3 | - |
| xlWK4 | - |
| xlWKS | - |
| xlWorkbookNormal | - |
| xlWorks2FarEast | - |
| xlWQ1 | - |
| xlXMLSpreadsheet | Nur in Excel 2003 vorhanden. Macintosh? |
Unterschiede bei VBA-Fehlermeldungen
Fehlermeldungen wegen inkompatiblen VBA-Sprachelementen:
- MacID-Funktion
- MacScript-Funktion
- Environ-Funktion
- CDecl-Schlüsselwort
- SendKeys-Anweisung (?)
Fehler beim Kompilieren: Sub oder Function nicht definiert
Auswirkung bei Verwendung eines nicht verfügbaren Sprachelementes
Es existieren ein paar Fehlermeldungen, die ausschliesslich auf einem Macintosh-System auftreten können. Oder sie können auf Windows und Macintosh auftreten, jedoch unterschiedliche Ursachen besitzen, und folglich anders behoben werden müssen.
Diese Laufzeitfehler besitzen je nach Plattform ein paar
Unterschiede:
- Laufzeitfehler 35
- Laufzeitfehler 49
- Laufzeitfehler 53
- Laufzeitfehler 67
- Laufzeitfehler 447
- Laufzeitfehler 454
- Laufzeitfehler 455
Fehlermeldung: Sub, Function oder Property nicht definiert (Fehler 35)

Abbildung: Laufzeitfehler 35
Eine Sub-, Function- oder Property-Prozedur muss definiert sein, um aufgerufen werden zu können. Dieser Fehler hat die folgenden Ursachen und Lösungen:
Überprüfen Sie die Schreibweise des Prozedurnamens und korrigieren Sie sie gegebenenfalls.
So fügen Sie
einen Verweis hinzu:
1. Öffnen Sie das Dialogfeld Verweise.
2. Bestimmen Sie den Namen des Projekts,
das die gewünschte Prozedur enthält.
Wenn der Projektname nicht im Dialogfeld
"Verweise" angezeigt wird, können Sie nach dem Prozedurnamen suchen,
indem Sie auf die Schaltfläche Suchen
klicken.
3. Aktivieren Sie das Kontrollkästchen
links neben dem Projektnamen.
4. Klicken Sie auf OK.
Werden Prozeduren in einem Modul als Private deklariert, so können sie von Prozeduren ausserhalb des Moduls nicht aufgerufen werden. Wenn Option Private Module aktiv ist, stehen die Prozeduren in diesem Modul anderen Projekten nicht zur Verfügung. Suchen Sie nach der Prozedur.
Siehe auch unter:
Declare-Anweisung
Fehlermeldung: Falsche DLL-Aufrufkonvention (Fehler 49)

Abbildung: Laufzeitfehler 49
Argumente, die an eine Routine in einer Dynamic Link Library (DLL) oder in einer Macintosh Code-Ressource übergeben werden, müssen mit den von der Routine erwarteten Argumenten genau übereinstimmen. Aufrufkonventionen legen die Anzahl, den Typ und die Reihenfolge der Argumente fest. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:
Stellen Sie sicher, dass alle Argumenttypen mit den Typen übereinstimmen, die in der Deklaration der aufgerufenen Routine angegeben sind.
Stellen Sie sicher, dass die Anzahl an Argumenten übergeben wird, die in der Deklaration der aufgerufenen Routine angegeben ist.
Wenn die DLL-Routine Argumente als Wert erwartet, muss ByVal für diese Argumente in der Deklaration der Routine angegeben werden.
Das Schlüsselwort CDecl kann nur bei Macintosh-Computern verwendet werden.
Siehe auch unter:
Declare-Anweisung
CDecl-Schlüsselwort
Fehlermeldung: Datei nicht gefunden (Fehler 53)

Abbildung: Laufzeitfehler 53
Die Datei wurde an der angegebenen Stelle nicht gefunden. Dieser Fehler hat die folgenden Ursachen und Lösungen:
Überprüfen Sie die Schreibweise des Dateinamens und die Pfadangabe.
Überprüfen Sie die Schreibweise des Dateinamens und die Pfadangabe.
Überprüfen Sie die Schreibweise des Projekts oder Dateinamens und die Pfadangabe.
Siehe auch unter:
Declare-Anweisung
Erlaubte Zeichen in Dateinamen
Fehlermeldung: Zu viele Dateien (Fehler 67)

Abbildung: Laufzeitfehler 67
Die Anzahl der Datenträgerdateien, die gleichzeitig geöffnet sein können, ist begrenzt. Dieser Fehler hat die folgenden Ursachen und Lösungen:
Siehe auch unter:
Anzahl gleichzeitig geöffnete Dateien
FreeFile-Funktion
Fehlermeldung: Objekt unterstützt die aktuelle Ländereinstellung nicht (Fehler 447)

Abbildung: Laufzeitfehler 447
Nicht alle Objekte unterstützen alle Einstellungen für das Gebietsschema. Dieser Fehler hat die folgenden Ursachen und Lösungen:
Überprüfen Sie, welche Gebietsschemata vom Objekt unterstützt werden.
Fordern Sie eine aktuellere Version der DLL an, die das Gebietsschema des aktuellen Projekts unterstützt.
Siehe auch unter:
Declare-Anweisung
Fehlermeldung: Code-Ressource nicht gefunden (Fehler 454)

Abbildung: Laufzeitfehler 454
Dieser Fehler kann nur auf dem Macintosh auftreten. Für diesen Fehler gibt es die folgende Ursache und Lösung:
Überprüfen Sie, ob die Ressource verfügbar ist und ordnungsgemäss referenziert wird.
Siehe auch unter:
Declare-Anweisung
Fehlermeldung: Fehler durch gesperrte Code-Ressource (Fehler 455)

Abbildung: Laufzeitfehler 455
Dieser Fehler kann nur auf dem Macintosh auftreten. Wenn Sie auf eine Code-Ressource zugreifen, müssen Sie diese sperren. Für diesen Fehler gibt es die folgende Ursache und Lösung:
Überprüfen Sie, ob HLock einen Fehler zurückgegeben hat (zum Beispiel "Illegal on empty handle" oder "Illegal on free block").
Siehe auch unter:
Declare-Anweisung
Änderungen und Erweiterungen in VBA 6.0
Visual Basic für Applikationen Version 6, das in Microsoft Office für Windows ab Version 2000 und in Microsoft Office für Macintosh ab Version 2004 integriert ist, besitzt gegenüber der Vorgängerversion VBA 5 ein paar wichtige Änderungen und Neuerungen. Diese werden in den nachfolgenden drei Abschnitten vorgestellt.
Neue Funktionen
Geänderte Funktionen
Weitere Änderungen
Beachten Sie bitte, dass Office 97 für Windows, Office 98 für Macintosh, Office 2001 für Macintosh und Office v.X für Macintosh die VBA-Version 5 enthalten. Alle anderen Office-Versionen enthalten die neue VBA-Version 6. Hier eine Versionsübersicht:
| Office-Version | VBA-Version |
| Office 97 (Windows) | VBA 5 |
| Office 98 (Macintosh) | VBA 5 |
| Office 2000 (Windows) | VBA 6 |
| Office 2001 (Macintosh) | VBA 5 |
| Office 2002/XP (Windows) | VBA 6 |
| Office v.X (Macintosh) | VBA 5 |
| Office 2003 (Windows) | VBA 6 |
| Office 2004 (Macintosh) | VBA 6 |
Vermeiden von VBA 6-Sprachelementen
Bei "Nein" funktioniert das VBA-Programm nicht, sofern Sprachelemente von VBA 6 benutzt wurden.
Funktioniert mit... |
Excel für Windows | Excel für Macintosh | ||||||
| Entwickelt mit... | 97 | 2000 | 2002 | 2003 | 98 | 2001 | v.X | 2004 |
| Excel 97 für Windows | - | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
| Excel 2000 für Windows | Nein | - | Ja | Ja | Nein | Nein | Nein | Ja |
| Excel 2002 für Windows | Nein | Ja | - | Ja | Nein | Nein | Nein | Ja |
| Excel 2003 für Windows | Nein | Ja | Ja | - | Nein | Nein | Nein | Ja |
| Excel 98 für Macintosh | Ja | Ja | Ja | Ja | - | Ja | Ja | Ja |
| Excel 2001 für Macintosh | Ja | Ja | Ja | Ja | Ja | - | Ja | Ja |
| Excel v.X für Macintosh | Ja | Ja | Ja | Ja | Ja | Ja | - | Ja |
| Excel 2004 für Macintosh | Nein | Ja | Ja | Ja | Nein | Nein | Nein | - |
Lesebeispiel:
Ein mit Excel 2003 für Windows entwickeltes VBA-Programm kann mit Excel 2000, Excel 2002 und Excel 2004 problemlos ausgeführt werden, weil diese drei Excelversionen, genau wie Excel 2003, die VBA-Version 6 enthalten. Bei Excel 97, Excel 98, Excel 2001 und Excel v.X. dagegen treten Probleme auf, weil diese Excelversionen das ältere VBA 5 enthalten.
Weitere Informationen von Microsoft über die neuen
Spachfeatures erhalten Sie hier:
What's New in Language Features
http://msdn.microsoft.com/library/en-us/vbcon98/html/vbmscWhatsNewInLanguageFeaturesVB98.asp
Auswirkung bei Verwendung eines nicht verfügbaren Sprachelementes
Immer wenn ein VBA-Programm ein Sprachelement von VBA 6 verwendet, und dann der Code in einem Microsoft Office-Programm ausgeführt wird, welches VBA 5 enthält, tritt ein Kompilierungsfehler auf. Der Fehler erscheint gewöhnlich beim Öffnen der Arbeitsmappe (beziehungsweise des Add-Ins).
Der Text der Fehlermeldung ist davon abhängig, ob das VBA-Projekt mit einem Kennwort geschützt ist oder nicht.
Ungeschütztes VBA-Projekt
Wenn das VBA-Projekt nicht geschützt ist, tritt der Fehler "Fehler beim Kompilieren: Sub oder Function nicht definiert" auf.

Abbildung: Fehler beim Kompilieren
Geschütztes VBA-Projekt
Wenn das VBA-Projekt mit einem Kennwort geschützt ist, tritt der Fehler "Kompilierungsfehler in verborgenem Modul: [...]" auf. Im Meldungstext steht jeweils, welches Modul die fehlerhafte Codezeile enthält.

Abbildung: Kompilierungsfehler in verborgenem Modul 'Diese
Arbeitsmappe'

Abbildung: Kompilierungsfehler in verborgenem Modul
'<Modulname>'
Bitte beachten Sie,

Abbildung: Fehler beim Kompilieren
Die VBA-Version 6 enthält im Vergleich zu VBA 5 insgesamt 13 neue Funktionen. Es handelt sich mehrheitlich um wenig spektakuläre Erweiterungen. Lediglich die beiden Funktionen Replace und Split gebühren einer gewissen Aufmerksamkeit. Die anderen neuen Funktionen können ohne grossen Aufwand mit den alten VBA 5-Anweisungen und -Funktionen nachprogrammiert werden. Zudem werden sie in der Praxis erfahrungsgemäss nur selten verwendet.
Folgende Funktionen sind neu (alphabetisch sortierte
Liste):
- Filter
- FormatCurrency
- FormatDateTime
- FormatNumber
- FormatPercent
- InStrRev
- Join
- MonthName
- Replace
- Round
- Split
- StrReverse
- WeekdayName
Filter
Gibt ein nullbasiertes Datenfeld zurück, das eine Untermenge eines
Zeichenfolgen-Datenfeldes basierend auf festgelegten Filterkriterien enthält.
Beschreibung auf der Microsoft-Webseite: Filter
Alternative:
Kombination von Mid-Funktion und InStr-Funktion
FormatCurrency
Gibt unter Verwendung der in der Systemsteuerung definierten Währung einen als
Währungswert formatierten Ausdruck zurück.
Beschreibung auf der Microsoft-Webseite: FormatCurrency
Alternative:
Format-Funktion
FormatDateTime
Gibt einen als Datum oder Uhrzeit formatierten Ausdruck zurück.
Beschreibung auf der Microsoft-Webseite: FormatDateTime
Alternative:
Format-Funktion
FormatNumber
Gibt einen als Zahl formatierten Ausdruck zurück.
Beschreibung auf der Microsoft-Webseite: FormatNumber
Alternative:
Format-Funktion
FormatPercent
Gibt einen als Prozentsatz formatierten Wert (mit 100 multipliziert) gefolgt von
dem %-Zeichen zurück.
Beschreibung auf der Microsoft-Webseite: FormatPercent
Alternative:
Format-Funktion
InStrRev
Gibt die Position eines Vorkommnisses einer Zeichenfolge in einer anderen
Zeichenfolge vom Ende der Zeichenfolge gesehen an.
Beschreibung auf der Microsoft-Webseite: InStrRev
Alternative:
Umgekehrte For-Next-Schleife mit Mid-Funktion
Join
Gibt eine Zeichenfolge zurück, die sich aus der Kombination einer Reihe von
untergeordneten Zeichenfolgen, die in einem Datenfeld enthalten sind, ergibt.
Beschreibung auf der Microsoft-Webseite: Join
Alternative:
For-Next-Schleife mit &-Operator (Zeichenfolgen verketten)
MonthName
Gibt eine Zeichenfolge zurück, die den festgelegten Monat angibt.
Beschreibung auf der Microsoft-Webseite: MonthName
Alternativen:
MsgBox Format$(Date, "mmmm") 'Gibt den langen Monat aus (z.B. "September")
MsgBox Format$(Date, "mmm") 'Gibt den kurzen Monat aus (z.B. "Sep")
Replace
Gibt eine Zeichenfolge zurück, in der eine festgelegte, untergeordnete
Zeichenfolge mit einer festgelegten Häufigkeit durch eine andere untergeordnete
Zeichenfolge ersetzt wurde.
Beschreibung auf der Microsoft-Webseite: Replace
Alternative 1:
Mid-Anweisung
Alternative 2:
Application.WorksheetFunction.Replace (ERSETZEN-Tabellenfunktion)
Alternative 3:
Public Function Replace(sIn As String, sOld As String, sNew As
String) As String
If sIn = "" Then
Exit Function
End If
If sOld = "" Then
Exit Function
End If
Dim colBefore As Collection
Set colBefore = New Collection
Dim nPos As Long
Dim nPosLast As Long
Dim nLen As Long
Dim vItem As Variant
nPosLast = 1
nPos = InStr(nPosLast, sIn, sOld)
Do While nPos <> 0
colBefore.Add Mid(sIn, nPosLast, (nPos) - nPosLast)
nPosLast = nPos + Len(sOld)
nPos = InStr(nPosLast, sIn, sOld)
Loop
Replace = Space(Len(sIn) + ((Len(sNew) - Len(sOld)) * colBefore.Count))
nPos = 1
For Each vItem In colBefore
nLen = Len(vItem)
If nLen > 0 Then
Mid(Replace, nPos, nLen) = vItem
nPos = nPos + nLen
End If
If sNew <> "" Then
Mid(Replace, nPos, Len(sNew)) = sNew
nPos = nPos + Len(sNew)
End If
Next
If nPosLast <= Len(sIn) Then
Mid(Replace, nPos) = Mid(sIn, nPosLast)
End If
Set colBefore = Nothing
End Function
Quelle: Scott Seligman, Scott's Sample Code (http://www.scottandmichelle.net/scott/code/index2.mv?codenum=051)
Round
Gibt eine Zahl zurück, die auf eine festgelegte Anzahl an Dezimalpunkten gerundet
wurde.
Beschreibung auf der Microsoft-Webseite: Round
Alternative:
Application.WorksheetFunction.Round (RUNDEN-Tabellenfunktion)
Split
Gibt ein nullbasiertes, eindimensionales Datenfeld zurück, das eine festgelegte
Anzahl an untergeordneten Zeichenfolgen enthält.
Beschreibung auf der Microsoft-Webseite: Split
Alternative 1:
Dieser Programmcode ist in ein Klassenmodul einzufügen:
Private mCol As Collection
Public Sub SplitInto(sIn As String, Optional sDelim As String = ",")
Dim sPart As String
Dim iPos As Long
Dim iLoc As Long
iLoc = 0
iPos = 1
Do
iLoc = InStr(iPos, sIn, sDelim)
If iLoc > 0 Then
sPart = Mid(sIn, iPos, iLoc - iPos)
iPos = iLoc + Len(sDelim)
Else
sPart = Mid(sIn, iPos)
iPos = 0
End If
mCol.Add sPart
Loop Until iPos = 0
End Sub
Public Function Add(sValue As String) As String
mCol.Add sValue
Add = sValue
End Function
Public Property Get Item(nIndex As Long) As String
Item = mCol(nIndex)
End Property
Public Property Get Count() As Long
Count = mCol.Count
End Property
Public Sub Remove(nIndex As Long)
mCol.Remove nIndex
End Sub
Public Property Get NewEnum() As IUnknown 'Procedure ID is -4
Set NewEnum = mCol.[_NewEnum]
End Property
Private Sub Class_Initialize()
Set mCol = New Collection
End Sub
Private Sub Class_Terminate()
Set mCol = Nothing
End Sub
Aufruf-Beispiel (Prozedur in ein Codemodul einfügen):
Sub SplitDemo()
Dim vLine
Dim sclLines As New StringCollection
sclLines.SplitInto Clipboard.GetText, vbNewLine
For Each vLine In sclLines
Debug.Print "[" & vLine & "]"
Next
End Sub
Quelle: Scott Seligman, Scott's Sample Code (http://www.scottandmichelle.net/scott/code/index2.mv?codenum=048)
Alternative 2:
Dieser Programmcode ist in ein Codemodul einzufügen:
Public Function Split(Expression As String, Optional Delimiter,
Optional Limit As Long = -1, _
Optional Compare As Long = vbBinaryCompare) As Variant
Dim i As Integer
Dim n As Integer
Dim aStr() As String
ReDim aStr(0)
aStr(0) = Expression
If IsMissing(Delimiter) Then Delimiter = " "
If Len(Expression) = 0 Then GoTo ExitHandler
If Compare < 0 Or Compare > 1 Then GoTo ExitHandler
Do
n = UBound(aStr)
i = InStr(1, aStr(n), Delimiter, Compare)
If i = 0 Then Exit Do
If Limit > -1 And n = Limit Then Exit Do
ReDim Preserve aStr(0 To n + 1)
aStr(n + 1) = aStr(n)
aStr(n) = Left(aStr(n), i - 1)
aStr(n + 1) = Mid(aStr(n + 1), i + 1)
Loop
ExitHandler:
Split = aStr()
End Function
Quelle: xlSupport.com (http://www.xlsupport.com)
StrReverse
Gibt eine Zeichenfolge zurück, in der die Reihenfolge der Zeichen einer bestimmten
Zeichenfolge umgekehrt wurde.
Beschreibung auf der Microsoft-Webseite: StrReverse
Alternative:
Dieser Programmcode ist in ein Codemodul einzufügen:
Public Function StrReverse(sIn As String) As String
Dim i As Long
StrReverse = Space(Len(sIn))
For i = 1 To Len(sIn)
Mid(StrReverse, Len(sIn) - (i - 1), 1) = Mid(sIn, i, 1)
Next i
End Function
Aufruf-Beispiel (Prozedur in ein Codemodul einfügen):
Sub StrReverseDemo()
MsgBox StrReverse("Microsoft Excel 2004 for Macintosh")
End Sub
Quelle: Scott Seligman, Scott's Sample Code (http://www.scottandmichelle.net/scott/code/index2.mv?codenum=050)
WeekdayName
Gibt eine Zeichenfolge zurück, die den festgelegten Wochentag angibt.
Beschreibung auf der Microsoft-Webseite: WeekdayName
Alternativen:
MsgBox Format$(Date, "dddd") 'Gibt den langen Wochentag aus (z.B. "Mittwoch")
MsgBox Format$(Date, "ddd") 'Gibt den kurzen Wochentag aus (z.B. "Mi")
CreateObject
CreateObject now lets you specify a machine name as an optional argument, which
allows you to create objects on remote machines.
Beschreibung von Microsoft:
CreateObject Function Enhancements
http://msdn.microsoft.com/library/en-us/vbenlr98/html/vafctcreateobject.asp
StrConv
New LCID argument enables you to specify a LocaleID for a string different
than the system's LocaleID.
Beschreibung von Microsoft:
StrConv Function Enhancement
http://msdn.microsoft.com/library/en-us/vbenlr98/html/vafctstrconv.asp
In der VBA-Version 6 gibt es ein paar weitere Änderungen, die auf die meisten VBA-Programme kaum einen Einfluss haben. In VBA-Programmen, die von einem fortgeschrittenen Programmierer geschrieben wurden, kann es jedoch sein, dass die Sprachelemente CallByName, Enum und AddressOf verwendet wurden.
Diese weiteren Änderungen existieren in VBA 6:
- Benutzerdefinierte
Typen in öffentlichen Methoden
- Funktionen können
Datenfelder zurückgeben
- Dynamische
Datenfelder können zugewiesen werden
- Neue Anweisung CallByName
- Neue Anweisung Enum
- Neuer Operator AddressOf
- Erweiterung des
File System Object-Objektes
- Neues Objekt Dictionary
- Neue Methode DisableCustomize
Benutzerdefinierte
Typen in öffentlichen Methoden
User-defined types can be arguments or return types of public properties and
methods.
Beschreibung von Microsoft:
Type Statement
http://msdn.microsoft.com/library/en-us/vbenlr98/html/vastmType.asp
Funktionen
können Datenfelder zurückgeben
Functions and properties procedures will be able to return arrays.
Beschreibung von Microsoft:
Advanced Features of Arrays
http://msdn.microsoft.com/library/en-us/vbcon98/html/vbconAdvancedFeaturesOfArrays.asp
Dynamische
Datenfelder können zugewiesen werden
Variable-sized arrays can now appear on the left side of an assignment. Fixed-sized
arrays cannot appear on the left side of an assignment, although they can appear on the
right.
Beschreibung von Microsoft:
Resizable Arrays Can Be Assigned
http://msdn.microsoft.com/library/en-us/vbcon98/html/vbconadvancedfeaturesofarrays.asp
Neue
Anweisung CallByName
Allows access to a property or method by specifying a string containing the name of
the property or method, rather than by coding the name explicitly.
Beschreibung von Microsoft:
CallByName
http://msdn.microsoft.com/library/en-us/vbenlr98/html/vafctcallbynamefunction.asp
Beschreibung von Microsoft:
Enum Statement
http://msdn.microsoft.com/library/en-us/vbenlr98/html/vastmEnum.asp
Hinweis: Gemäss der Übersicht What's New in Language Features von Microsoft ist Enum keine neue Anweisung in VBA 6. Diese Information stimmt zwar, ist aber verwirrend, weil man so annimmt, dass Enum folglich bereits in VBA 5.0 (also unter anderem in Microsoft Office 97) vorhanden war. Das ist jedoch nicht der Fall. Dieses Sprachelement wurde zwischen VBA 5.0 und VBA 6.0 eingeführt.
Beschreibung von Microsoft:
AddressOf Operator
http://msdn.microsoft.com/library/en-us/vbenlr98/html/vaoprAddressOf.asp
Hinweis: Gemäss der Übersicht What's New in Language Features von Microsoft ist AddressOf kein neuer Operator in VBA 6. Diese Information stimmt zwar, ist aber verwirrend, weil man so annimmt, dass AddressOf folglich bereits in VBA 5.0 (also unter anderem in Microsoft Office 97) vorhanden war. Das ist jedoch nicht der Fall. Dieses Sprachelement wurde zwischen VBA 5.0 und VBA 6.0 eingeführt.
Erweiterung
des File System Object-Objektes
Offers a streamlined set of routines to traverse the file system and create text
files and directories.
Beschreibung von Microsoft:
File System Objects
http://msdn.microsoft.com/library/en-us/vbcon98/html/vbconthefilesystemobjects.asp
Neues
Objekt Dictionary
The Dictionary object overcomes some of the Collection object's
limitations and is easier to use because it generates fewer run-time errors for common
operations and is more flexible.
Beschreibung von Microsoft:
Dictionary Object
http://msdn.microsoft.com/library/en-us/vbenlr98/html/vaobjdictionary.asp
Neue
Methode DisableCustomize (CommandBars-Auflistung, Office-Objektmodell)
Im Objektmodell von Microsoft Office wurde das CommandBars-Auflistungsobjekt
mit der neuen Methode DisableCustomize ausgestattet.
Wenn der Programmcode in einer VBA 5-Umgebung, also in Microsoft Office 97 für Windows oder in Microsoft Office für Macintosh älter als Version 2004 ausgeführt werden soll, darf DisableCustomize nicht verwendet werden.
#If Vba6 Then
Application.CommandBars.DisableCustomize = True
#End If
Abgesehen von den funktionalen Unterschieden sollten Sie auch darauf achten, dass in Dokumentationen, Benutzer-Anleitungen, Hinweis- und Fehlermeldungen usw. korrekte Bezeichnungen verwenden. Hier zwei Beispiele, was damit gemeint ist:
1. Beispielsweise wird auf einem Macintosh-System die Hilfe mit der HILFE-Taste und nicht wie bei Windows mit F1 aufgerufen. Wenn Sie also zum Beispiel in der Statusleiste die Information "Drücken Sie F1 für Hilfe" anzeigen, so kann ein Macintosh-Anwender mit diesem Hinweis nichts anfangen, weil die Tastatur seines Computers zwar eine Taste F1 besitzt, diese jedoch die Rückgängig-Funktion aufruft.
2. Wenn Sie in der Benutzerdokumentation schreiben, man solle mit dem Menübefehl Datei/Öffnen das "Öffnen"-Dialogfenster aufrufen, so stimmt diese Angabe bei Microsoft Excel v.X für Macintosh nicht, weil in dieser Excelversion das Menü nicht mit "Datei" sondern mit "Excel" beschriftet ist.
Nachfolgend ein paar interessante und wichtige Unterschiede
zwischen Excel für Windows und Excel für Macintosh:
- Excel-Hilfe aufrufen
- VBA-Editor öffnen
- Makroausführung
unterbrechen/In den Haltemodus wechseln
- System unterbrechen
- Kopieren und Einfügen
- Menü "Datei" von Excel
- Persönliche
Makro-Arbeitsmappe
- Excel-Startordner
- Funktionen für
Standard OLE-Objekte
Windows: F1
Macintosh: HILFE
Anmerkung
Bitte beachten Sie, dass auf dem Macintosh mit der Taste F1 der Rückgängig-Befehl
ausgeführt wird!
Windows: ALT+F11
Macintosh: OPTION+F11
Makroausführung unterbrechen/In den Haltemodus wechseln
Windows: Strg+Pause (Ctrl+Break) bzw. Esc
in Microsoft Excel
Macintosh: BEFEHL+Punkt (COMMAND+PERIOD)
Windows: Strg+Alt+Entf (Ctrl+Alt+Delete)
Macintosh: COMMAND+OPTION+ESC (bzw. Force Quit)
Windows: Strg+C für Kopieren; Strg+V für
Einfügen
Macintosh: COMMAND+C für Kopieren, COMMAND+V für Einfügen (oft
auch als CMD+C bzw. CMD+V angegeben)
Windows: Das Menü "Datei" ist
in allen Excelversionen mit "Datei" bezeichnet
Macintosh: Das Menü "Datei" ist in Excel 98 und Excel
2001 mit "Datei", in Excel v. X jedoch mit "Excel" bezeichnet.
Anmerkung
Die unterschiedliche Beschriftung des Menüs muss übrigens auch im Programmcode
berücksichtigt werden. Beispielsweise führt in Excel v.X der Zugriff auf das Control
"Datei" der Arbeitsblatt-Menüleiste ("Worksheet Menu Bar") zum
Laufzeitfehler 5 "Unzulässiger Prozeduraufruf oder ungültiges Argument", weil
dieses Control nicht existiert (d.h. genauer gesagt einen anderen Namen besitzt). Die
Codezeile
MsgBox Application.CommandBars(1).Controls("Datei").Enabled
funktioniert somit nicht.
Wenn stattdessen der Zugriff anhand der FindControl-Methode erfolgt, kann kein Fehler auftreten. Die Codezeile
MsgBox Application.CommandBars.FindControl(Id:=30002).Enabled
funktioniert daher in jedem Fall, egal auf welcher Plattform und in welcher Excelversion.
Persönliche Makro-Arbeitsmappe
Windows: Dateiname
"Personl.xls", Ordner "XlStart"
Macintosh: Dateiname "Personal Macro Workbook", Ordner
"<Microsoft Office folder>:Office:Startup:Excel:Personal Macro
Workbook"
Anmerkung
Die persönliche Makro-Arbeitsmappe befindet sich gewöhnlich im oben angegebenen
Ordner. Sie kann allerdings auch in einem anderen Ordner liegen (z.B. im zusätzlichen
Startordner von Microsoft Excel).
Windows: [Path to Office
folder]\Office\Xlstart
Macintosh:
- Excel X: "Macintosh HD/[Path to Office folder]/Microsoft Office
X/Office/Startup/Excel"
- Excel 2001: "Macintosh HD:[Path to Office folder]:Microsoft Office
2001:Office:Startup:Excel"
"Macintosh HD" ist die Macintosh-Festplatte und "[Path to Office folder]" der Pfad zum Programmverzeichnis von Microsoft Office.
Je nach Plattform sind bestimmte Zeichen in Dateinamen verboten.
Windows: Anführungszeichen ("),
Apostroph ('), Schrägstrich (/), umgekehrter Schrägstrich (\), Doppelpunkt (:) und
vertikale Linie (|)
Macintosh: Doppelpunkt (:)
Mehr dazu siehe unter Erlaubte Zeichen in Dateinamen und Codebeispiel: Gültigkeit eines vom Benutzer eingegebenen Dateinamens überprüfen.
Windows: Strg+Umschalt+Eingabe
Macintosh:
+Eingabe
Platzhalterzeichen * und ? (in Datei- und Pfadnamen)
Windows: Der Platzhalter * steht für
mehrere Zeichen, ? steht für ein einzelnes Zeichen
Macintosh: Platzhalterzeichen haben keine Bedeutung und werden als
gewöhnliche Zeichen behandelt
Anmerkung
Die beiden Platzhalterzeichen besitzen auf dem Macintosh nur in Bezug auf
Datei-/Pfadnamen keine Bedeutung. Für andere Dinge kann man sie ohne Einschränkung
einsetzen, unter anderem zum Vergleichen von Zeichenfolgen, wie es diese Codezeile als
Beispiel zeigt:
If strName Like "Mei*" Then
Bei der Angabe einer Excelversion muss man darauf achten, dass man die korrekte Bezeichnung verwenden. Diese neueren Versionen existieren von Microsoft Excel:
Windows:
- Excel 97, Version 8
- Excel 2000, Version 9
- Excel 2002 (auch Excel XP genannt), Version 10
- Excel 2003, Version 11
Macintosh:
- Excel 98, Version 8
- Excel 2001, Version 9
- Excel X (auch Excel v.X genannt), Version 10
- Excel 2004, Version 11
Dateiformate (Konstanten von XlFileFormat)
Die beiden Dateiformate CSV und Text besitzen je nach Plattform unterschiedliche Konstanten.
Windows: xlCSVWindows, xlTextWindows
Macintosh: xlCSVMac, xlTextMac
Tipp:
Konstante xlCurrentPlatformText einsetzen
Mit der Konstante xlCurrentPlatformText wird automatisch das gemäss der
gerade vorliegenden Plattform erforderliche Textformat benutzt. Man muss somit nicht die
gerade verwendete Plattform kennen und entsprechend entweder xlTextWindows oder xlTextMac
verwenden.
Eine vollständige Liste der Konstanten-Inkompatibilitäten finden Sie unter Unterschiede bei integrierten Konstanten.
Funktionen für Standard OLE-Objekte (StdFuctions von OLE Automation-Bibliothek, Datei StdOLE2.tlb)
In der Typen-Bibliothek "OLE Automation" (Datei StdOLE2.tlb) gibt es eine Funktion zum Laden einer Bilddatei (LoadPicture) und eine Prozedur zum Speichern eines Bildes (SavePicture). Sowohl LoadPicture als auch SavePicture stehen auf beiden Plattformen zur Verfügung und funktionieren identisch. Weil eine Dateioperation durchgeführt wird (Lesen bzw. Schreiben von Daten), muss jeweils ein Dateiname bzw. Dateipfad angegeben werden (Argument FileName). Hierbei ist zu Beachten, dass je nach Plattform die entsprechende Schreibweise für Pfade verwendet werden muss.
Modul StdFunctions:
- Funktion LoadPicture
- Prozedur SavePicture
Argument FileName
In diesem Kapitel "Spezialthemen" wird all jenes unter die Lupe genommen, was bei plattformunabhängigen Arbeitsmappen einen Einfluss hat oder haben könnte. Es handelt sich um Dinge, ...
Kennwörter und Verschlüsselung
Digitale Signaturen von VBA-Projekten
UNC-Pfade in externen Verknüpfungen
Office Web Components
XL-Viewer
Excel-Startparameter
COM Add-Ins
Excel 4-Makros
Angebundene Symbolleisten
Integrierte Dialoge
Mail-System/E-Mail versenden
Drucker/Druckeranschluss
Kennwörter und Verschlüsselung
Sonderzeichen in Kennwörtern

Abbildung: Fehlermeldung wegen speziellen Zeichen
[46]
XL97: Incorrect Password Error When Opening a Excel 2002
Workbook in Excel 97 or Excel 2000
Error Message "The password you supplied is not correct. Verify that
the CAPS LOCK key is off and be sure to use the correct capitalization."
http://support.microsoft.com/?kbid=294414
Diese Fehlermeldung erscheint, wenn die Arbeitsmappe in Excel 2002 mit einer von
Excel 97 nicht erkennbaren Verschlüsselung gespeichert wurde.
Digitale Signaturen von VBA-Projekten
UNC-Pfade in externen Verknüpfungen
Kapitel 2.8 "URL Encoding"
TON.ABSPIELEN
VERZEICHNIS
Dateipfade werden von Microsoft Excel immer in Form von relativen Pfaden gespeichert. Bis auf eine einzige Ausnahme: Pfade von Dateien in Makrozuweisungen.
Abbildung: Zuweisen eines Makros
(Dialogs-Auflistung)
Application.Dialogs(xlDialogOpen).Show
z.B. xlDialogOpen, xlDialogSaveAs, xlDialogSaveWorkbook, xlDialogSaveWorkspace, xlDialogFileDelete, xlDialogFindFile, xlDialogMailLogon
- Welche Dialoge sind auf einer Plattform nicht verfügbar?
- Was ist mit unterschiedlichen Argumenten (Reihenfolge oder nicht vorhanden, weil das Dialogfenster anders aussieht)?
Macintosh verwendet dazu ein spezielles Objekt
(MailSystem-Eigenschaft des Application-Objektes mit xlPowerTalk-Konstante)
Drucker- und Port-Bezeichnung.
Application.ActivePrinter
Die Bezeichnung des Drucker-Ports wird durch das Betriebssystem bestimmt.
?Application.ActivePrinter
HP LaserJet 4M Plus auf LPT1:
Namen zeichenorientierter Geräte in Dateinamen unzulässig (Fehler 320)
Sie können in Visual Basic keiner Datei denselben Namen geben wie einem zeichenorientierten Treiber. Dieser Fehler hat folgende Ursache und Lösung:
Sie haben versucht, einen Dateinamen wie z.B. AUX, CON, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, LPT4, PRN oder NUL zu verwenden.
Geben Sie der Datei einen anderen Namen.
Abfragen der Ausführungsumgebung
Sobald die Arbeitsmappe beziehungsweise das VBA-Programm etwas enthält, was nicht auf beiden Plattformen funktioniert oder zu unterschiedlichen Ergebnissen führt, muss man die aktuell verwendete Ausführungsumgebung abfragen.
Betriebssystem
herausfinden
- In Microsoft Excel
- In
einem anderen Microsoft Office-Programm
- Während der
Code-Kompilierung
Excelversion
herausfinden
- Haupt- und Unterversion
- Buildnummer
- Version der Programmdatei
VBA-Editor-Version
herausfinden
- Programmversion
VBA-Version
herausfinden
- Sprachversion
Windowsversion
herausfinden
- Hauptversion,
Unterversion und Buildnummer
Version
eines anderen Microsoft Office-Programmes herausfinden
- Versions- und
Buildnummer von Microsoft Word
- Versions-
und Buildnummer von Microsoft PowerPoint
Betriebssystem in Microsoft Excel abfragen
Damit Sie ein VBA-Programm so schreiben können, damit es sowohl auf einem Windows- als auch auf einem Macintosh-Rechner funktioniert wird, müssen Sie wissen, unter welchem Betriebssystem Ihr Programm gerade ausgeführt wird. Mit anderen Worten muss im Programmcode herausgefunden werden, ob ein Windows- oder ein Macintosh-Rechner benutzt wird. Die Abfrage wird vorzugsweise mit der OperatingSystem-Eigenschaft des Application-Objektes vorgenommen.
Auf einem Macintosh-Rechner enthält die Eigenschaft OperatingSystem immer eine Zeichenfolge, die mit dem Wort "Macintosh" beginnt (z.B. "Macintosh 7.00"). Unter Windows enthält die Eigenschaft eine Zeichenfolge, die das Wort "Windows" enthält. Beispielsweise lautet sie bei Windows NT "Windows (32-bit) NT 4.00"; bei Windows 98 lautet sie "Windows (32-bit) 4.10". Damit man den Namen des Betriebssystems ohne Versionsnummer erhält, muss man die Zeichenfolge also noch auswerten. Dazu existieren drei Möglichkeiten, die nachfolgend vorgestellt werden.
Lösungsvariante mit der InStr-Funktion
Hier die von Microsoft empfohlene Lösung mit der InStr-Funktion:
Dim strOpSys As String
strOpSys = Application.OperatingSystem
If InStr(strOpSys, "Windows") > 0 Then
'Windows
Else
'Macintosh
End If
Lösungsvariante mit dem
Like-Vergleichsoperator
In einem Microsoft Knowledge Base-Artikel ist auch diese Variante mit dem Like-Operator
vorgestellt:
If Application.OperatingSystem Like "*Macintosh*" Then
'Macintosh
Else
'Windows
End If
Lösungsvariante mit der Evaluate-Methode und
der INFO-Tabellenfunktion
Es gibt eine weitere Lösung anhand der INFO-Tabellenfunktion. Die
Tabellenfunktion wird wie gewohnt als Formel in eine Zelle eingetragen:
=INFO("System")
Durch den angegebenen Infotyp "System" gibt die obige Formel auf einem Windows-Rechner "PCDOS" und auf einem Macintosh-Rechner "MAC" zurück.
Man kann die Funktion anhand der Evaluate-Methode auch direkt im VBA-Code auswerten:
If
LCase(Evaluate("INFO(""System"")")) = "pcdos" Then
'Windows
Else
'Macintosh
End If
Die Umwandlung in Kleinbuchstaben mittels LCase erfolgt hier nur sicherheitshalber. In der Excel-Referenz (Online-Hilfe) steht, dass der Rückgabewert der Funktion die Kleinschrift verwendet, d.h. "pcdos" beziehungsweise "mac". Wenn man die INFO-Funktion jedoch in eine Zelle eingibt, so wird das Ergebnis in Grossschrift angezeigt, also "PCDOS" bzw. "MAC". Theorie und Praxis stimmen somit nicht überein, weshalb man eine explizite Schriftkonvertierung durchführen sollte.
Man könnte anstelle von "System" auch den Infotyp "SysVersion" (oder "OSVersion") verwenden. Dann erhält man die gleiche Zeichenfolge wie bei der Eigenschaft OperatingSystem. Der Nachteil ist allerdings, dass man diese Zeichenfolge wie bereits weiter oben beschrieben mittels InStr oder Like noch auswerten muss. Beim Infotyp "System" ist das nicht notwendig.
Lösungsvariante mit einer benutzerdefinierten
Excel-Funktion
Wenn man das 'tatsächliche' Betriebssystem in einer Zelle ausgeben möchte,
aber nicht die INFO-Tabellenfunktion verwenden will, muss man eine kleine
benutzerdefinierte Excel-Funktion schreiben.
Die nachfolgende Funktion ermittelt anhand der bedingten Kompilierung die aktuelle Plattform. Der Programmcode muss in ein Codemodul eingegeben werden.
Public Function OS() As String
#If Win32 Then
OS = "Windows"
#Else
OS = "Macintosh"
#End If
End Function
Achtung:
Die Zellformel lautet somit wie folgt:
=OS()
Je nach Plattform ist das Resultat der Formel entweder "Windows" oder "Macintosh".
Siehe auch unter Bedingte
Kompilierung.
Siehe auch unter Compiler-Konstanten.
Siehe auch unter Compiler-Konstanten
von Microsoft Office 2000, 2002/XP und 2003.
Betriebssystem in einem anderen Microsoft Office-Programm abfragen
Microsoft Word
Wenn Sie Programmcode schreiben, der in einem anderen Microsoft
Office-Programmen ausgeführt werden soll, müssen Sie die Unterschiede der jeweiligen
Objektmodelle beachten. In Microsoft Word beispielsweise ist OperatingSystem eine
Eigenschaft des System-Objektes und nicht des Application-Objektes:
If Application.System.OperatingSystem Like "*Windows*" Then
'Windows
Else
'Macintosh
End If
Man kann System auch ohne vorangestelltes Application-Objekt schreiben:
If System.OperatingSystem Like "*Windows*" Then
'Windows
Else
'Macintosh
End If
Bitte beachten Sie, dass in Microsoft Word die OperatingSystem-Eigenschaft nicht den gleichen Inhalt wie in Microsoft Excel besitzt. Die beiden obigen Codebeispiele geben bei Windows 98 nur "Windows" und bei Windows NT 4 nur "Windows NT" aus.
Microsoft PowerPoint
Bei Microsoft PowerPoint ist OperatingSystem wie bei
Excel eine Eigenschaft des Application-Objektes. Diese Code :
If Application.OperatingSystem Like "*Windows*" Then
'Windows
Else
'Macintosh
End If
Anmerkung
Vielleicht werden Sie denken, dass die Lösung mittels Like nicht
funktioniert, weil auf dem Macintosh keine Platzhalterzeichen ('*' und '?') verwendet
werden können. Die beiden Platzhalter können in diesem Fall auf Macintosh verwendet
werden. Sie funktionieren nur nicht im Zusammenhang mit Datei- und Verzeichnisnamen. Mehr
dazu siehe unter Dir-Funktion.
Betriebssystem während der Code-Kompilierung abfragen
Man kann das vorliegende Betriebssystem auch ganz ohne Benutzung einer Objekt-Eigenschaft (sprich OperatingSystem, siehe weiter oben) herausfinden. Dies wird durch die Verwendung der bedingten Kompilierung bzw. den Compiler-Konstanten ermöglicht. Genau genommen ist dies sogar die beste Lösung, da man die Spezialitäten der verschiedenen Office-Objektmodelle nicht zu berücksichtigen braucht - falls der Programmcode in verschiedenen Microsoft Office-Programmen zum Einsatz kommt.
Compiler-Konstante Win32
Mit der Compiler-Konstante Win32 kann festgestellt werden, ob der
VBA-Code auf einem Windows-Rechner ausgeführt wird. Wenn Win32 gleich True
ist, läuft das Programm unter Windows. Das folgende Beispiel gibt in diesem Fall die
Meldung "Windows" aus:
#If Win32 Then
MsgBox "Windows"
#Else
MsgBox "Macintosh"
#End If
Compiler-Konstante Mac
Man kann auch anhand der integrierten Compiler-Konstante Mac
überprüfen, ob das Programm auf einem Macintosh läuft. Wenn Mac gleich True
ist, wird ein Macintosh verwendet und daher im nachstehenden Beispiel die Meldung
"Macintosh" angezeigt:
#If Mac Then
MsgBox "Macintosh"
#Else
MsgBox "Windows"
#End If
Wichtig: Sie sollten grundsätzlich die Lösungsvariante mit der Compiler-Konstante Win32 benutzen. Also auch dann, wenn Sie Ihr Programm mit Excel für Macintosh beziehungsweise auf einem Macintosh entwickeln. Weil die Konstante Mac erst in VBA 6 zur Verfügung steht, kann der Code in älteren Versionen als Microsoft Office v.X für Macintosh zu einem falschen Ergebnis führen. Die Konstante Win32 dagegen funktioniert dagegen in allen Versionen von Excel für Macintosh und Excel für Windows.
TODO
Siehe auch unter Bedingte
Kompilierung.
Siehe auch unter Compiler-Konstanten.
Siehe auch unter Compiler-Konstanten
von Microsoft Office 2000, 2002/XP und 2003.
Produktversion: 97
Excelversion: 97 SR-1
File Version (Dateiversion): 8.0a
Programmdatei-Version: 8.0.1.4307
Application.Version: 8.0a
Application.Build: 4307
Haupt- und Unterversion abfragen (Major/Minor)
Lösungsvariante mit der Version-Eigenschaft
Text...
TODO
Auch die Information der bei der Programmausführung vorliegenden Excelversion ist nützlich. Die Versionsnummer wird vorzugsweise anhand der Version-Eigenschaft des Application-Objektes ermittelt:
MsgBox Application.Version
Beachtet werden muss, dass nicht "97", "2000" oder dergleichen ausgegeben wird, sondern die interne Versionsnummer von Microsoft Excel. Bei Excel 97 lautet diese 8.0, bei Excel 2000 9.0, bei Excel 2002/XP 10.0 und bei Excel 2003 11.0. Bei Excel v.X für Macintosh lautet die Versionsnummer 10.0 oder, bei installiertem Office-Update, 10.1 (Anmerkung des Autors: Die exakten Versionsnummern von Excel für Macintosh kenne ich leider nicht). Dazu kommt, dass die Versionsinformation nicht zwingend nummerisch sein muss (weil die Version-Eigenschaft vom Typ String ist). Beispielsweise wird bei Excel 97 mit installiertem Service Release 1 als Version die Zeichenfolge "8.0a" angezeigt. Zum Herausfinden der Excel-Hauptversion kann der nachfolgende Programmcode verwendet werden, der die Val-Funktion von VBA zuhilfe nimmt:
If Val(Application.Version) = 8 Then
'Microsoft Excel 97
Else
'Microsoft Excel 2000 oder neuer
End If
Siehe auch unter Alle Updates und Service Packs von Office und Excel.
Lösungsvariante mit der Evaluate-Methode und
der INFO-Tabellenfunktion
Den in Version hinterlegten Wert können Sie auch anhand der
Excel-Tabellenfunktion INFO mit Infotyp "Version" herausfinden. In einer
Tabellenblattzelle würde die Formel wie folgt aussehen:
=INFO("Version")
Bei Microsoft Excel 97 mit SR-1 steht in der Zelle als Ergebnis "8.0a" (vergleiche Beschreibung weiter oben).
Auch mit VBA-Code kann die Tabellenfunktion aufgerufen werden, indem man die Evaluate-Methode einsetzt. Die entsprechende Abfrage sieht dann so aus:
MsgBox Evaluate("INFO(""Version"")")
Buildnummer abfragen (Build bzw. Revision)
Die Buildnummer der vorliegenden Excelversion können Sie anhand der Build-Eigenschaft des Application-Objektes ermitteln:
MsgBox Application.Build
Für die Buildnummer gibt es keine entsprechende Excel-Tabellenfunktion.
Man kann eine benutzerdefinierte Funktion für Excel schreiben:
TODO
Public Function BUILDNUMMER() As Long
BUILDNUMMER = Application.Build
End Function
TODO
=BUILDNUMMER()
Version der Programmdatei "Excel.exe" abfragen
TODO

Abbildung: Versionsigenschaften mit Dateiversion von Excel.exe
GetFileVersion-Methode des FileSystemObject-Objektes aus der File System Object-Bibliothek.
Der vollständige Pfad der Datei "Excel.exe" muss bekannt sein.
MsgBox CreateObject("Scripting.FileSystemObject").GetFileVersion("C:\Programme\Microsoft Office\Office\Excel.exe")
Die obige Programmzeile gibt zum Beispiel "8.0.1.4307" bei Microsoft Excel 97 mit SR-1 aus.
VBA-Editor-Version herausfinden
Gibt einen String zurück. Beim VBA-Editor von Microsoft Office 97 wird "5.00" angezeigt.
TODO
MsgBox Application.VBE.Version
Zum Abfragen der VBA-Editor-Version gibt es keine Excel-Tabellenfunktion.
Man kann jedoch zu diesem Zweck eine benutzerdefinierte Excel-Funktion schreiben:
TODO
Public Function VBEVERSION() As String
VBEVERSION = Application.VBE.Version
End Function
TODO
=VBEVERSION()
Anhand der Compiler-Konstante Vba6 kann man überprüfen, ob das Programm in einer VBA 6- oder einer VBA 5-Umgebung ausgeführt wird.
TODO
#If Vba6 Then
MsgBox "VBA 6"
#Else
MsgBox "VBA 5"
#End If
Anmerkung
Obwohl die Compiler-Konstante Vba6 in VBA 5 nicht existiert,
funktioniert der obige Programmcode auch mit VBA 5 problemlos.
TODO
Siehe auch unter Bedingte
Kompilierung.
Siehe auch unter Compiler-Konstanten.
Siehe auch unter Compiler-Konstanten
von Microsoft Office 2000, 2002/XP und 2003.
Hauptversion, Unterversion und Buildnummer abfragen (Major/Minor/Build)
In bestimmten Situationen ist es erforderlich zu wissen, welche Version von Windows gerade verwendet wird. Beispielsweise um Herauszufinden, ob ein bestimmtes Service Pack installiert ist, welches Voraussetzung für die Benutzung Ihres Programmes ist.
Mit dem folgenden Programmcode können Sie die Windowsversion abfragen. Es wird die Hauptversions-, Unterversions- und Buildnummer ausgegeben.
'Deklarationsbereich
Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _
(ByRef lpVersionInformation As OSVERSIONINFO) As Long
'Codemodul
Sub GetWindowsVersion()
Dim myOS As OSVERSIONINFO
Dim lngResult As Long
Dim strVersion As String
myOS.dwOSVersionInfoSize = Len(myOS)
lngResult = GetVersionEx(myOS)
If myOS.dwPlatformId = 0 Then
strVersion = "Windows"
ElseIf myOS.dwPlatformId = 1 Then
strVersion = "Windows (95, 98 oder ME)"
ElseIf myOS.dwPlatformId = 2 Then
strVersion = "Windows (NT, 2000, XP oder 2003)"
Else
strVersion = "Windows"
End If
MsgBox strVersion & vbCrLf & "Version " & myOS.dwMajorVersion
& "." & _
myOS.dwMinorVersion & vbCrLf & "Build "
& myOS.dwBuildNumber
End Sub
Hinweis
Verständlicherweise kann auf einem Macintosh keine Windowsversion ermittelt
werden. Wenn sich der obige Code im VBA-Projekt einer Arbeitsmappe befindet, die mit
Microsoft Excel für Macintosh geöffnet wird, so tritt kein Kompilierungsfehler auf.
Solange die Prozedur GetWindowsVersion nicht ausgeführt wird, gibt es keinerlei
Probleme. Trotzdem ist es empfehlenswert, den gesamten obigen Programmcode von der
Kompilierung auszuschliessen. Verwenden Sie dazu zwei #If...Then...#End If-Blöcke;
einen für die Codezeilen im Deklarationsbereich und einen für die Prozedur GetWindowsVersion.
Die abzufragende Compiler-Konstante ist Win32.
Siehe auch unter Bedingte
Kompilierung.
Siehe auch unter Compiler-Konstanten.
Version eines anderen Microsoft Office-Programmes herausfinden
Versions- und Buildnummer von Microsoft Word abfragen
Die Versionsnummer der eingesetzten Microsoft Word-Version wird anhand der Version-Eigenschaft des Application-Objektes ermittelt:
MsgBox Application.Version
Beachtet werden muss, dass nicht "97", "2000" oder dergleichen ausgegeben wird, sondern die interne Versionsnummer von Microsoft Word. Bei Word 97 lautet diese 8.0, bei Word 2000 9.0, bei Word 2002/XP 10.0 und bei Word 2003 11.0. Bei Word v.X für Macintosh lautet die Versionsnummer 10.0 oder, bei installiertem Office-Update, 10.1 (Anmerkung des Autors: Die exakten Versionsnummern von Word für Macintosh kenne ich leider nicht). Dazu kommt, dass die Versionsinformation nicht zwingend nummerisch sein muss (weil die Version-Eigenschaft vom Typ String ist). Beispielsweise wird bei Word 97 mit installiertem Service Release 1 als Version die Zeichenfolge "8.0a" angezeigt. Zum Herausfinden der Word-Hauptversion kann der nachfolgende Programmcode verwendet werden, der die Val-Funktion von VBA zuhilfe nimmt:
If Val(Application.Version) = 8 Then
'Microsoft Word 97
Else
'Microsoft Word 2000 oder neuer
End If
Die Buildnummer der benutzten Wordversion kann anhand der Build-Eigenschaft des Application-Objektes abgefragt werden:
MsgBox Application.Build
Die Build-Eigenschaft enthält bei Microsoft Word einen Wert vom Datentyp String.
Bitte beachten Sie, dass die Build-Eigenschaft bei Microsoft Word - im Gegensatz zu Microsoft Excel und Microsoft PowerPoint - nicht nur die Buildnummer sondern auch die Versionsnummer enthält. Bei Microsoft Word 97 mit SR-1 gibt die obige Codezeile daher "8.0.4412" aus.
Versions- und Buildnummer von Microsoft PowerPoint abfragen
Die Versionsnummer von Microsoft PowerPoint kann über die Version-Eigenschaft des Application-Objektes herausgefunden werden:
MsgBox Application.Version
Zum Herausfinden der Hauptversion kann der nachfolgende Programmcode verwendet werden, der die Val-Funktion von VBA benutzt:
If Val(Application.Version) = 8 Then
'Microsoft PowerPoint 97
Else
'Microsoft PowerPoint 2000 oder
neuer
End If
Die Buildnummer der verwendeten PowerPoint-Version kann man mit der Build-Eigenschaft des Application-Objektes abfragen:
MsgBox Application.Build
Die Build-Eigenschaft enthält bei Microsoft PowerPoint einen Wert vom Datentyp String.
Bei Microsoft PowerPoint wird, wie auch bei Microsoft Excel, nur die Buildnummer ausgegeben (ohne Versionsnummer); im Gegensatz zu Microsoft Excel jedoch als Zeichenfolge (String) und nicht als Zahl (Long). Bei Microsoft PowerPoint 97 mit Service Release 1 (SR-1) gibt die obige Codezeile "8.00" aus.
Die bedingte Kompilierung wird normalerweise zum Kompilieren desselben Programmes für verschiedene Plattformen verwendet.
Eines der wichtigsten Hilfsmittel in Bezug auf plattformunabhängigen Programmcode.
Ebenfalls sehr wichtig zum Erstellen von VBA-Versionsunabhängigem Programmcode.
Es werden nur diejenigen Codezeilen kompiliert, die gemäss den eingesetzten Compiler-Konstanten und Konstanten für die bedingte Kompilierung zu berücksichtigen sind.
Man kann die bedingte Kompilierung steuern anhand von Compiler-Konstanten und Konstanten für die bedingte Kompilierung.
Dadurch können Kompilierungsfehler wegen unterschiedlichen VBA-Versionen (VBA 5/VBA 6) und nicht verfügbaren Schlüsselwörtern (z.B. CDecl) vermieden werden.
- Betriebssystem herausfinden
- VBA-Version herausfinden
- Programmcode explizit für Windows oder Macintosh kompilieren
- Erstellen von Debug-, Test- und Demo-Versionen eines Programmes
Argumente für die bedingte Kompilierung (Projekteigenschaften)

Abbildung: Argumente für die bedingte Kompilierung
(Projekteigenschaften)
Bedingte Kompilierung durch Einsetzen von Entscheidungsstrukturen
#If...Then...#Else-Anweisung (Beispiel):
In diesem Beispiel wird die Konstanten für die bedingte Kompilierung in einer #If...Then...#Else-Konstruktion verwendet, um zu bestimmen, ob bestimmte Programmanweisungen kompiliert werden sollen.
'Wenn Mac als True ausgewertet
wird, werden die Anweisungen im
'Anschluss an #If kompiliert:
#If Mac Then
'. Ausschliesslich Anweisungen für Mac hier.
'Wenn es sich um ein 32-Bit-Windows-Programm handelt, folgende
'Anweisungen kompilieren:
#ElseIf Win32 Then
'. Anweisungen, die nur für 32-Bit-Windows
kompiliert werden sollen.
'Andernfalls folgende Anweisungen kompilieren:
#Else
'. Anweisungen für andere Plattformen hier.
#End If
'Öffentliche Konstante für die Kompilierung im
'Deklarationsabschnitt deklarieren.
#Const conTest = 1
Sub Sample()
#If conTest = 1 Then
'. Ausführen von Code mit Testanweisungen.
#Else
'. Ausführen von normalem Code.
#End If
End Sub
#If Vba5 Then
Public Function StrReverse(sIn As String) As String
Dim i As Long
StrReverse = Space(Len(sIn))
For i = 1 To Len(sIn)
Mid(StrReverse, Len(sIn) - (i - 1), 1) = Mid(sIn, i, 1)
Next i
End Function
#End If
Siehe auch unter Compiler-Konstanten.
Siehe auch unter Compiler-Konstanten
von Microsoft Office 2000, 2002/XP und 2003.
Compiler-Konstanten und Konstanten für die bedingte Kompilierung
Es gibt so genannte "Compiler-Konstanten", und es gibt auch "Konstanten für die bedingte Kompilierung". Oft werden diese beiden Begriffe verwechselt oder als identisch betrachtet. Wenn man noch nie mit solchen Konstanten gearbeitet hat, kennt man den Unterschied zwischen diesen beiden Konstanten-Typen vermutlich nicht. Wohlgemerkt haben beide nichts mit gewöhnlichen Konstanten zu tun, die anhand der Const-Anweisung deklariert werden.
Weil aber sowohl Compiler-Konstanten als auch Konstanten für die bedingte Kompilierung gerade in Bezug auf Kompatibilität von VBA-Programmcode für Windows und Macintosh äusserst wichtig sind und häufig eingesetzt werden, muss man Zweck und Benutzung unbedingt kennen.
Zuerst die Definition dieser Konstanten:
| Compiler-Konstanten Visual Basic für Applikationen definiert Konstanten zur exklusiven Verwendung mit der #If...Then...#Else-Anweisung. Die Funktion dieser Konstanten entspricht der von Konstanten, die mit der #If...Then...#Else-Anweisung definiert wurden, mit dem Unterschied, dass sie einen globalen Gültigkeitsbereich haben, d.h., sie sind überall in einem Projekt anwendbar. Da die definierten Compiler-Konstanten von Visual Basic bereitgestellt werden, können Sie Ihre eigenen Konstanten auf keiner Ebene mit diesen Namen definieren. |
| Konstante für die bedingte Kompilierung Ein Bezeichner in Visual Basic, der mit der Compiler-Anweisung #Const oder in der Host-Anwendung definiert wird und von anderen Compiler-Anweisungen verwendet wird, um zu bestimmen, wann oder ob bestimmte Blöcke von Visual Basic-Code kompiliert werden. Konstanten für bedingte Kompilierung sind immer Private in dem Modul, in dem sie sich befinden. Mit der #Const-Anweisung können keine Public-Konstanten für die Kompilierung erstellt werden. Konstanten für bedingte Kompilierung werden immer auf Modulebene ausgewertet, unabhängig von ihrer Plazierung im Code. |
Englisch: Compiler Constant
In Bezug auf die Aufgabe, lauffähigen Programmcode für die beiden Plattformen Windows und Macintosh zu schreiben, sind Compiler-Konstanten beziehungsweise die bedingte Kompilierung äusserst nützlich.
Definition von "Compiler-Konstante":
| Compiler-Konstante Visual Basic für Applikationen definiert Konstanten zur exklusiven Verwendung mit der #If...Then...#Else-Anweisung. Die Funktion dieser Konstanten entspricht der von Konstanten, die mit der #If...Then...#Else-Anweisung definiert wurden, mit dem Unterschied, dass sie einen globalen Gültigkeitsbereich haben, d.h., sie sind überall in einem Projekt anwendbar. Da die definierten Compiler-Konstanten von Visual Basic bereitgestellt werden, können Sie Ihre eigenen Konstanten auf keiner Ebene mit diesen Namen definieren. |
- Windows oder Macintosh
- VBA5 oder VBA6
Konstanten für die bedingte Kompilierung
Englisch: Conditional Compiler Constant
Definition von "Konstante für die bedingte Kompilierung":
| Konstante für die bedingte Kompilierung Ein Bezeichner in Visual Basic, der mit der Compiler-Anweisung #Const oder in der Host-Anwendung definiert wird und von anderen Compiler-Anweisungen verwendet wird, um zu bestimmen, wann oder ob bestimmte Blöcke von Visual Basic-Code kompiliert werden. Konstanten für bedingte Kompilierung sind immer Private in dem Modul, in dem sie sich befinden. Mit der #Const-Anweisung können keine Public-Konstanten für die Kompilierung erstellt werden. Konstanten für bedingte Kompilierung werden immer auf Modulebene ausgewertet, unabhängig von ihrer Plazierung im Code. |
Merkmale von Konstanten für bedingte Kompilierung
- Konstanten für bedingte Kompilierung sind Konstanten, die Sie selbst definieren können. Ihre Deklaration erfolgt immer mit #Const.
- Konstanten für bedingte Kompilierung sind immer Private in dem Modul, in dem sie sich befinden.
- Mit der #Const-Anweisung können keine Public-Konstanten für die Kompilierung erstellt werden.
- Public-Konstanten für die bedingte Kompilierung können nur mit Hilfe der Benutzeroberfläche (VBA-Editor) erstellt werden.
Deklarieren von Konstanten für bedingte Kompilierung
Syntax
#Const KonstName = Ausdruck
Ausdruck:
Erforderlich. Literalzeichen, andere Konstanten für die bedingte Kompilierung oder
eine Kombination daraus, die alle arithmetischen oder logischen Operatoren ausser Is
enthalten kann.
Nur Konstanten für bedingte Kompilierung (und
Literalzeichen) können in Ausdruck verwendet werden. Die Verwendung einer
Standardkonstanten (die mit Const definiert wurde) oder einer nicht definierten Konstanten
löst einen Fehler aus. Umgekehrt können Konstanten, die mit dem Schlüsselwort #Const
definiert wurden, ausschliesslich für die bedingte Kompilierung verwendet werden.
Konstanten für bedingte Kompilierung werden immer auf Modulebene ausgewertet, unabhängig
von ihrer Plazierung im Code.
Globale Konstanten für bedingte Kompilierung definieren

Abbildung: Argumente für die bedingte Kompilierung
(Projekteigenschaften)
Compiler-Konstanten von Microsoft Office
Die folgenden Kapitel beschreiben die Compiler-Konstanten der verschiedenen Versionen von Microsoft Office.
Compiler-Konstanten von Microsoft
Office 97
Compiler-Konstanten von Microsoft
Office 2000, 2002/XP und 2003
Compiler-Konstanten von
Microsoft Office für Macintosh
Compiler-Konstanten von Microsoft Office 97
Visual Basic für Applikationen definiert Konstanten zur exklusiven Verwendung mit der #If...Then...#Else-Anweisung. Die Funktion dieser Konstanten entspricht der von Konstanten, die mit der #If...Then...#Else-Anweisung definiert wurden, mit dem Unterschied, dass sie einen globalen Gültigkeitsbereich haben, d.h., sie sind überall in einem Projekt anwendbar.
Auf 16-Bit-Entwicklungsplattformen werden die Compiler-Konstanten folgendermassen definiert:
| Konstante | Wert | Beschreibung |
| Win16 | True | Zeigt an, dass es sich um eine 16-Bit-Entwicklungsumgebung handelt. |
| Win32 | False | Zeigt an, dass es sich nicht um eine 32-Bit-Entwicklungsumgebung handelt. |
Auf 32-Bit-Entwicklungsplattformen werden die Compiler-Konstanten folgendermassen definiert:
| Konstante | Wert | Beschreibung |
| Win16 | False | Zeigt an, dass es sich nicht um eine 16-Bit-Entwicklungsumgebung handelt. |
| Win32 | True | Zeigt an, dass es sich um eine 32-Bit-Entwicklungsumgebung handelt. |
Anmerkung
Da die hier definierten Konstanten von Visual Basic bereitgestellt
werden, können Sie Ihre eigenen Konstanten auf keiner Ebene mit diesen Namen definieren.
Es ist somit nicht möglich, eine eigene Konstante zu definieren, die beispielsweise den
Namen "Win16" verwendet.
Compiler-Konstanten von Microsoft Office 2000, 2002/XP und 2003
Visual Basic für Applikationen definiert Konstanten zur exklusiven Verwendung mit der #If...Then...#Else-Anweisung. Die Funktion dieser Konstanten entspricht der von Konstanten, die mit der #If...Then...#Else-Anweisung definiert wurden, mit dem Unterschied, dass sie einen globalen Gültigkeitsbereich haben, d.h. sie sind überall in einem Projekt anwendbar.
Auf 16-Bit-Entwicklungsplattformen werden die Compiler-Konstanten folgendermassen definiert:
| Konstante | Wert | Beschreibung |
| Win16 | True | Zeigt an, dass es sich um eine 16-Bit-Entwicklungsumgebung handelt. |
| Win32 | False | Zeigt an, dass es sich nicht um eine 32-Bit-Entwicklungsumgebung handelt. |
Auf 32-Bit-Entwicklungsplattformen werden die Compiler-Konstanten folgendermassen definiert:
| Konstante | Wert | Beschreibung |
| Vba6 | True | Zeigt an, dass die Entwicklungsumgebung Visual Basic für Applikationen Version 6.0 ist. |
| Vba6 | False | Zeigt an, dass die Entwicklungsumgebung nicht Visual Basic für Applikationen Version 6.0 ist. |
| Win16 | True | Zeigt an, dass es sich um eine 16-Bit-Entwicklungsumgebung handelt. |
| Win16 | False | Zeigt an, dass es sich nicht um eine 16-Bit-Entwicklungsumgebung handelt. |
| Win32 | True | Zeigt an, dass es sich um eine 32-Bit-Entwicklungsumgebung handelt. |
| Win32 | False | Zeigt an, dass es sich nicht um eine 32-Bit-Windows-Entwicklungsumgebung handelt. |
| Mac | True | Zeigt an, dass die Entwicklungsumgebung Macintosh ist. |
| Mac | False | Zeigt an, dass die Entwicklungsumgebung nicht Macintosh ist. |
Anmerkung
Da die hier definierten Konstanten von Visual Basic bereitgestellt werden, können
Sie Ihre eigenen Konstanten auf keiner Ebene mit diesen Namen definieren. Es ist somit
nicht möglich, eine eigene Konstante zu definieren, die beispielsweise den Namen
"Vba6" verwendet.
Compiler-Konstanten von Microsoft Office für Macintosh
Die folgenden Angaben sind ohne Gewähr!
Vermutlich besitzt VBA von Microsoft Office 98, 2001, und v.X die gleichen Compiler-Konstanten wie Office 97 für Windows (siehe Compiler-Konstanten von Microsoft Office 97).
VBA von Microsoft Office 2004 für Macintosh besitzt dagegen die gleichen Konstanten wie Office 2000 für Windows und neuer (siehe Compiler-Konstanten von Microsoft Office 2000, 2002/XP und 2003).
Wissenswertes über die Kompatibilität von VBA-Projekten
Zu Beachten bei VBA-Projekten:
» Dateipfad der Hilfe des VBA-Projektes (Eigenschaft HelpFile)
» Dateipfad der ausführbaren Datei des VBA-Projektes (Eigenschaft BuildFileName), ab Excel 2000
» Verweise im VBA-Projekt (Auflistung References)
» Digitale Signaturen von VBA-Projekten (Eigenschaft VBASigned), ab Excel 2000
Bei den Projekteigenschaften gibt es zwei Dinge, die beachtet werden müssen.
2. Pfad der ausführbaren Datei
Eingabefeld "Name der Hilfedatei"

Abbildung: Name der Hilfedatei (Projekteigenschaften)
Eigenschaft HelpFile des VBProject-Objektes
Private Sub Workbook_Open()
ThisWorkbook.VBProject.HelpFile = ThisWorkbook.Path &
Application.PathSeparator & "Hilfedatei.hlp"
End Sub
Eigenschaft BuildFileName des VBProject-Objektes
Private Sub Workbook_Open()
ThisWorkbook.VBProject.BuildFileName = ThisWorkbook.Path &
Application.PathSeparator & "AusführbareDatei.exe"
End Sub
- Verweise im VBA-Projekt

Abbildung: Verweise eines VBA-Projektes (Verweise)
Entfernen Sie alle Verweise, die nicht zwingend benötigt werden.
Ein Verweis kann auch durch den VBA-Editor automatisch hinzugefügt worden sein. Also ohne dass man als Benutzer davon etwas merkt.
1. Dialog "Weitere Steuerelemente" öffnen
2. Calendar Control von Microsoft aktivieren
3. Steuerelement auf dem Benutzerformular anordnen
4. Verweis "Microsoft Access Calendar Control" wird automatisch gesetzt
Auch wenn man das Steuerelement auf dem Benutzerformular löscht und unter das Calendar Control in der Werkzeugsammlung entfernt (bzw. es unter "Weitere Steuerelemente" deaktiviert), bleibt der Verweis bestehen.
Es dürfen nur die Standard-Steuerelemente der Microsoft Forms Objektbibliothek verwendet werden. Alle anderen Steuerelemente sind so genannte ActiveX-Controls und funktionieren nicht auf Macintosh.

Abbildung: Werkzeugsammlung
Wenn Sie im Dialog "Weitere Steuerelemente" die Option "Nur ausgewählte Elemente" aktivieren, dürfen in der Liste nur Steuerelemente stehen, die mit "Microsoft Forms" beginnen (z.B. "Microsoft Forms 2.0 CheckBox").

Abbildung: Ausgewählte MS Forms-Steuerelemente (Weitere
Steuerelemente)
Siehe auch unter ActiveX-Controls.
- Projektname ändern (nicht "VBAProject" verwenden)
- Projekt nicht schützen (kein Anzeige-Kennwort verwenden)
- Regelmässig speichern
- Regelmässig kompilieren
- Einstellung "Variablendeklaration erforderlich" aktivieren (Option Explicit)
- Einstellung "Kompilieren bei Bedarf" deaktivieren
- Globale Konstanten für die bedingte Kompilierung als Argumente deklarieren
- Inline Comments verwenden
Arbeitsmappen und VBA-Programme plattformunabhängig machen
Art der Arbeitsmappe:
- Arbeitsmappe ohne VBA-Projekt
- Arbeitsmappe mit VBA-Projekt
- Nur VBA-Projekt
Benutzung der Exceldatei:
- Öffnen auf beiden Plattformen
- Bearbeiten auf beiden Plattformen
- Wechselweises Bearbeiten auf beiden Plattformen
Bevor Sie sich an die Anpassung der Arbeitsmappe machen, sollten Sie ein paar Vorbereitungen treffen beziehungsweise Vorbereitungsarbeiten durchführen. Dadurch kann die Mappe schneller und einfacher analysiert und schliesslich überarbeitet werden.
Arbeitsmappe:
- Dateiname der Arbeitsmappe bestimmen (nur Zeichen verwenden, die auf beiden
Plattformen erlaubt sind)
- Arbeitsmappe auf einer lokalen Festplatte speichern (wegen Geschwindigkeit)
- Sicherungskopie der Arbeitsmappe anlegen
- Freigabe für die gemeinsame Bearbeitung aufheben
- Lese-/Schreibkennwort entfernen
- Schreibschutzkennwort entfernen
- Schreibschutz-Empfehlung deaktivieren
- Standard-Dateityp von Excel verwenden (kein duales Dateiformat)
- Kennwortschutz des VBA-Projektes entfernen
- Arbeitsmappen- und Blattschutz aufheben
- Ausgeblendete Blätter, Spalten und Zeilen einblenden
- Alle Objekte anzeigen (Optionen)
- Keine externen Verknüpfungswerte speichern (Optionen)
- Keine Vorschaugrafik speichern (Dokument-Eigenschaften)
Arbeitsumgebung:
- Automatisches Speichern deaktivieren
- Nicht benötigte Add-Ins deaktivieren
- Andere geöffnete Arbeitsmappen schliessen
...
Tipps für komplexe Arbeitsmappen
Die Überarbeitung einer umfangreichen Arbeitsmappe kann recht mühsam sein. Mit anderen Worten umständlich, aufwändig und zeitintensiv.
Tipp: Codebeispiele einsetzen (siehe unter VBA-Codebeispiele für Programmierer)
Tipp: Tools und Hilfsprogramme benutzen (siehe unter Tools und Hilfsprogramme)
Tipp: Erledigte Arbeiten protokollieren
BIFF-Viewer User's Guide
Der BIFF-Viewer User's Guide ist die 'offizielle inoffizielle' Dokumentation des BIFF-Viewers, einem kleinen Utility aus dem Microsoft Excel 97 SDK, mit dem man BIFF-Dumps von Exceldateien generieren kann. Microsoft selbst hat nie eine Dokumentation zum BIFF-Viewer herausgegeben. Der hier herunterladbare Guide ist die einzige überhaupt existierende Benutzeranleitung. Der BIFF-Viewer User's Guide umfasst über 90 A4-Seiten und beschreibt neben den Programm-Funktionen viele weitere Themen wie unter anderem den Inhalt von BIFF-Dumps (d.h. Storages, Streams und Records) und das BIFF-Format generell, stellt viele Tipps und Tricks, weitere Dokumentationen, andere nützliche Tools sowie eine Vielzahl interessanter Hintergrund-Informationen vor.
Microsoft Excel File Format Documentation
Dieses hervorragende Dokument enthält eine Beschreibung des von Excel-Arbeitsmappen verwendeten Dateiformates BIFF (Binary Interchange File Format). Obwohl in diesem Dokument ein paar Kapitel noch leer sind, handelt es sich zweifellos um die beste BIFF-Dokumentation, die es überhaupt gibt.
Original Dokument-Downloadseite von OpenOffice.org: http://sc.openoffice.org/servlets/NewsItemView?newsItemID=2
Das Dokument gibt's auch im XML-Format: http://sc.openoffice.org/excelfileformat.sxw
...
...
- Code Documentor
- BIFF-Workbench
- BIFF-Viewer
- JWalk Chart Tools
Code Documentor
Der Code Documentor ist ein für VBA-Programmierer äusserst nützliches Add-In zum Erstellen eines Berichtes zu einem VBA-Projekt. Listet unter anderem die Modulnamen und Projekt-Komponenten auf, zeigt Anzahl Codezeilen, Prozeduren, DLL-Deklarationen usw. und berechnet die Grösse der einzelnen Codemodule in KB.
Entwickelt von: Application Professionals, Rob
Bovey
www.appspro.com
BIFF-Workbench
Die BIFF-Workbench ist das umfassendste Arbeitswerkzeug für BIFF-Dumps, das es überhaupt gibt. Wer schon mal mit dem BIFF Viewer - einem Utility aus dem Microsoft Excel 97 SDK - einen BIFF-Dump generiert und betrachtet hat, wird sich sehr wahrscheinlich an der unkomfortablen Bedienung gestört und viele sinnvolle Funktionen und Features vermisst haben. Die BIFF-Workbench schafft ein für allemal Abhilfe. Dieses Programm ist weit mehr als nur ein verbesserter Viewer. Sie erhalten eine komplette Arbeitsumgebung mit einer Vielzahl durchdachter Funktionen, mit denen das Untersuchen und Analysieren von Dumps stark vereinfacht wird. Weil der BIFF-Viewer keinerlei Analyse- und Übersichtsfunktionen besitzt, musste bisher ein Dump in einem anderen Programm wie z.B. Microsoft Word weiterverarbeitet werden - beispielsweise zum Suchen einer Zeichenfolge oder zum Ermitteln der Anzahl Records eines bestimmten Recordtyps (z.B. Anzahl STYLE-Records). Solche und viele weitere Analysen stehen in der BIFF-Workbench fixfertig zur Verfügung.
Auch Anwender mit nur spärlichem Know-how über BIFF-Dumps können die BIFF-Workbench nutzbringend einsetzen.
Updates der vom Tool benötigten Metadaten, der Online-Hilfe, den begleitenden Dokumentationen sowie des zusätzlichen Excel Add-Ins finden Sie auf der Produkt-Webseite.
BIFF-Viewer
Im Microsoft Excel 97 SDK ist unter anderem ein kleines
Utility namens BIFF Viewer (Version 1.8.0) enthalten, mit dem man Dumps
von BIFF-Dateien erstellen und in einer Baum-Darstellung anzeigen kann. Das Programm ist
eigentlich für Excel xls-Dateien gedacht, kann jedoch auch eingeschränkt für Word doc-,
PowerPoint ppt- und viele weitere Dateien benutzt werden. Zumindest zeigt es die
verschiedenen Streams sowie ein allenfalls in der Datei vorhandenes VBA-Projekt.
Die Version 1.0 dieses Tools wurde im Jahre 1993 entwickelt; die
hier zum Download angebotene Version 1.8.0 stammt aus dem Jahre 1997 und ist die neueste
und letzte Ausgabe. Das Programm wird nicht mehr weiterentwickelt.
Es existiert keine offizielle Dokumentation zum BIFF Viewer
seitens Microsoft, dafür aber eine inoffizielle in Form eines User's Guide. Informationen
und Download der Dokumentation siehe unter BIFF-Viewer
User's Guide. Beachten Sie auch die Hinweise bezüglich Tool-Benutzung und Analyse von
BIFF-Dumps auf der Seite "Excel-Dateiformat"
von The SOSCQ Page.
JWalk Chart Tools
...
Entwickelt von: JWalk & Associates
http://j-walk.com/ss
VBA-Codebeispiele für Programmierer
Nachfolgend finden Sie ein paar interessante Codebeispiele zu verschiedenen Themen.
Es handelt sich um Musterlösungen für bestimmte Aufgaben und Probleme.
[01] Gültigkeit
eines vom Benutzer eingegebenen Dateinamens überprüfen
[02] Plattformunabhängiges Pfadtrennzeichen bei Bedarf
anfügen
[03] Verknüpfungen von Formular-Steuerelementen
auflisten
[04] Ziele von Hyperlinks überprüfen und auflisten
[05] Quellen von externen Verknüpfungen auflisten
[06] RowSource von allen ListBox- und
ComboBox-Steuerelementen auflisten
[07] Quellbereiche von Konsolidierungen auflisten
[08] Hyperlink-Basis abfragen/ändern
[09] Datumssystem einstellen
[10] Datenquellen und Verbindungsinformationen von
Pivot-Tabellen auflisten
[11] Verbindungsinformationen von Datenbank- und
Web-Abfragen auflisten
[12] Verfügbarkeit einer Schriftart überprüfen
[13] Quellbereiche von Objekten mit verknüpften Daten
auflisten
[14] Objekte mit zugewiesenen Makros auflisten
[15] Verweise im VBA-Projekt auflisten
[16] Symbolleisten-Steuerelemente mit zugewiesenen
Makros auflisten
[17] Quellen von verknüpften OLE-Objekten auflisten
[18] Schriftarten in Codezeilen eines VBA-Projektes
auflisten
[19] Zellen mit DDE-Verknüpfungen auflisten
[20] ProgIDs von OLE-Objekten auflisten
[21] Datenquellen von Diagrammen auflisten
[22] Benutzung von plattformspezifischen
Tabellenfunktionen überprüfen
[23] Zellen mit Pfaden im Zellinhalt auflisten
[24] Zellkommentare mit Pfaden im Text auflisten
[25] Namen auflisten
[26] Schriftarten in Formatvorlagen überprüfen
» Codebeispiel 1: Gültigkeit eines vom Benutzer eingegebenen Dateinamens überprüfen
Wenn der Benutzer die Möglichkeit zur Eingabe eines Dateinamens besitzt, sollten Sie die Gültigkeit des Dateinamens überprüfen. Da unter Windows und Macintosh nicht die gleichen Zeichen in Dateinamen erlaubt sind, muss eine kleine Validierungsroutine programmiert werden.
Die hier vorgestellte Prozedur verlangt vom Benutzer einen Dateinamen, welcher anschliessend abhängig der aktuellen Plattform überprüft wird.
Sub CheckFilename()
Dim strFile As String
Dim intCounter As Integer
strFile = InputBox("Bitte Dateiname eingeben:",
"Dateiname")
If Application.OperatingSystem Like "*Windows*" Then
'Windows
For intCounter = 1 To Len(strFile)
If InStr("?*<>|/\:", Mid$(strFile,
intCounter, 1)) > 0 Or InStr(Chr$(34), Mid$(strFile, intCounter, 1)) > 0 Then
MsgBox "Bitte geben Sie einen gültigen
Dateinamen ein." & vbCrLf & vbCrLf & _
"Dateinamen dürfen
keines dieser Zeichen enthalten:" & vbCrLf & "? * / \ : | < >
""", vbInformation
Exit Sub
End If
Next intCounter
Else
'Macintosh
If InStr(":", strFile) > 0 Then
MsgBox "Bitte geben Sie einen gültigen Dateinamen
ein." & vbCrLf & vbCrLf & _
"Dateinamen dürfen keinen
Doppelpunkt ':' enthalten.", vbInformation
Exit Sub
End If
End If
End Sub
Weitere Informationen erhalten Sie unter Erlaubte Zeichen in Dateinamen.
Informationen über das Herausfinden des aktuellen Betriebssystems finden Sie unter Abfragen der Ausführungsumgebung.
» Codebeispiel 2: Plattformunabhängiges Pfadtrennzeichen bei Bedarf anfügen
Dieses Codebeispiel zeigt, wie man ein Pfadtrennzeichen an einen Pfad anfügen kann, sofern dieser noch kein abschliessendes Pfadtrennzeichen besitzt.
Application.PathSeparator
Sub AddPathSeparatorIfNeeded()
Dim strPath As String
strPath = Application.TemplatesPath
strPath = IIf(Right$(strPath, 1) <> Application.PathSeparator, strPath &
Application.PathSeparator, strPath)
MsgBox strPath
End Sub
» Codebeispiel 3: Verknüpfungen von Formular-Steuerelementen auflisten
Bestimmte Formular-Steuerelemente können einen so genannten Listenbereich und eine Ausgabeverknüpfung besitzen.
LinkedCell-Eigenschaft
ListFillRange-Eigenschaft
Listenbereich und Ausgabeverknüpfung der Formular-Steuerelemente des aktiven Arbeitsblattes:
Sub GetFormControlLinksSheet()
Dim objFormControl As Object
Dim objShape As Shape
Dim strResult As String
On Error Resume Next
For Each objShape In ActiveSheet.Shapes
If objShape.Type = msoFormControl Then
Set objFormControl = objShape.DrawingObject
strResult = objFormControl.ListFillRange
If Err.Number = 0 Then
If strResult <> "" Then
Debug.Print objShape.Name &
": Listenbereich: " & strResult
Else
Debug.Print objShape.Name &
": Listenbereich: (Nicht festgelegt)"
End If
Else
Err.Clear
End If
strResult = objFormControl.LinkedCell
If Err.Number = 0 Then
If strResult <> "" Then
Debug.Print objShape.Name &
": Ausgabeverknüpfung: " & strResult
Else
Debug.Print objShape.Name &
": Ausgabeverknüpfung: (Nicht festgelegt)"
End If
Else
Err.Clear
End If
Set objFormControl = Nothing
End If
Next
End Sub
Listenbereich und Ausgabeverknüpfung der Formular-Steuerelemente aller Arbeitsblätter:
Sub GetFormControlLinksBook()
Dim objFormControl As Object
Dim objShape As Shape
Dim wksSheet As Worksheet
Dim strResult As String
On Error Resume Next
For Each wksSheet In ActiveWorkbook.Worksheets
For Each objShape In wksSheet.Shapes
If objShape.Type = msoFormControl Then
Set objFormControl = objShape.DrawingObject
strResult = objFormControl.ListFillRange
If Err.Number = 0 Then
If strResult <> ""
Then
Debug.Print
wksSheet.Name & " > " & objShape.Name & ": Listenbereich:
" & strResult
Else
Debug.Print
wksSheet.Name & " > " & objShape.Name & ": Listenbereich:
(Nicht festgelegt)"
End If
Else
Err.Clear
End If
strResult = objFormControl.LinkedCell
If Err.Number = 0 Then
If strResult <> ""
Then
Debug.Print
wksSheet.Name & " > " & objShape.Name & ":
Ausgabeverknüpfung: " & strResult
Else
Debug.Print
wksSheet.Name & " > " & objShape.Name & ":
Ausgabeverknüpfung: (Nicht festgelegt)"
End If
Else
Err.Clear
End If
Set objFormControl = Nothing
End If
Next
Next
End Sub
Siehe auch unter Pfade in der Arbeitsmappe.
Siehe auch unter Unterschiede bei Formular-Steuerelementen.
» Codebeispiel 4: Ziele von Hyperlinks überprüfen und auflisten
Hyperlinks der gesamten Arbeitsmappe werden überprüft.
URLs werden nicht berücksichtigt (Adressen wie HTTP, FTP, FILE, MAILTO etc.).
UNC-Pfade werden nicht berücksichtigt.
VBA-Code befindet sich in der zu überprüfenden Arbeitsmappe.
Sub
ListAndCheckFilesInHyperlinks()
Dim objLink As Hyperlink
Dim wksSheet As Worksheet
Dim wkbWorkbook As Workbook
Dim wksWorksheet As Worksheet
Dim lngLinks As Long
ChDrive Left$(ThisWorkbook.Path, 1)
ChDir ThisWorkbook.Path
Set wkbWorkbook = Application.Workbooks.Add(Template:=xlWBATWorksheet)
Set wksWorksheet = wkbWorkbook.Worksheets(1)
With wksWorksheet
.Range("A1").Value = "Hyperlink"
.Range("B1").Value = "Datei"
.Range("C1").Value = "Vorhanden"
.Range("A1:C1").Font.Bold = True
End With
For Each wksSheet In ThisWorkbook.Worksheets
For Each objLink In wksSheet.Hyperlinks
If Left$(objLink.Address, 3) = "..\" Or
Mid$(objLink.Address, 2, 2) = ":\" Or objLink.SubAddress = "" Then
lngLinks = lngLinks + 1
With wksWorksheet
.Cells(lngLinks + 1, 1).Value =
objLink.Name
.Cells(lngLinks + 1, 2).Value =
objLink.Address
If Dir(objLink.Address, vbHidden) =
"" Then
.Cells(lngLinks + 1,
3).Value = "Ja"
Else
.Cells(lngLinks + 1,
3).Value = "Nein"
End If
End With
End If
Next
Next
wksWorksheet.Columns("A:C").AutoFit
Set wksWorksheet = Nothing
Set wkbWorkbook = Nothing
End Sub
» Codebeispiel 5: Quellen von externen Verknüpfungen auflisten
Mit dieser Prozedur werden die Verknüpfungen in der aktiven Arbeitsmappe abgefragt und im Direktfenster des VBA-Editors aufgelistet. Zuerst werden die Verknüpfungen vom Typ 'Excel' und dann diejenige vom Typ 'OLE/DDE' ausgegeben. Verknüpfungen der beiden weiteren Typen 'Publisher' und 'Subscriber' werden nicht angezeigt.
LinkSources-Methode
Sub GetLinkSources()
Dim avarLinks As Variant
Dim intCounter As Integer
Debug.Print "Excel-Verknüpfungen:"
avarLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(avarLinks) Then
For intCounter = 1 To UBound(avarLinks)
Debug.Print "Link " & intCounter &
": " & avarLinks(intCounter)
Next intCounter
Else
Debug.Print "Keine Excel-Verknüpfungen vorhanden"
End If
Debug.Print "OLE-/DDE-Verknüpfungen:"
avarLinks = ActiveWorkbook.LinkSources(xlOLELinks)
If Not IsEmpty(avarLinks) Then
For intCounter = 1 To UBound(avarLinks)
Debug.Print "Link " & intCounter &
": " & avarLinks(intCounter)
Next intCounter
Else
Debug.Print "Keine OLE-/DDE-Verknüpfungen vorhanden"
End If
End Sub
Siehe auch unter Arbeiten mit externen Verknüpfungen.
» Codebeispiel 6: RowSource von allen ListBox- und ComboBox-Steuerelementen auflisten
Diese Prozedur analysiert alle Benutzerformulare des VBA-Projektes der aktiven Arbeitsmappe und gibt zu jedem gefundenen ListBox- und ComboBox-Steuerelement den Inhalt der RowSource-Eigenschaft im Direktfenster des VBA-Editors aus.
RowSource-Eigenschaft
Sub GetRowSources()
Dim objComponent As VBComponent
Dim objControl As Control
Dim strRowSource As String
On Error Resume Next
For Each objComponent In ActiveWorkbook.VBProject.VBComponents
If objComponent.Type = vbext_ct_MSForm Then
For Each objControl In objComponent.Designer.Controls
strRowSource = objControl.RowSource
If Err.Number = 0 Then
Debug.Print objComponent.Name &
" (" & objComponent.Properties("Caption") & _
")
> RowSource von " & objControl.Name & ": " & strRowSource
Else
Err.Clear
End If
Next objControl
End If
Next objComponent
End Sub
Siehe auch unter RowSource-Eigenschaft.
» Codebeispiel 7: Quellbereiche von Konsolidierungen auflisten
Dieses Codebeispiel analysiert alle Tabellenblätter der aktiven Arbeitsmappe und listet die Zellbezüge der Quellen von Konsolidierungen auf. Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
ConsolidationSources-Eigenschaft
Sub ListConsolidationSources()
Dim wksReportSheet As Worksheet
Dim wksSheet As Worksheet
Dim avarSources As Variant
Dim intCounter As Integer
Dim lngRow As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
lngRow = 2
Set wksReportSheet = Worksheets.Add
With wksReportSheet
.Range("A1").Value = "Konsolidierungen"
.Range("A1").Font.Bold = True
.Range("A1").Font.Size = .Range("A1").Font.Size + 2
For Each wksSheet In ActiveWorkbook.Worksheets
If wksSheet.Name <> wksReportSheet.Name Then
lngRow = lngRow + 1
.Cells(lngRow, 1).Value = wksSheet.Name
.Cells(lngRow, 1).Font.Bold = True
avarSources = wksSheet.ConsolidationSources
If IsEmpty(avarSources) Then
lngRow = lngRow + 1
.Cells(lngRow, 1).Value =
"(Keine Konsolidierung)"
Else
If wksSheet.ConsolidationOptions(3)
= True Then
lngRow = lngRow + 1
.Cells(lngRow, 1).Value
= "(Konsolidierung mit verknüpften Quelldaten)"
Else
lngRow = lngRow + 1
.Cells(lngRow, 1).Value
= "(Konsolidierung ohne verknüpfte Quelldaten)"
End If
For intCounter = 1 To
UBound(avarSources)
lngRow = lngRow + 1
.Cells(lngRow, 1).Value
= "Bezug " & CStr(intCounter) & ": " &
avarSources(intCounter)
Next intCounter
End If
lngRow = lngRow + 1
End If
Next
.Columns("A").AutoFit
End With
Set wksReportSheet = Nothing
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
» Codebeispiel 8: Hyperlink-Basis abfragen/ändern
Dieses Codebeispiel...
BuiltinDocumentProperties-Eigenschaft
Sub GetHyperlinkBase()
MsgBox ActiveWorkbook.BuiltInDocumentProperties("Hyperlink base").Value
End Sub
Sub SetHyperlinkBase()
If Application.OperatingSystem Like "*Windows*" Then
'Windows
ThisWorkbook.BuiltInDocumentProperties("Hyperlink
base").Value = "C:\Daten"
Else
'Macintosh
ThisWorkbook.BuiltInDocumentProperties("Hyperlink
base").Value = "HD:Daten"
End If
End Sub
Private Sub Workbook_Open()
If Application.OperatingSystem Like "*Windows*" Then
'Windows
ThisWorkbook.BuiltInDocumentProperties("Hyperlink
base").Value = "C:\Daten"
Else
'Macintosh
ThisWorkbook.BuiltInDocumentProperties("Hyperlink
base").Value = "HD:Daten"
End If
End Sub
Informationen über das Herausfinden des aktuellen Betriebssystems finden Sie unter Abfragen der Ausführungsumgebung.
» Codebeispiel 9: Datumssystem einstellen
Dieses exemplarische Codebeispiel zeigt, ...
Date1904-Eigenschaft des Workbook-Objektes
Private Sub Workbook_Open()
If Application.OperatingSystem Like "*Windows*" Then
'Windows
ThisWorkbook.Date1904 = False
Else
'Macintosh
ThisWorkbook.Date1904 = True
End If
End Sub
Siehe auch unter 1900- und 1904-Datumssysteme von Microsoft Excel.
» Codebeispiel 10: Datenquellen und Verbindungsinformationen von Pivot-Tabellen auflisten
Mit dieser Prozedur werden alle Arbeitsblätter der aktiven Arbeitsmappe durchlaufen und zu jeder gefundenen Pivot-Tabelle Datenquelle (Spalte "SourceData"), Verbindungsinformation (Spalte "Connection") und SQL-String (Spalte "SQL") aufgeführt. Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
Bei Quelle "Excel":
MsgBox ActiveSheet.PivotTables(1).PivotCache.SourceData
[PivoTest.xls]Daten!Z5S1:Z26S5
Bei Quelle "Datenbank":
MsgBox ActiveSheet.PivotTables(1).PivotCache.Connection
ODBC;DefaultDir=D:\NeueDaten\SOSCQ;Driver={Microsoft Text-Treiber (*.txt; *.csv)};DriverId=27;Extensions=asc,csv,tab,txt;FIL=text;MaxBufferSize=2048;MaxScanRows=25;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;
MsgBox ActiveSheet.PivotTables(1).PivotCache.SQL
SELECT `Komma getrennte Datei2`.Name, `Komma getrennte Datei2`.Vorname, `Komma getrennte Datei2`.Anzahl FROM `Komma getrennte Datei2.csv` `Komma getrennte Datei2` ORDER BY `Komma getrennte Datei2`.Name
Sub ListPivotTablesSources()
Dim wksReportSheet As Worksheet
Dim wksSheet As Worksheet
Dim intCounter As Integer
Dim lngRow As Long
Dim strResult As String
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
lngRow = 3
Set wksReportSheet = Worksheets.Add
With wksReportSheet
.Range("A3:D3").Value = Array("Arbeitsblatt",
"SourceData", "Connection", "SQL")
.Range("A3:D3").Font.Bold = True
For Each wksSheet In ActiveWorkbook.Worksheets
If wksSheet.Name <> wksReportSheet.Name Then
lngRow = lngRow + 1
If wksSheet.PivotTables.Count > 0 Then
For intCounter = 1 To
wksSheet.PivotTables.Count
.Cells(lngRow, 1).Value
= wksSheet.Name
strResult =
wksSheet.PivotTables(intCounter).PivotCache.SourceData
If Err.Number = 0 Then
.Cells(lngRow, 2).Value = strResult
Else
Err.Clear
End If
strResult =
wksSheet.PivotTables(intCounter).PivotCache.Connection
If Err.Number = 0 Then
.Cells(lngRow, 3).Value = strResult
Else
Err.Clear
End If
strResult =
wksSheet.PivotTables(intCounter).PivotCache.Sql
If Err.Number = 0 Then
.Cells(lngRow, 4).Value = strResult
.Cells(lngRow, 4).WrapText = False
Else
Err.Clear
End If
lngRow = lngRow + 1
Next intCounter
lngRow = lngRow - 1
Else
.Cells(lngRow, 1).Value =
wksSheet.Name
.Cells(lngRow, 2).Value =
"(Keine Pivot-Tabelle)"
End If
End If
Next
.Columns("A:D").AutoFit
.Range("A1").Value = "Datenquellen der
Pivot-Tabellen"
.Range("A1").Font.Bold = True
.Range("A1").Font.Size = .Range("A1").Font.Size + 2
End With
Set wksReportSheet = Nothing
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
» Codebeispiel 11: Verbindungsinformationen von Datenbank- und Web-Abfragen auflisten
Dieses Codebeispiel zeigt, wie man die Verbindungsinformationen von den Datenbank- und Web-Abfragen in einer Arbeitsmappe abfragen und auflisten kann. Es werden alle Arbeitsblätter durchlaufen und zu jedem gefundenen externen Datenbereich (QueryTable) die Angaben Connection und SQL-String (nur bei Datenbank-Abfragen) ausgegeben. Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
Beispiel von Connection einer Datenbank-Abfrage:
ODBC;DBQ=C:\Daten;DefaultDir=C:\Daten;Driver={Microsoft
Text Driver (*.txt;
*.csv)};DriverId=27;Extensions=None,asc,csv,dat,log,tab,txt;FIL=text;MaxBufferSize=2048;MaxScanRows=25;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;
Beispiel von SQL einer Datenbank-Abfrage:
SELECT Textdatei1.Name, Textdatei2.Vorname_Nachname FROM
Textdatei1.txt Textdatei1, Textdatei2.txt Textdatei2 WHERE Textdatei1.Name =
Textdatei2.Vorname_Nachname
Beispiel von Connection einer Web-Abfrage:
URL;http://webservices.pcquote.com/cgi-bin/exceldow.exe?
Beispiel von SQL einer Web-Abfrage:
(Nicht verfügbar)
Sub ListDBAndWebQueryConnections()
End Sub
Siehe auch unter Datenbankabfragen, Web-Queries und externe Datenbereiche.
» Codebeispiel 12: Verfügbarkeit einer Schriftart überprüfen
Microsoft Office für Windows und Microsoft Office für Macintosh verwenden unterschiedliche Standard-Schriftarten. Während für einen Macintosh-Benutzer die Schriftart "Geneva" nichts Ungewöhnliches ist, kennt ein Windows-Benutzer diese Schriftart wahrscheinlich nicht, weil sie auf einem Windows-Rechner standardmässig nicht installiert ist. Bevor man beispielsweise einer Zelle eine Schriftart zuweist, sollte man überprüfen, ob die Schriftart auf dem System vorhanden ist.
Die Funktion CheckFont überprüft, ob die ihr übergebene Schriftart auf dem Computer existiert. Die Prozedur CheckFontDemo zeigt ein Muster, wie die Funktion aufgerufen werden kann.
Function CheckFont(ByVal strFont As String) As Boolean
Dim intFonts As Integer
Dim intResult As Integer
Dim objControl As CommandBarComboBox
strFont = Trim$(strFont)
Set objControl = Application.CommandBars.FindControl(Id:=1728)
For intFonts = 0 To objControl.ListCount - 1
intResult = StrComp(strFont, objControl.List(intFonts + 1),
vbTextCompare)
If intResult = 0 Then
CheckFont = True
Exit Function
ElseIf intResult = -1 Then
CheckFont = False
Exit Function
End If
Next intFonts
Set objControl = Nothing
End Function
Sub CheckFontSample()
Dim strFontname As String
strFontname = "Verdana"
If CheckFont(strFontname) = True Then
MsgBox "Schriftart '" & strFontname & "' ist
vorhanden.", vbInformation
Else
MsgBox "Schriftart '" & strFontname & "' ist
nicht vorhanden.", vbInformation
End If
End Sub
Siehe auch unter Schriftarten.
Siehe auch
Codebeispiel 18 "Schriftarten
in Codezeilen eines VBA-Projektes auflisten".
» Codebeispiel 13: Quellbereiche von Objekten mit verknüpften Daten auflisten
Einige in ein Arbeitsblatt einfügbare Objekte können mit einer Zelle verknüpft werden, die sozusagen als Datenquelle für den Objektinhalt verwendet wird. Eine solche Verknüpfung wird erstellt, indem man zuerst ein Objekt selektiert und dann in der Bearbeitungsleiste den Bezug zur gewünschten (Quell-)Zelle eingibt (z.B. "=A1") oder mit der Maus die gewünschte Zelle markiert. Anstatt einem Zellbezug kann man auch den definierten Namen einer Zelle bzw. eines Zellbereiches eingeben.
Diese Objekte unterstützen Datenverknüpfungen:
| Objekttyp | Objekt |
| Zeichnungsobjekt | Rechteck, Ellipse |
| AutoForm | Standardformen, Blockpfeile, Flussdiagramm, Sterne und Banner, Legende |
| Formular-Steuerelement | Bezeichnungsfeld, Gruppenfeld, Schaltfläche |
| Bild | Verknüpfte Grafik (siehe Anmerkung) |
| Textfeld | Textfeld |
Anmerkung:
Ein Bild-Objekt mit einer Datenverknüpfung wird als eine so genannte 'Verknüpfte
Grafik' bezeichnet. Es ist der einzige Objekttyp, der als Verknüpfungsquelle mehrere
Zellen, d.h. einen Zellbereich verwenden kann.
Mit dieser VBA-Prozedur werden alle Objekte in der aktiven Arbeitsmappe abgefragt. Alle Objekte, welche eine Datenverknüpfung unterstützen, werden im Direktfenster des VBA-Editors ausgegeben. Wenn ein Objekt tatsächlich eine Datenverknüpfung besitzt, so wird der Zellbezug der Verknüpfung angezeigt.
Sub GetObjectsWithLinkedData()
Dim objObject As Object
Dim objShape As Shape
Dim wksSheet As Worksheet
Dim strResult As String
On Error Resume Next
For Each wksSheet In ActiveWorkbook.Worksheets
For Each objShape In wksSheet.Shapes
Set objObject = objShape.DrawingObject
strResult = objObject.Formula
If Err.Number = 0 Then
Debug.Print wksSheet.Name & " >
" & objShape.Name & ": Datenverknüpfung: " & strResult
Else
Err.Clear
End If
Set objObject = Nothing
Next
Next
End Sub
Die folgende Prozedur ist eine Erweiterung der obigen Prozedur GetObjectsWithLinkedData. Hier werden die Objekte mit ihren Datenverknüpfungen auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe aufgelistet. Anhand der Konstante ONLYLINKEDOBJECTS können Sie festlegen, ob nur diejenigen Objekte aufgelistet werden sollen, die tatsächlich eine Datenverknüpfung besitzen (True), oder ob alle Objekte, die eine Datenverknüpfung unterstützen, ausgegeben werden sollen (False). Bei jedem Objekt wird zusätzlich der Typ des Objektes (Spalte "Shape-Typ"), der Typ des Zeichnungsobjektes (Spalte "DrawingObject-Typ") und die Position des Objektes auf dem Arbeitsblatt angezeigt. Als Position wird die Adresse der Zelle angegeben, die sich links oben des Objektes befindet.
Sub ListObjectsWithLinkedData()
Const ONLYLINKEDOBJECTS As Boolean = True 'True =
Nur Objekte mit Datenverknüpfungen
Dim wksReportSheet As Worksheet
Dim objObject As Object
Dim objShape As Shape
Dim wksSheet As Worksheet
Dim strResult As String
Dim lngRow As Long
On Error Resume Next
lngRow = 3
Set wksReportSheet = Worksheets.Add
With wksReportSheet
.Range("A3:F3").Value = Array("Arbeitsblatt",
"Objektname", "Shape-Typ", "DrawingObject-Typ",
"Position", "Datenverknüpfung")
.Range("A3:F3").Font.Bold = True
For Each wksSheet In ActiveWorkbook.Worksheets
For Each objShape In wksSheet.Shapes
Set objObject = objShape.DrawingObject
strResult = objObject.Formula
If Err.Number = 0 Then
If ONLYLINKEDOBJECTS Then
If strResult <>
"" Then
lngRow =
lngRow + 1
.Cells(lngRow, 1).Value = wksSheet.Name
.Cells(lngRow, 2).Value = objShape.Name
.Cells(lngRow, 3).Value = GetShapeType(objShape.Type) & " (" &
objShape.Type & ")"
.Cells(lngRow, 4).Value = TypeName(objShape.DrawingObject)
.Cells(lngRow, 5).Value = objShape.TopLeftCell.Address(False, False)
.Cells(lngRow, 6).Value = strResult
End If
Else
lngRow = lngRow + 1
.Cells(lngRow, 1).Value
= wksSheet.Name
.Cells(lngRow, 2).Value
= objShape.Name
.Cells(lngRow, 3).Value
= GetShapeType(objShape.Type) & " (" & objShape.Type & ")"
.Cells(lngRow, 4).Value
= TypeName(objShape.DrawingObject)
.Cells(lngRow, 5).Value
= objShape.TopLeftCell.Address(False, False)
If strResult <>
"" Then
.Cells(lngRow, 6).Value = strResult
Else
.Cells(lngRow, 6).Value = "(Keine Verknüpfung)"
End If
End If
Else
Err.Clear
End If
Set objObject = Nothing
Next
Next
.Columns("A:F").AutoFit
.Range("A1").Value = "Objekte mit
Datenverknüpfungen"
.Range("A1").Font.Bold = True
.Range("A1").Font.Size = .Range("A1").Font.Size + 2
End With
Set wksReportSheet = Nothing
End Sub
» Codebeispiel 14: Objekte mit zugewiesenen Makros auflisten
Den meisten Objekten, die in ein Arbeitsblatt eingefügt werden können, kann man ein Makro zuweisen. Dies wird in Microsoft Excel über den Menübefehl Makro zuweisen vorgenommen, der sich im Kontextmenü eines selektierten Objektes befindet. In VBA wird dazu die OnAction-Eigenschaft des Shape-Objektes verwendet.
Dieses Codebeispiel zeigt, wie man die Makrozuweisungen der Objekte in der Arbeitsmappe auflisten kann. Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt. Die Funktion GetShapeType wird zum Ermitteln der Shape-Typbezeichnung eines Shape-Typs benötigt.
Sub ListObjectsWithAppliedMacros()
Dim wksReportSheet As Worksheet
Dim objObject As Object
Dim objShape As Shape
Dim wksSheet As Worksheet
Dim strResult As String
Dim lngRow As Long
On Error Resume Next
lngRow = 3
Set wksReportSheet = Worksheets.Add
With wksReportSheet
.Range("A3:E3").Value = Array("Arbeitsblatt",
"Objektname", "Shape-Typ", "DrawingObject-Typ",
"Makro")
.Range("A3:E3").Font.Bold = True
For Each wksSheet In ActiveWorkbook.Worksheets
For Each objShape In wksSheet.Shapes
strResult = objShape.OnAction
If Err.Number = 0 Then
lngRow = lngRow + 1
.Cells(lngRow, 1).Value =
wksSheet.Name
.Cells(lngRow, 2).Value =
objShape.Name
.Cells(lngRow, 3).Value =
GetShapeType(objShape.Type) & " (" & objShape.Type & ")"
.Cells(lngRow, 4).Value =
TypeName(objShape.DrawingObject)
.Cells(lngRow, 5).Value = strResult
Else
Err.Clear
End If
Next
Next
.Columns("A:E").AutoFit
.Range("A1").Value = "Objekte mit zugewiesenen
Makros"
.Range("A1").Font.Bold = True
.Range("A1").Font.Size = .Range("A1").Font.Size + 2
End With
Set wksReportSheet = Nothing
End Sub
Function GetShapeType(ByVal intType As Integer) As String
Dim strType As String
Select Case intType
Case 1
strType = "AutoForm"
Case 2
strType = "CallOut"
Case 3
strType = "Chart"
Case 4
strType = "Comment"
Case 5
strType = "FreeForm"
Case 6
strType = "Group"
Case 7
strType = "EmbeddedOLEObject"
Case 8
strType = "FormControl"
Case 9
strType = "Line"
Case 10
strType = "LinkedOLEObject"
Case 11
strType = "LinkedPicture"
Case 12
strType = "OLEControlObject"
Case 13
strType = "Picture"
Case 14
strType = "Placeholder"
Case 15
strType = "TextEffect"
Case 16
strType = "Media"
Case 17
strType = "TextBox"
Case -2
strType = "ShapeTypeMixed"
Case Else
strType = "(Unbekannt)"
End Select
GetShapeType = strType
End Function
» Codebeispiel 15: Verweise im VBA-Projekt auflisten
Mit diesem VBA-Programmcode wird eine Liste mit den Verweisen des VBA-Projektes der aktiven Arbeitsmappe generiert.
Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
Sub ListProjectReferences()
Dim wksReportSheet As Worksheet
Dim objReference As Reference
Dim lngRow As Long
On Error Resume Next
lngRow = 3
Set wksReportSheet = Worksheets.Add
With wksReportSheet
.Range("A3:I3").Value = Array("Verweis",
"Beschreibung", "Pfad", "Typ", "Integriert",
"GUID", "Hauptversion", "Unterversion",
"Vorhanden")
.Range("A3:I3").Font.Bold = True
For Each objReference In ActiveWorkbook.VBProject.References
lngRow = lngRow + 1
.Cells(lngRow, 1).Value = objReference.Name
.Cells(lngRow, 2).Value = objReference.Description
.Cells(lngRow, 3).Value = objReference.FullPath
If objReference.Type = 0 Then
.Cells(lngRow, 4).Value =
"Bibliothek"
Else
.Cells(lngRow, 4).Value = "Projekt"
End If
.Cells(lngRow, 5).Value = objReference.BuiltIn
.Cells(lngRow, 6).Value = objReference.GUID
.Cells(lngRow, 7).Value = objReference.Major
.Cells(lngRow, 8).Value = objReference.Minor
.Cells(lngRow, 9).Value = Not objReference.IsBroken
Next
.Columns("A:I").AutoFit
.Range("A1").Value = "Verweise im VBA-Projekt"
.Range("A1").Font.Bold = True
.Range("A1").Font.Size = .Range("A1").Font.Size + 2
End With
Set wksReportSheet = Nothing
End Sub
Siehe auch unter Verweise.
» Codebeispiel 16: Symbolleisten-Steuerelemente mit zugewiesenen Makros auflisten
Der nachstehende Programmcode listet alle Steuerelemente der Symbolleisten auf. Bei jedem Steuerelement, welchem ein Makro zugewiesen ist, wird der Name des Makros ausgegeben.
Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt und zeigt die drei Spalten "Symbolleiste" (Name der Symbolleiste), "Steuerelement" (Beschriftung/Caption des Steuerelementes) und "Makro" (Name der Makroprozedur, inkl. Dateiname und Dateipfad, wenn sich das Makro in einer anderen Mappe/Add-In befindet).
Anhand der Konstante ONLYCONTROLSWITHMACRO können Sie bestimmen, ob nur Steuerelemente aufgelistet werden sollen, denen ein Makro zugewiesen ist (Konstante auf True stellen), oder ob alle Steuerelemente aufgeführt werden sollen (Konstante auf False stellen).
Die Prozedur GetCommandBarControl dient zum Durchlaufen der Steuerelemente einer Symbolleiste. Wenn ein Steuerelement weitere Steuerelemente enthält (z.B.
'Deklarationsbereich
Private lngControls As Long
Private Const ONLYCONTROLSWITHMACRO As Boolean = True
Sub ListCommandBarControlsWithMacros()
Dim objCommandBar As CommandBar
Dim objControl As CommandBarControl
Dim objSubControls As CommandBarControls
Dim wksReportSheet As Worksheet
Set wksReportSheet = ActiveWorkbook.Worksheets.Add
With wksReportSheet
.Range("A3:C3").Value = Array("Symbolleiste",
"Steuerelement", "Makro")
.Range("A3:C3").Font.Bold = True
End With
Application.StatusBar = "Verarbeitung läuft. Bitte warten..."
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
lngControls = 3
For Each objCommandBar In Application.CommandBars
lngControls = lngControls + 1
wksReportSheet.Cells(lngControls, 1).Value = objCommandBar.Name
If objCommandBar.Controls.Count > 0 Then
GetCommandBarControl objCommandBar.Controls
End If
Next
With wksReportSheet
.Columns("A:C").AutoFit
.Range("A1").Value = "Makros von
Symbolleisten-Steuerelementen"
.Range("A1").Font.Bold = True
.Range("A1").Font.Size = .Range("A1").Font.Size + 2
End With
Set wksReportSheet = Nothing
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
Sub GetCommandBarControl(objControls As CommandBarControls)
Dim objControl As CommandBarControl
Dim objSubControls As CommandBarControls
On Error Resume Next
For Each objControl In objControls
If lngControls Mod 100 = 0 Then
Application.StatusBar = "Verarbeite Steuerelement Nr.
" & lngControls & "..."
End If
If ONLYCONTROLSWITHMACRO = True Then
Err.Clear
If objControl.OnAction <> "" Then
If Err.Number = 0 Then
lngControls = lngControls + 1
ActiveSheet.Cells(lngControls,
2).Value = objControl.Caption
ActiveSheet.Cells(lngControls,
3).Value = objControl.OnAction
End If
End If
Else
lngControls = lngControls + 1
ActiveSheet.Cells(lngControls, 2).Value =
objControl.Caption
ActiveSheet.Cells(lngControls, 3).Value =
objControl.OnAction
End If
Err.Clear
Set objSubControls = objControl.Controls
If Err.Number = 0 Then
If objSubControls.Count > 0 Then
GetCommandBarControl objSubControls
End If
End If
Next
End Sub
» Codebeispiel 17: Quellen von verknüpften OLE-Objekten auflisten
Dieses Codebeispiel dient zum Ausgeben der Quellen von verknüpften OLE-Objekten. Ein verknüpftes OLE-Objekt ist ein Objekt, welches, von einer Datei erstellt, in ein Arbeitsblatt eingefügt wurde und eine Verknüpfung zum Inhalt der Quelldatei besitzt.
Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
Sub ListLinkedOLEObjectSources()
End Sub
Siehe auch unter OLE - Object Linking and Embedding.
» Codebeispiel 18: Schriftarten in Codezeilen eines VBA-Projektes auflisten
Diese Prozedur unterstützt Sie bei der Suche nach Codezeilen, in denen der Name einer Schriftart vorkommt. Es werden alle Module des VBA-Projektes der aktiven Arbeitsmappe untersucht. Die Fundstellen werden im Direktfenster des VBA-Editors ausgegeben.
Sub ListFontNamesInCode()
Dim objComponent As VBComponent
Dim objFontControl As Object
Dim intLine As Integer
Dim intFont As Integer
Set objFontControl = Application.CommandBars.FindControl(Id:=1728)
Debug.Print "Suche Schriftarten..."
For Each objComponent In ActiveWorkbook.VBProject.VBComponents
If objComponent.Type = vbext_ct_ClassModule Or vbext_ct_Document Or
vbext_ct_StdModule Then
With objComponent.CodeModule
For intLine = 1 To .CountOfLines
For intFont = 0 To
objFontControl.ListCount - 1
If
InStr(.Lines(intLine, 1), objFontControl.List(intFont + 1)) > 0 Then
Debug.Print
"Modul '" & objComponent.Name & "'; Prozedur '" & _
.ProcOfLine(intLine, vbext_pk_Proc) & "'; Zeile " & intLine & _
"; Schriftart '" & objFontControl.List(intFont + 1) & _
"' > " & Trim$(.Lines(intLine, 1))
End If
Next intFont
Next intLine
End With
End If
Next objComponent
Debug.Print "Fertig"
Set objFontControl = Nothing
End Sub
Siehe auch
Codebeispiel 12 "Verfügbarkeit
einer Schriftart überprüfen".
» Codebeispiel 19: Zellen mit DDE-Verknüpfungen auflisten
Mit dieser Codeprozedur finden Sie alle Zellen, die eine DDE-Verknüpfung enthalten. Es werden sämtliche Zellen aller Arbeitsblätter in der aktiven Arbeitsmappe berücksichtigt.
Beispiele von DDE-Verknüpfungen:
=WinWord|System!Topics
=WinWord|'C:\Daten\Statistik.doc'!Umsatz
Eine DDE-Verknüpfung ist eine Art Formel (externer Bezug), die eine dynamische Datenverbindung mit einer anderen Anwendung aufbaut und Daten von der Quellanwendung anfordert. Nur Zellen können DDE-Verknüpfungen enthalten; Namen dagegen nicht.
Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
Sub List()
End Sub
» Codebeispiel 20: ProgIDs von OLE-Objekten auflisten
Das nachstehende Codebeispiel listet alle ProgIDs auf, die in der Arbeitsmappe von eingebetteten OLE-Objekten verwendet wurden.
Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
Sub ListProgIDs()
End Sub
» Codebeispiel 21: Datenquellen von Diagrammen auflisten
Mit diesem VBA-Code ...
Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
Sub ListChartsWithDataSources()
End Sub
» Codebeispiel 22: Benutzung von plattformspezifischen Tabellenfunktionen überprüfen
Mit diesem VBA-Code ...
Plattformspezifische Tabellenfunktionen sind Funktionen, die je nach Plattform (d.h. Windows oder Macintosh) unterschiedliche Ergebnisse liefern bzw. liefern können.
Tabellenfunktionen können in Formeln vorkommen, die in Zellen, Namen, bedingten Formatierungen oder Gültigkeiten stehen.
Diese Tabellenfunktionen werden überprüft:
| Funktion | Typ |
| INFO | Informationsfunktion |
| ZELLE | Informationsfunktion |
| SÄUBERN | Textfunktion |
| ZEICHEN | Textfunktion |
| CODE | Textfunktion |
| DATUM | Datums- und Zeitfunktion |
| DATWERT | Datums- und Zeitfunktion |
| HEUTE | Datums- und Zeitfunktion |
| JETZT | Datums- und Zeitfunktion |
| JAHR | Datums- und Zeitfunktion |
| HYPERLINK | Matrixfunktion |
Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
Sub CheckWorksheetFunctions()
End Sub
» Codebeispiel 23: Zellen mit Pfaden im Zellinhalt auflisten
Die nachfolgenden Codebeispiele generieren eine Liste derjenigen Zellen eines Arbeitsblattes, die einen Pfad enthalten.
- Die erste Prozedur listet alle Zellen vom Typ "Konstante" auf, in denen ein Pfad steht. Beispiel: Die Zelle A1 enthält den Text "C:\Daten\EineMappe.xls".
- Die zweite Prozedur listet alle Zellen vom Typ "Formel" auf, deren Zellinhalt ein Pfad enthält. Beispiel: Die Zelle A2 enthält die Formel/den Bezug "=A1". Der Inhalt der Zelle ist somit "C:\Daten\EineMappe.xls".
- Die dritte Prozedur listet alle Zellen vom Typ "Formel" auf, bei denen in der Formel ein Pfad vorkommt. Beispiel: Die Zelle A3 enthält die Formel "=HYPERLINK(B1, "C:\Daten\Textdatei.txt").
Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
Sub ListConstantCellsWithPath()
Dim wksSheet As Worksheet
Dim rngCells As Range
Dim rngCell As Range
Dim lngCounter As Long
On Error Resume Next
Set rngCells = ActiveCell.SpecialCells(xlCellTypeConstants, 2)
If Err.Number <> 0 Then
MsgBox "Keine Konstanten-Zellen gefunden.", vbInformation
Exit Sub
End If
lngCounter = 1
Set wksSheet = ActiveWorkbook.Worksheets.Add
With wksSheet
.Range("A1").Value = "Zelle"
.Range("B1").Value = "Zellformel"
.Range("C1").Value = "Zellwert"
.Range("A1:C1").Font.Bold = True
For Each rngCell In rngCells
If InStr(rngCell.Value, ":\") > 0 Then
lngCounter = lngCounter + 1
.Cells(lngCounter, 1).Value =
rngCell.Address(False, False)
.Cells(lngCounter, 2).Value = "'"
& rngCell.Formula
.Cells(lngCounter, 3).Value = rngCell.Value
End If
Next
.Columns("A:C").AutoFit
End With
If lngCounter = 1 Then
MsgBox "Keine Konstanten-Zellen mit Pfad gefunden.",
vbInformation
End If
Set rngCells = Nothing
Set wksSheet = Nothing
End Sub
Sub ListFormulaCellsWithPath()
Dim wksSheet As Worksheet
Dim rngCells As Range
Dim rngCell As Range
Dim lngCounter As Long
On Error Resume Next
Set rngCells = ActiveCell.SpecialCells(xlCellTypeFormulas, 2)
If Err.Number <> 0 Then
MsgBox "Keine Formel-Zellen gefunden.", vbInformation
Exit Sub
End If
lngCounter = 1
Set wksSheet = ActiveWorkbook.Worksheets.Add
With wksSheet
.Range("A1").Value = "Zelle"
.Range("B1").Value = "Zellformel"
.Range("C1").Value = "Zellwert"
.Range("A1:C1").Font.Bold = True
For Each rngCell In rngCells
If InStr(rngCell.Value, ":\") > 0 Then
lngCounter = lngCounter + 1
.Cells(lngCounter, 1).Value =
rngCell.Address(False, False)
.Cells(lngCounter, 2).Value = "'"
& rngCell.Formula
.Cells(lngCounter, 3).Value = rngCell.Value
End If
Next
.Columns("A:C").AutoFit
End With
If lngCounter = 1 Then
MsgBox "Keine Formel-Zellen mit Pfad gefunden.",
vbInformation
End If
Set rngCells = Nothing
Set wksSheet = Nothing
End Sub
Sub ListFormulaCellsWithPathInFormula()
Dim wksSheet As Worksheet
Dim rngCells As Range
Dim rngCell As Range
Dim lngCounter As Long
On Error Resume Next
Set rngCells = ActiveCell.SpecialCells(xlCellTypeFormulas, 2)
If Err.Number <> 0 Then
MsgBox "Keine Formel-Zellen gefunden.", vbInformation
Exit Sub
End If
lngCounter = 1
Set wksSheet = ActiveWorkbook.Worksheets.Add
With wksSheet
.Range("A1").Value = "Zelle"
.Range("B1").Value = "Zellformel"
.Range("C1").Value = "Zellwert"
.Range("A1:C1").Font.Bold = True
For Each rngCell In rngCells
If InStr(rngCell.Formula, ":\") > 0 Then
lngCounter = lngCounter + 1
.Cells(lngCounter, 1).Value =
rngCell.Address(False, False)
.Cells(lngCounter, 2).Value = "'"
& rngCell.Formula
.Cells(lngCounter, 3).Value = rngCell.Value
End If
Next
.Columns("A:C").AutoFit
End With
If lngCounter = 1 Then
MsgBox "Keine Formel-Zellen mit Pfad in Formel gefunden.",
vbInformation
End If
Set rngCells = Nothing
Set wksSheet = Nothing
End Sub
» Codebeispiel 24: Zellkommentare mit Pfaden im Text auflisten
Dieses VBA-Codebeispiel erstellt eine Liste der Zellen, die einen Kommentar besitzen, in dessen Text eine Pfadangabe vorkommt.
Beispiel für einen Zellkommentar: "Hier Pfad der Statistiktabelle eintragen (z.B. S:\Jahr2005\Statistik.xls)."
Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
Sub ListCellCommentsWithPath()
Dim wksSheet As Worksheet
Dim rngCells As Range
Dim rngCell As Range
Dim lngCounter As Long
On Error Resume Next
Set rngCells = ActiveCell.SpecialCells(xlCellTypeComments)
If Err.Number <> 0 Then
MsgBox "Keine Zellen mit Kommentaren gefunden.",
vbInformation
Exit Sub
End If
lngCounter = 1
Set wksSheet = ActiveWorkbook.Worksheets.Add
With wksSheet
.Range("A1").Value = "Zelle"
.Range("B1").Value = "Zellkommentar"
.Range("C1").Value = "Zellinhalt"
.Range("A1:C1").Font.Bold = True
For Each rngCell In rngCells
If InStr(rngCell.Comment.Text, ":\") > 0 Then
lngCounter = lngCounter + 1
.Cells(lngCounter, 1).Value =
rngCell.Address(False, False)
.Cells(lngCounter, 2).Value =
rngCell.Comment.Text
.Cells(lngCounter, 3).Value = rngCell.Value
End If
Next
.Columns("A:C").AutoFit
If lngCounter > 1 Then
.Rows("2:" & CStr(lngCounter)).AutoFit
End If
End With
If lngCounter = 1 Then
MsgBox "Keine Zellkommentare mit Pfaden gefunden.",
vbInformation
End If
Set rngCells = Nothing
Set wksSheet = Nothing
End Sub
» Codebeispiel 25: Namen auflisten
Mit dieser VBA-Prozedur erstellen Sie eine Liste der in einer Arbeitsmappe definierten Namen.
Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
Sub ListNames()
End Sub
» Codebeispiel 26: Schriftarten in Formatvorlagen überprüfen
Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.
Sub CheckFontsInStyles()
End Sub
Tipps und Empfehlungen für Programmierer
Hier ein paar nützliche Empfehlungen und Tipps für Programmierer.
[01] Unterschiedliche Texte,
Meldungen usw. als Konstanten definieren
[02] Global gültige Konstanten für die bedingte Kompilierung
definieren
[03] Redundante Programmteile als Funktionen kapseln
[04] Plattformunabhängiges Pfadtrennzeichen mit
benutzerdefinierter Tabellenfunktion ermitteln
[05] Plattformunabhängiges Pfadtrennzeichen anhand
INFO-Tabellenfunktion bestimmen
[06] Symbolleisten und Symbolleisten-Steuerelemente mit VBA-Code
erstellen
[07] Wichtige Systemumgebungsinformationen in der Arbeitsmappe
speichern
[08] Verknüpfte Dokument-Eigenschaften für wichtige
Arbeitsmappen-Informationen verwenden
[09] Eingestelltes Datumswertesystem mit benutzerdefinierter
Tabellenfunktion ermitteln
[10] Neue VBA 6-Funktionen mit VBA 5 nachprogrammieren
» Tipp 1: Unterschiedliche Texte, Meldungen usw. als Konstanten definieren
Verwenden Sie Konstanten - diese werden mit Const deklariert - für alle Texte, die je nach Plattform unterschiedlich sind. Dieses Codebeispiel zeigt, wie anhand der bedingten Kompilierung erreicht wird, dass einer Konstante je nach Plattform einen anderen Text zugewiesen wird.
Der Programmcode unter "Deklarationsbereich" dient zum Zuweisen eines Meldungstextes der Konstante HELPTEXT abhängig von der aktuellen Systemplattform. In der exemplarischen Prozedur ShowMessage wird eine Fehlermeldung mit dem entsprechenden Hilfetext ausgegeben.
'Deklarationsbereich des Codemoduls
#If Mac Then
Public Const HELPTEXT As String = "For more information press
HELP."
#Else
Public Const HELPTEXT As String = "For more information press F1."
#End If
'Codebereich des Codemoduls
Sub ShowMessage()
MsgBox "Error 12345: Permission denied!" & vbCrLf & vbCrLf
& HELPTEXT, vbCritical
End Sub
Informationen über das Herausfinden des aktuellen Betriebssystems finden Sie unter Abfragen der Ausführungsumgebung.
Informationen zum Thema "Bedingte Kompilierung" erhalten Sie unter Bedingte Kompilierung.
» Tipp 2: Global gültige Konstanten für die bedingte Kompilierung definieren
Tipp folgt in Kürze...
Der Gültigkeitsbereich einer Konstante für die bedingte Kompilierung erstreckt sich immer auf das jeweilige Modul, welches die Konstanten-Deklaration enthält.
Trick: Bedingte Konstante als Argument in den Projekteigenschaften eintragen.
» Tipp 3: Redundante Programmteile als Funktionen kapseln
Tipp folgt in Kürze...
» Tipp 4: Plattformunabhängiges Pfadtrennzeichen mit benutzerdefinierter Tabellenfunktion ermitteln
Microsoft Excel stellt keine Tabellenfunktion zum Ermitteln des plattformunabhängigen Pfadtrennzeichens bereit. Wenn Sie das Zeichen in Formeln von Zellen oder Namen benötigen, können Sie es anhand einer benutzerdefinierten Funktion abfragen.
'Codebereich eines Codemoduls
Public Function PFADTRENNZEICHEN() As String
PFADTRENNZEICHEN = Application.PathSeparator
End Function
Beispiele
Formel in Zelle:
=PFADTRENNZEICHEN()
Zelle A1: Verzeichnispfad
Zelle A2: Dateiname
Zelle A3: Tabellenname
Zelle A4: Zellbezug
Formel in Zelle:
="'" & A1 & PFADTRENNZEICHEN() & "[" & A2 & "]" & A3 & "'!" & A4
Name mit Funktion
Neuer Name definieren: Name PFADTZ
Bezug von Name PFADTZ: =PFADTRENNZEICHEN()
Formel in Zelle:
=PFADTZ
» Tipp 5: Plattformunabhängiges Pfadtrennzeichen anhand INFO-Tabellenfunktion bestimmen
Microsoft Excel stellt keine Tabellenfunktion zum Ermitteln des plattformunabhängigen Pfadtrennzeichens bereit. Sie können das zu verwendende Zeichen mithilfe der Tabellenfunktion INFO mit Infotyp "System" bestimmen.
=WENN(INFO("System")="PCDOS";"\";":")
=WENN(KLEIN(INFO("System"))="pcdos";"\";":")
Liefert unter Windows das Zeichen "\". Auf dem Macintosh das Zeichen ":".
» Tipp 6: Symbolleisten und Symbolleisten-Steuerelemente mit VBA-Code erstellen
Tipp folgt in Kürze...
» Tipp 7: Wichtige Systemumgebungsinformationen in der Arbeitsmappe speichern
Tipp folgt in Kürze...

Abbildung: Systemumgebungsinformationen in benannten Zellen
1. Namen für drei Zellen definieren: Datumssystem, Plattform und Excelversion
2. Zahlenformat "Text" für die drei Zellen einstellen
3. Nachstehender Programmcode in das VBA-Projekt einfügen
'Codemodul von
"DieseArbeitsmappe"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
With ThisWorkbook.Worksheets("Settings")
If ThisWorkbook.Date1904 = True Then
.Range("Datumssystem").Value = "1904"
Else
.Range("Datumssystem").Value = "1900"
End If
If Application.OperatingSystem Like "*Macintosh*" Then
.Range("Plattform").Value = "Macintosh"
Else
.Range("Plattform").Value = "Windows"
End If
.Range("Excelversion").Value = Application.Version
End With
End Sub
» Tipp 8: Verknüpfte Dokument-Eigenschaften für wichtige Arbeitsmappen-Informationen verwenden
Tipp folgt in Kürze...

Abbildung: Benutzerdefinierte Dokument-Eigenschaften
Diese Prozedur muss nur ein Mal ausgeführt werden.
Sub AddCustomDocumentProperties()
On Error Resume Next
With ActiveWorkbook.CustomDocumentProperties
.Add Name:="Datumssystem", LinkToContent:=True,
Type:=4, LinkSource:="Datumssystem"
.Add Name:="Plattform", LinkToContent:=True, Type:=4,
LinkSource:="Plattform"
.Add Name:="Excelversion", LinkToContent:=True, Type:=4,
LinkSource:="Excelversion"
End With
End Sub
» Tipp 9: Eingestelltes Datumswertesystem mit benutzerdefinierter Tabellenfunktion ermitteln
Tipp folgt in Kürze...
Microsoft Excel besitzt keine Standard-Tabellenfunktion zum Abfragen des aktuell eingestellten Datumswertesystems einer Arbeitsmappe.
Hier eine benutzerdefinierte Funktion:
'Codebereich eines Codemoduls
Public Function DATUMSWERTESYSTEM() As String
If ThisWorkbook.Date1904 = True Then
DATUMSWERTESYSTEM = "1904"
Else
DATUMSWERTESYSTEM = "1900"
End If
End Function
Beispiele
Formel in Zelle:
=DATUMSWERTESYSTEM()
Weitere Informationen über die Datumswertesysteme erhalten Sie unter 1900- und 1904-Datumssystem von Microsoft Excel.
» Tipp 10: Neue VBA 6-Funktionen mit VBA 5 nachprogrammieren
Tipp folgt in Kürze...
Beispiel: Funktion StrReverse
#If Vba5 Then
Public Function StrReverse(sIn As String) As String
Dim i As Long
StrReverse = Space(Len(sIn))
For i = 1 To Len(sIn)
Mid(StrReverse, Len(sIn) - (i - 1), 1) = Mid(sIn, i, 1)
Next i
End Function
#End If
In diesem Kapitel "Hintergrundwissen" finden Sie interessante Informationen - vorwiegend technische - zu Excel-Internas.
Das Microsoft Excel-Dateiformat
Alles über externe Verknüpfungen
Die wichtigsten Limitationen in
Microsoft Excel
Das Microsoft Excel-Dateiformat
Microsoft Excel verwendet für Arbeitsmappen, Vorlagen, Add-Ins und Sicherungsdateien ein Dateiformat namens BIFF (Binary Interchange File Format), wobei seit Microsoft Excel Version 97 das Format BIFF8 verwendet wird. Excel 2000 besitzt nur minimale Erweiterungen gegenüber BIFF8 von Excel 97, die kaum erwähnenswert sind. Excel 2002 dagegen führte ein paar neue Recordtypen ein, die zwar die Dateikompatibilität nicht beeinträchtigen, aber insbesondere dann genauer betrachtet werden sollten, wenn eine Mappe mit Excel 2002 erstellt und anschliessend in Excel 97 benutzt wird.
Eine ausführliche Dokumentation des Excel-Dateiformates BIFF finden Sie hier:
Weitere Informationen |
Alles über externe Verknüpfungen

Abbildung: Verknüpfungen

Abbildung: Quelle wechseln

Abbildung: Quelle wechseln
SUPBOOK, 1AEhex, 430dec
So werden externe Verknüpfungen in einer Exceldatei gespeichert
SUPBOOK, 1AEhex, 430dec
EXTERNNAME, 23hex, 35dec
DCONREF, 51hex, 81dec
HLINK, 1B8hex, 440dec
URL Encoding
Encoded File URLs
The intention of encoding file URLs is to make them more platform independent. Encoded URLs occur in the records
EXTERNSHEET (BIFF2-BIFF7, .5.39) or SUPBOOK (BIFF8, .5.99), and DCONREF (.5.27).
| Formel/Bezug | Encoded Dateiname |
| =[ext.xls]Sheet1!A1 | <01H>[ext.xls]Sheet1 |
| ='sub\[ext.xls]Sheet1'!A1 | <01H>sub<03H>[ext.xls]Sheet1 |
| ='\[ext.xls]Sheet1'!A1 | <01H><02H>[ext.xls]Sheet1 |
| ='\sub\[ext.xls]Sheet1'!A1 | <01H><02H>sub<03H>[ext.xls]Sheet1 |
| ='\sub\sub2\[ext.xls]Sheet1'!A1 | <01H><02H>sub<03H>sub2<03H>[ext.xls]Sheet1 |
| ='D:\sub\[ext.xls]Sheet1'!A1 | <01H><01H>Dsub<03H>[ext.xls]Sheet1 |
| ='..\sub\[ext.xls]Sheet1'!A1 | <01H><04H>sub<03H>[ext.xls]Sheet1 |
| ='\\pc\sub\[ext.xls]Sheet1'!A1 | <01H><01H>@pc<03H>sub<03H>[ext.xls]Sheet1 |
| ='http://www.example.org/[ext.xls]Sheet1'!A1 | <01H><05H><26H>http://www.example.org/[ext.xls]Sheet1 |
Encoded DDE and OLE Object Links
| Link | Encoded Dokumentname |
| DDE | soffice<03H>sub\example.sxc |
| OLE Object | Package<03H>sub\example.bmp |
Die wichtigsten Limitationen in Microsoft Excel
Abgesehen von den offensichtlichen Unterschieden und Inkompatibilitäten zwischen Microsoft Excel für Windows und Microsoft Excel für Macintosh gibt es ein paar Limitationen und Spezifikationen, die in den einzelnen Excelversionen verschieden sind.
XLimits ist das weltweit grösste Nachschlagewerk für Limitationen, Spezifikationen und Grenzen in Microsoft Excel und anderen Programmen. Auch die Programmiersprachen VBA und VB, die Entwicklungsumgebungen VBA-Editor und Visual Basic IDE sowie mehrere System-Komponenten - unter anderem Windows Registry und Zwischenablage - werden vorgestellt und ausführlich erklärt. XLimits ist nicht nur eine Auflistung der bekannten Limitationen. Hier erfahren Sie alles über Hintergründe, Ursachen, Auswirkungen, Problembehebungsmöglichkeiten, Umgehungslösungen und vieles mehr. Es gibt eine Vielzahl ausführlicher Limitationen-Fachartikel mit detaillierten Beschreibungen zu besonders interessanten Limitationen. XLimits ist zudem die grösste deutschsprachige Website mit Informationen über wenig bekannte Excel-Internas. Auf mehreren Themenseiten werden Spezialthemen wie unter anderem 'Excel und Arbeitsspeicher', 'Excel und Systemressourcen' und 'Dateigrösse von Arbeitsmappen' vorgestellt. Natürlich gibt es auch eine ganze Reihe nützlicher Tools, Excel Add-Ins, Dokumentationen und Musterdateien, die allesamt kostenlos sind und auf der Downloadseite heruntergeladen werden können.
XLimits - Alles über Limitationen, Spezifikationen und Grenzen in Microsoft Excel
Direktlinks zu den wichtigsten Seiten:
Limitationen in Microsoft Excel
Limitationen in Excel-VBA und Excel-Objektmodell
Limitationen von Pivot-Tabellen
Limitationen von Arrays und Matrizen
Fachartikel zu den wichtigsten Excel-Limitationen
Links zu weiteren Informationsquellen
Dokumentationen und Anleitungen
Description of differences between Excel 2001 for
Mac and Excel 2000
http://support.microsoft.com/?scid=kb;en-us;843305
Using Office v. X: From
Windows to Mac and back:
Working across platforms with Office v. X
http://www.microsoft.com/mac/otherproducts/officex/using.aspx?pid=usingofficex&type=howto&article=/mac/LIBRARY/how_to_articles/officex/of_crossplatform.xml
Excel 98 Macintosh Edition FAQ
http://support.microsoft.com/default.aspx?scid=/support/MacExcel/faq/XL98FAQ.asp
Der Artikel enthält folgende Themen:
» New Features in Microsoft Excel 98
» New Microsoft Excel 98 User Interface
» Excel 98 Error Messages
» Microsoft Excel 98 on the Web
» Using Microsoft Query
» Visual Basic for Applications
» Year 2000 Compliance
» Miscellaneous Topics
Excel 98 Macintosh Edition FAQ: VBA
http://support.microsoft.com/default.aspx?scid=/support/MacExcel/faq/XL98FAQ.asp#VB
Excel 2001 for Mac FAQ
http://support.microsoft.com/default.aspx?scid=/support/macexcel/faq/xl2001faq.asp
Der Artikel enthält folgende Themen:
» New Features in Microsoft Excel 2001
» Microsoft Excel 2001 User Interface
» Microsoft Excel 2001 Error Messages
» Microsoft Excel 2001 on the Web
» Visual Basic for Applications
» Miscellaneous Topics
Excel 2001 for Mac FAQ: VBA
http://support.microsoft.com/default.aspx?scid=/support/macexcel/faq/xl2001faq.asp#VB
Differences Between Excel 98 for Mac and Excel 97
http://support.microsoft.com/default.aspx?scid=%2fsupport%2fmacexcel%2fcontent%2ftransition%2fmactrans.asp%3f
Differences Between Excel 2001 for Mac and Excel
2000
http://support.microsoft.com/default.aspx?scid=%2fsupport%2fmacexcel%2fcontent%2ftransition%2fmactrans2000.asp
XL98: VBA Macro Behavior Is Different from Excel
5.0
http://support.microsoft.com/?kbid=183541
OFF98: Programming resources for Visual Basic for
Applications
http://support.microsoft.com/default.aspx?scid=kb;EN-US;163435
OFF2001: Programming Resources for Visual Basic for
Applications
http://support.microsoft.com/default.aspx?scid=kb;en-us;274705&Product=XL2001
MacXL: Resources That Offer Information About
Programming in Visual Basic
http://support.microsoft.com/default.aspx?scid=kb;en-us;310330&Product=XL2001
MacXL: How to Run VBA Procedures from AppleScript
http://support.microsoft.com/?scid=kb;en-us;184440
XL: 1900- und 1904-Datumssystem im Vergleich
http://support.microsoft.com/?scid=kb;de;214330
XL: Description of the differences between the
1900 Date System and the 1904 Date System in Excel
http://support.microsoft.com/?scid=kb;en-us;214330
MacXL: Run-Time Error When You Set RowSource
Property (98/2001)
http://support.microsoft.com/?scid=kb;en-us;175795
Siehe auch unter RowSource-Eigenschaft
XL98: General ODBC Error Running Macro from Excel
for Windows
http://support.microsoft.com/?scid=kb;en-us;184591
MacOFF: Help Button Is Missing in VBA Macro Message
Box
http://support.microsoft.com/?scid=kb;en-us;205191
Siehe auch unter MsgBox-Funktion
MacXLX: "Object Library Not Found" Error
or Excel Quits
http://support.microsoft.com/?scid=kb;en-us;322237
XL2001: Excel Hangs When You Attempt to Copy
Worksheet in Same Workbook
http://support.microsoft.com/?scid=kb;EN-US;286266
XL2001: Fehlermeldungen beim Öffnen einer
Excel-Arbeitsmappe, die ein Visual Basic-Makro enthält
Fehlermeldung "Fehler beim Laden einer DLL"
Fehlermeldung "Objektbibliothek nicht registriert"
Fehlermeldung "Nicht genügend Arbeitsspeicher"
Fehlermeldung "Die Anwendung 'Microsoft Excel' wurde wegen eines Fehlers des
Typs 2 unerwartet beendet."
http://support.microsoft.com/default.aspx?scid=kb;de;D302616
XL2001: Error Messages Appear When You Open an
Excel Workbook That Has a Visual Basic Macro
http://support.microsoft.com/?kbid=302616
XL98/XL2001: Visual Basic-Fehler 35012 beim
Öffnen einer Arbeitsmappe, die Makros enthält
http://support.microsoft.com/default.aspx?scid=kb;de;D310329
XL98/XL2001: Visual Basic Error 35012 When You
Open a Workbook That Has Macros
http://support.microsoft.com/?scid=kb;en-us;310329
MacXL: Error When You Paste ActiveX Controls or Run
a Macro
http://support.microsoft.com/?scid=kb;en-us;274222
Siehe auch unter ActiveX-Controls
OFF98: Visual Basic Error Messages When You Start
Office Program or Visual Basic Editor, or Run a Macro
http://support.microsoft.com/?scid=kb;EN-US;272347
MacXL: Data Maps Are Not Supported in Microsoft
Excel for Mac
http://support.microsoft.com/?scid=kb;en-us;274220
Siehe auch unter Landkarten (Data Maps)
MacXL: LibraryPath Includes Trailing Separator on
Macintosh
http://support.microsoft.com/?scid=kb;en-us;176803
Siehe auch unter LibraryPath-Eigenschaft
MacOFF: Fractions Converted to Underscore
Characters
http://support.microsoft.com/?scid=kb;en-us;193979
Siehe auch unter Sonderzeichen
XL2001: Office-Programme werden beim Einfügen von
PICT-Datei unerwartet beendet
http://support.microsoft.com/default.aspx?scid=kb;de;D44791
XL2001: Office Programs Quit Unexpectedly When
You Insert PICT Files
http://support.microsoft.com/?kbid=269886
Siehe auch unter Grafik-Dateiformate
XL98/XL2001: Unable to Open File After You Change
Code Name of Sheet
Error Message "The Application 'Microsoft Excel' has unexpectedly quit,
because an error of type 2 occurred. You should save your work in other open applications
and restart the computer."
Error Message "Sorry, a system error occurred. 'Microsoft Excel' error type
11"
http://support.microsoft.com/?kbid=178503
XL: XL2000 References Are Missing After Moving
Files from Windows to Macintosh
http://support.microsoft.com/default.aspx?scid=kb;EN-US;214333
MacXL: Error Trapping with Visual Basic for
Applications
http://support.microsoft.com/?scid=kb;en-us;193247
Neuerungen und Änderungen in den Objektmodellen
von Microsoft-Programmen
http://195.186.84.74/pos/objectmodelchanges.htm
How Virtual Memory Works on a Power Macintosh
http://support.microsoft.com/?kbid=120506
MacXL: Problems If Virtual Memory Off or Available
Memory Low
http://support.microsoft.com/?scid=kb;en-us;178596
MacOFF: How to Optimize Your Macintosh System
Configuration
http://support.microsoft.com/?scid=kb;en-us;297238
How to Troubleshoot Extension Conflicts on the
Macintosh
http://support.microsoft.com/?scid=kb;EN-US;263159
XL2001: What's New in Excel 2001?
http://support.microsoft.com/?scid=kb;en-us;274105
Excel FAQ - Macros (Macintosh)
http://www.contextures.on.ca/xlfaqMac.html
McGimpsey & Associates: General Troubleshooting
for MacXL v.X
http://mcgimpsey.com/macoffice/excel/troubleshooting.html
Limitationen, Spezifikationen und Grenzen in
Microsoft Excel
http://195.186.84.74/xlimits/index.htm
Mac Newsgroup
http://www.microsoft.com/mac/community/community.aspx?pid=newsgroups
Excel for Mac Newsgroup
http://groups.google.com/groups?group=microsoft.public.mac.office.excel
ExcelForums: Macintosh
http://www.excelforums.com/viewforum.php?f=23
Die nachfolgende Tabelle erklärt die wichtigsten, in dieser Dokumentation verwendeten Begriffe.
| Begriff | Beschreibung | Hinweis |
| ActiveX-Steuerelement | Ein Steuerelement, beispielsweise ein Kontrollfeld, ein Listenfeld oder eine Befehlsschaltfläche, das Sie mit Hilfe der Steuerelement-Toolbox erstellen und das Benutzern Optionen anbietet oder Makros ausführt, die eine Aufgabe automatisieren. Wenn Sie ActiveX-Steuerelemente in benutzerdefinierte Programme einfügen, z.B. in Formulare und Dialogfelder, können Sie ein Makro schreiben, das zusammen mit dem Steuerelement gespeichert wird und dem Steuerelement nicht erst beim Klicken darauf zugewiesen wird. Sie können das Steuerelement "aktivieren", indem Sie Makros in Visual Basic für Applikationen schreiben, die das Verhalten des Steuerelementes anpassen. | |
| COM | Abkürzung für "Component Object Model". Ein technischer Industriestandard, der die Regeln und Definitionen zum Design von Windows-Applikationen enthält, damit diese ihre Objekte offenlegen und anderen Applikationen zur Verfügung stellen können. | |
| Diagrammblatt | Ein Blatt in einer Arbeitsmappe, das lediglich ein Diagramm enthält. Diagrammblätter sind mit Tabellendaten verknüpft und werden aktualisiert, wenn sich die Tabellendaten ändern. | |
| Dynamischer Datenaustausch | Englisch: Dynamic Data Exchange (DDE). Ein gängiges Protokoll für den Datenaustausch zwischen Windows-basierten Programmen. | |
| Eingebettetes Objekt | In eine Datei (Zieldatei) eingefügte Daten (Objekt). Sobald ein Objekt eingebettet wurde, ist es Teil der Zieldatei. Wenn Sie auf ein eingebettetes Objekt doppelklicken, wird das Programm (Quellprogramm) geöffnet, in dem das Objekt erstellt wurde. Alle an dem eingebetteten Objekt vorgenommenen Änderungen wirken sich auf die Zieldatei aus. | Siehe auch unter Verknüpftes Objekt |
| Entwurfszeit | Die Zeit, in der Sie eine Anwendung in der Entwicklungsumgebung erstellen, indem Sie z.B. Steuerelemente hinzufügen oder Eigenschaften von Steuerelementen und Formularen festlegen. Im Gegensatz dazu arbeiten Sie zur Laufzeit mit der Anwendung interaktiv, wie jeder Benutzer. Die Entwurfszeit wird auch Design-Modus oder engl. Design Time Mode genannt. | Siehe auch unter Laufzeit |
| Fernbezug | Ein Bezug zu Daten, die in einem Dokument gespeichert sind, das in einem anderen Programm erstellt wurde. | |
| Gültigkeitsbereich | Definiert die Verfügbarkeit einer Variablen, einer Prozedur oder eines Objekts. Beispielsweise ist eine Variable, die als Public deklariert ist, für alle Prozeduren in allen Modulen in einem direkt referenzierenden Projekt verfügbar, es sei denn, Option Private Module ist aktiviert. Wenn Option Private Module aktiviert ist, ist das Modul selbst privat und daher für referenzierende Projekte nicht verfügbar. Innerhalb einer Prozedur deklarierte Variablen sind nur innerhalb der Prozedur verfügbar. Sie verlieren ihren Wert zwischen zwei Aufrufen, es sei denn, sie sind mit Static deklariert. | |
| Haltemodus | Zeitlich begrenzte
Unterbrechung der Programmausführung in der Entwicklungsumgebung. Im Haltemodus können
Sie die Programmausführung überprüfen, zurücksetzen oder fortsetzen sowie Fehler
beseitigen und schrittweise das Programm durchlaufen. Unter den folgenden Bedingungen wird
während der Programmausführung in den Haltemodus gewechselt: - Während der Programmausführung wird einen Haltepunkt erreicht. - Während der Programmausführung wird STRG+PAUSE gedrückt. - Bei der Programmausführung wird eine Stop-Anweisung oder ein bisher nicht entdeckter Laufzeitfehler erreicht. - Ein 'Unterbrechen, wenn der Wert True ist'-Überwachungsausdruck wird hinzugefügt. Die Programmausführung wird angehalten, wenn der Wert des Überwachungsausdrucks wechselt und True ergibt. - Ein 'Unterbrechen, wenn Wert geändert wurde'-Überwachungsausdruck wird hinzugefügt. Die Programmausführung hält an, wenn der Wert des Überwachungsausdrucks wechselt. |
|
| Host-Anwendung | Alle Anwendungen, die die Verwendung von Visual Basic für Applikationen unterstützen, wie beispielsweise Microsoft Word, Microsoft Excel etc. | |
| Integrierte Konstante | Eine Konstante, die von einer Anwendung bereitgestellt wird. Die Konstanten von Visual Basic sind in der Objektbibliothek aufgelistet und können mit dem Objektkatalog betrachtet werden. Da Sie integrierte Konstanten nicht deaktivieren können, ist es nicht möglich, benutzerdefinierte Konstanten mit demselben Namen zu erstellen. | |
| Klassenbibliothek | Eine Datei oder eine Komponente
innerhalb einer anderen Datei, die Standardbeschreibungen von offengelegten Objekten,
Eigenschaften und Methoden enthält, die für Automatisierung verfügbar sind.
Klassenbibliotheksdateien (.olb) enthalten Klassenbibliotheken. Anmerkung: Klassenbibliothekdateien können auch die Datei-Endungen .tlb, .dll, .ocx und .exe besitzen. |
Siehe auch unter Objektbibliothek |
| Konstante | Ein benanntes Element, das während der gesamten Programmausführung einen konstanten Wert behält. Eine Konstante kann ein Zeichenfolge- oder numerisches Literal, eine andere Konstante oder eine beliebige Kombination sein, die arithmetische oder logische Operatoren (ausser Is und Exponentialausdrücke) enthält. Jede Host-Anwendung kann ihren eigenen Satz von Konstanten bestimmen. Zusätzliche Konstanten können von den Benutzer mit der Const-Anweisung definiert werden. Sie können Konstanten überall in Ihrem Code anstelle der tatsächlichen Werte einsetzen. | |
| Laufzeit | Die Zeit, in der das VBA-Programm ausgeführt wird. Zur Laufzeit können Sie den Programmcode nicht bearbeiten. | Siehe auch unter Entwurfszeit |
| Objektbibliothek | Eine Datei mit der
Dateinamenerweiterung .olb, die Informationen über verfügbare Objekte für
Automatisierungs-Controller (wie Visual Basic) bereitstellt. Sie können mit dem
Objektkatalog-Werkzeug der VBA-Entwicklungsumgebung die Inhalte einer Objektbibliothek
überprüfen, um Informationen über die bereitgestellten Objekt zu erhalten. Anmerkung: Objektbibliotheken können auch die Datei-Endungen .tlb, .dll, .ocx und .exe besitzen. |
Siehe auch unter Klassenbibliothek und Objektkatalog |
| Objektkatalog | Ein Werkzeug der VBA-Entwicklungsumgebung, mit dem Sie die Inhalte von Objektbibliotheken ansehen können, um Informationen über die bereitgestellten Objekte zu erhalten. | Siehe auch unter Objektbibliothek |
| OLE | Eine Technologie zur Integration von Programmen, die zum Austausch von Daten zwischen Programmen verwendet werden kann. Alle Office-Programme unterstützen OLE, so dass Daten über verknüpfte und eingebettete Objekte ausgetauscht werden können. | |
| Referenzierendes Projekt | Das aktuelle Projekt. Es hängt von der Host-Anwendung ab, wie Sie eine Verknüpfung zu einem Projekt erstellen. Wenn Sie beispielsweise direkt auf ein Projekt in Microsoft Excel verweisen möchten, wählen Sie im Menü Extras aus dem Dialogfeld Verweise das Projekt aus. Public-Variablen in einem direkt referenzierten Projekt sind für das direkt referenzierende Projekt verfügbar, jedoch sind Public-Variablen in einem direkt referenzierenden Projekt für ein direkt referenziertes Projekt nicht verfügbar. | |
| Schlüsselwort | Ein Wort oder ein Symbol, welches als Teil der Programmiersprache von Visual Basic erkannt wird, wie beispielsweise eine Anweisung, ein Funktionsname oder ein Operator. | |
| Verknüpftes Objekt | Daten (Objekt), die in einer Datei erstellt (Quelldatei) und in eine andere Datei (Zieldatei) eingefügt werden, wobei eine Verbindung zwischen den beiden Dateien bestehen bleibt. Eine Aktualisierung der Quelldatei wirkt sich automatisch auf das verknüpfte Objekt in der Zieldatei aus. Ein verknüpftes Objekt wird nicht zum Teil der Zieldatei. | Siehe auch unter Eingebettetes Objekt |
Typografische Dokument-Konventionen
Diese Tabelle zeigt die typografischen Konventionen für das Dokument.
| Element | Beispiel | Konvention |
| Menübefehle | Extras/Optionen | Menübefehle sind in kursiver Schrift angegeben. |
| Schlüsselwörter/Bezeichner | MsgBox, Workbooks, ScreenUpdating, vbNormal |
Schlüsselwörter und Bezeichner wie beispielsweise Namen von Objekten, Methoden, Eigenschaften, Ereignissen, VBA-Anweisungen und -Funktionen, Variablen, Konstanten usw. sind kursiv geschrieben. |
| Dialogfensternamen | Dialogfenster "Datei speichern unter", Optionen-Dialog | Der Name eines Dialogfensters wird gewöhnlich in Anführungszeichen (") geschrieben, insbesondere wenn er mehrere Wörter enthält (z.B. Dialogfenster "Datei speichern unter"). Dialogfensternamen mit nur einem Wort können auch ohne Anführungszeichen angegeben sein (z.B. Optionen-Dialog). |
| Tastenbefehle | Umschalt-Taste, Strg+Alt+F9 |
Namen von Tasten und Tastenkombinationen sind in kursiver Schrift angegeben. |
| Tastenbezeichnungen | Umschalt-Taste, Strg+Alt+F9, Page Down |
Bei Spezialtasten werden gewöhnlich die deutschen Bezeichnungen verwendet (z.B. Strg statt Ctrl, Umschalt statt Shift). In seltenen Fällen werden zwecks besserer Lesbarkeit englische Bezeichnung verwendet werden (z.B. Page Up und Page Down). |
| Programmcode | ActiveCell.Value = 1 | Programmcode verwendet generell die Schriftart Courier New. |
| Code-Kommentare | 'Variable deklarieren | Kommentare in Programmcode (sog. Inline Comments) sind in dunkelgrüner Farbe geschrieben. |
| Platzhalter | Dateiname = x, "Mappe <Datei> speichern?" |
Platzhalter sind entweder kursiv geschrieben oder mit den Zeichen '<' und '>' eingefasst. |
| Zahlen | 1'234.56 | Bei Zahlen wird als Tausendertrennzeichen ein Apostroph (') und als Dezimaltrennzeichen ein Punkt (.) verwendet. Dies entspricht der in der Schweiz üblichen Schreibweise. |
| Eszett 'ß' | Grösse (statt Größe) | Anstelle des scharfen 'ß' werden immer zwei 's' (d.h. 'ss') geschrieben (Beispiel: "Grösse" statt "Größe"). |
| Webadressen | http://www.google.de | Bei Webadressen ist immer die vollständige URL/Adresse inklusive Präfix "http://" angegeben (z.B. 'http://www.google.de' statt nur 'Google'). Dadurch ist die einem Link hinterlegte Adresse auch erkennbar, ohne zuerst den Mauszeiger über den Link positionieren zu müssen. |
| Weitere Informationen | Links zu weiteren Informationsquellen sind in einem hellgelben Rechteck angegeben und verwenden das i-Symbol in einer Sprechblase und den Text "Weitere Informationen". | |
| Tipps | Tipps sind am Glühbirnen-Symbol und dem Hinweis "Tipp" zu erkennen. | |
| Wichtig/Achtung | Besonders wichtige Hinweise sind mit einem Ausrufezeichen-Symbol gekennzeichnet. Solche Textstellen sollten unbedingt beachtet werden, da sie auf Gefahren, Probleme, Bugs und Fehler hinweisen. | |
| Fehlermeldungen | "Nicht genügend Arbeitsspeicher" | Fehlermeldungen sind grundsätzlich mit ihrem exakten Wortlaut angegeben. Das erleichtert die Volltextsuche. Geben Sie bei der Suche beispielsweise "Nicht genügend Arbeitsspeicher" ein und nicht "Ungenügend Arbeitsspeicher", "Zu wenig Arbeitsspeicher" oder "Nicht genügend Speicher". |
...
Diese Punkte sind momentan noch offen und werden demnächst abgeklärt und beschrieben:
» Dateiname der Arbeitsmappe
»
Zusatzprogramme (Equation, Map, Query etc.)
» UNC-Pfade
» Externe Objekt-Verknüpfungen (z.B. Verknüpfte Grafik mit einer anderen Arbeitsmappe als Quelle)
» Externe Bezüge in Zellen, Zellformeln, Namen etc.
» Externe Datenbereiche in Datenbank-Abfragen (Eigenschaft Connection von QueryTable)
» Externe Datenbereiche in Web-Abfragen
» Externe Datenbereiche in Pivot-Tabellen
» Dateipfade
in Hyperlinks (in Zellen, Objekten, Symbolleisten-Steuerelementen)
» Dateipfade in Makrozuweisungen (z.B. von Formular-Steuerelementen, AutoFormen, Symbolleisten-Schaltflächen etc.)
» Dateipfade
in Bezügen von Konsolidierungsbereichen
» FileFilter von GetOpenFilename und GetSaveAsFilename (Excel)
» ActivateMicrosoftApp-Methode mit xlMicrosoftMail-Konstante
» PrintOut-Methode von diversen Objekte (PrToFileName-Argument, ab Excel 2000)
» MergeWorkbook-Methode von Workbook
» RegisterXLL-Methode von Application
» CreateNewDocument-Methode von Hyperlink (ab Excel 2000)
» Integrierte Dialoge (Dialogs-Auflistung)
» Mail-System (MailSystem-Eigenschaft des Application-Objektes mit xlPowerTalk-Konstante)
» E-Mails versenden (Macintosh verwendet dazu ein spezielles Objekt)
» FileSearch-Objekt
» HelpFile-Eigenschaft des Err-Objektes
» Error-Ereignis des MultiPage-Controls (HelpFile-Argument)
» LoadPicture-Funktion und SavePicture-Anweisung in OLE Automation-Bibliothek (stdole, StdFunctions)
» Codebeispiele zu Verknüpfungen: LinkSources, OpenLinks, UpdateLink, LinkInfo, ChangeLink
» Verweise
im VBA-Projekt
» Dateipfad
der Hilfe des VBA-Projektes
» Digitale
Signaturen von VBA-Projekten bzw. Add-Ins
» Verzeichnispfad
in der Hyperlink-Basis
» Dateipfade
in MSForms-Controls-Eigenschaften (z.B. Picture-Eigenschaft von bestimmten Controls und
MouseIcon-Eigenschaft von allen Controls)
» Dateipfade
in MSForms-UserForm-Eigenschaften (Picture-Eigenschaft und MouseIcon-Eigenschaft)
» Escher-Layer
» Grafikformate
» Web Components
» In Excel für Macintosh verfügbare (Standard-)Add-Ins
» COM Add-Ins (in Office/Excel und VBA Editor)
» Excel 4-Makros
» Angebundene Symbolleisten (wegen Pfad in Makrozuweisung)
» XL-Viewer (nur unter Windows)
» Excel-Startparameter
» Hinweis
zu Excel-Limitationen (XLimits)
Diese Punkte wurden grundsätzlich geklärt, müssen aber noch genauer beschrieben werden:
» Laufzeitfehler 453
» RegisteredFunctions-Eigenschaft des Application-Objektes (Excel)
» Automatisierung (-> funktioniert auf Macintosh)
» OLE -
Object Linking and Embedding (-> funktioniert in Office für Macintosh)
» DDE-Verknüpfungen
(-> funktionieren in Office für Macintosh)
» Datenbank-
und Web-Queries (funktioniert auf Macintosh)
Microsoft Query X for Mac
http://www.microsoft.com/downloads/details.aspx?FamilyID=e8c2ab08-46e0-4536-bed5-97a997e2436e&displaylang=en
Microsoft Query X for Mac uses
Open Database Connectivity (ODBC) to allow you to import data from databases into
Microsoft Excel X. You can use Query X to create new queries or refresh existing queries
that were created in other versions of Excel, such as Excel 98, Excel 2001, and Excel for
Windows.
» ODBC-Integration
(funktioniert ab Excel v.X für Macintosh)
ODBC integration in Excel X
Do you have an external data range query that you created in another version of
Excel that you would like to refresh in Excel X? If so, we have good news for you.
Excel X, version 10.1.0, reintroduces Open Database Connectivity (ODBC) integration
with Excel. Excel X, version 10.1.0, is included in the latest Office update.
After you install the latest version of Excel X, Microsoft Query X for Mac, and the appropriate ODBC drivers, you can use Query X for Mac to create new queries or refresh existing queries that were created in other versions of Excel, such as Excel 98, Excel 2001, and Excel for Windows.
Using
Office v. X
http://www.microsoft.com/mac/otherproducts/officex/using.aspx?pid=usingofficex&type=howto&article=/mac/LIBRARY/feature_articles/officex/xl_ODBC.xml
Zuletzt aktualisiert am
24.01.2006 / 15:30 Uhr
© 2002-2006 by Philipp von Wartburg, Winkel 115, CH-8916 Jonen
Alle Rechte vorbehalten. Alle Angaben ohne Gewähr.