Office Logo VBA Klicken für Hauptseite von "The SOSCQ Page"   Klicken für Hauptseite von "The SOSCQ Page - VBA/VB-Codebeispiele" Klicken für Startseite von 'xlam - Excel and more!'

Tastatur und Maus für Microsoft Excel sperren

.Beschreibung
Das nachstehende VBA-Codebeispiel zeigt, wie man Microsoft Excel für jegliche Tastatur- und Maus-Eingaben sperren kann. Dadurch erreicht man, dass der Benutzer während der Codeausführung unerwünschte Eingaben macht, den Ablauf stört oder sogar unter- bzw. abbricht. Ausgenommen sind Eingaben des Benutzers in Dialogfelder, die aus dem VBA-Programmcode aufgerufen werden.

.VBA-Code
Public Sub LockKeyboardAndMouse()
  Application.Interactive = False
  'VBA-Programmcode...
  Application.Interactive = True   '<- Am Schluss zurück auf True setzen!
End Sub

.Hinweis
Beachten Sie unbedingt, dass am Schluss der Prozedur die Interactive-Eigenschaft zurück auf True gesetzt werden muss, da dies nicht automatisch von Excel erledigt wird. Berücksichtigen Sie potenzielle Laufzeitfehler, die innerhalb der Prozedur auftreten können und fangen Sie diese ab. Wenn die Ausführung des VBA-Codes abbricht (eben beispielsweise aufgrund eines nicht abgefangenen Fehlers) und somit Interactive immer noch auf False ist, bleibt Microsoft Excel so lange für den Benutzer gesperrt, bis Interactive mittels VBA-Programmcode auf True gesetzt wird. Das Ausführen eines Makros bzw. einer VBA-Prozedur ist durch den Benutzer jedoch nicht möglich, da die Benutzeroberfläche und somit auch das Öffnen des Makros-Dialoges gesperrt ist.

Weitere Informationen

Excel-Objektmodell: Eigenschaften des Application-Objektes

 

Verwandte Codebeispiele

Unterbrechung eines Makros durch den Benutzer verhindern

Bearbeitung der aktiven Arbeitsmappe durch den Benutzer verhindern

To Top


Unterbrechung eines Makros durch den Benutzer verhindern

.Beschreibung
Anhand der EnableCancelKey-Eigenschaft kann man eine durch den Benutzer ausgelöste Makro-Unterbrechung abfangen und darauf reagieren. Es existieren drei verschiedene Zustände/Konstanten (Beschreibung aus der Microsoft Excel 2000 VBA-Referenz):

Konstante Beschreibung
xlDisabled Das Drücken der Abbruchtasten wird nicht beachtet.
xlErrorHandler Die Unterbrechung wird als Fehler an die momentan ausgeführte Prozedur gesendet. Dieser Fehler kann dort durch eine Fehlerbehandlungsroutine behandelt werden, die mit einer On Error GoTo-Anweisung festgelegt wurde. Der Fehlercode des auffangbaren Fehlers ist 18.
xlInterrupt Die aktuelle Prozedur wird unterbrochen, und der/die Benutzer/in kann die Prozedur testen oder beenden.

» Codebeispiel #1: Dieses Codebeispiel verhindert die Makro-Unterbrechung.

» Codebeispiel #2: Hier wird die Makro-Unterbrechung an die Fehlerbehandlungsroutine der Prozedur weitergeleitet.

» Codebeispiel #3: Mit diesem Code wird die Makro-Unterbrechung zurückgesetzt, d.h. das Abbrechen ermöglicht.

.VBA-Code #1
Public Sub LockMacroBreak1()
  Application.EnableCancelKey = xlDisabled
End Sub

.VBA-Code #2
Public Sub LockMacroBreak2()
  Application.EnableCancelKey = xlErrorHandler
End Sub

.VBA-Code #3
Public Sub UnlockMacroBreak()
  Application.EnableCancelKey = xlInterrupt
End Sub

.Hinweis
Die EnableCancelKey-Eigenschaft wird immer auf xlInterrupt zurückgesetzt, sobald Microsoft Excel Leerlaufzeit hat und kein Code ausgeführt wird. Um Unterbrechungen in einer Prozedur aufzufangen oder zu sperren, müssen Sie die EnableCancelKey-Eigenschaft bei jedem Aufruf der Prozedur explizit ändern.

Weitere Informationen

Excel-Objektmodell: Eigenschaften des Application-Objektes

 

Verwandte Codebeispiele

Tastatur und Maus für Microsoft Excel sperren

Bearbeitung der aktiven Arbeitsmappe durch den Benutzer verhindern

To Top


Bearbeitung der aktiven Arbeitsmappe durch den Benutzer verhindern

.Beschreibung
Mit der DataEntryMode-Eigenschaft kann man Microsoft Excel in den so genannten Dateneingabemodus versetzen. Im Dateneingabemodus können Sie Daten eingeben, jedoch nur in nicht geschützte Zellen des aktuell markierten Zellbereichs.

Konstante Beschreibung
xlOn Dateneingabemodus ist aktiviert.
xlStrict Dateneingabemodus ist aktiviert und lässt sich auch nicht durch Drücken der Esc-Taste deaktivieren.
xlOff Dateneingabemodus ist deaktiviert.

.VBA-Code #1
Public Sub LockWorkbookEdit1()
  Application.DataEntryMode = xlOn
End Sub

.VBA-Code #2
Public Sub LockWorkbookEdit2()
  Application.DataEntryMode = xlStrict
  'VBA-Programmcode...

  Application.DataEntryMode = xlOff   '<- Am Schluss zurück auf xlOff setzen!
End Sub

Weitere Informationen

Excel-Objektmodell: Eigenschaften des Application-Objektes

 

Verwandte Codebeispiele

Unterbrechung eines Makros durch den Benutzer verhindern

Tastatur und Maus für Microsoft Excel sperren

To Top


Starten von Microsoft Excel ohne Add-Ins

.Beschreibung
Anhand von verschiedenen Startparametern (auch Befehlszeilenparameter genannt) kann man den Start von Microsoft Excel steuern beziehungsweise beeinflussen. Für das Starten von Excel ohne Laden von Add-Ins steht kein eigentlicher Parameter zur Verfügung. Man kann jedoch als Umgehungslösung den Parameter 'automation' einsetzen, der unter anderem verhindert, dass die Add-Ins geladen werden. Allerdings müssen Sie beachten, dass auch
- keine Dateien aus dem/den Startordner/n XlStart geöffnet werden (z.B. Personl.xls),
- keine Dateien aus dem zusätzlichen Startordner geöffnet werden,
- keine Meldungsdialoge (Hinweise, Fehlermeldungen usw.) angezeigt werden und
- keine Programmroutinen ausgeführt werden, die gewöhnlich im normalen Modus ablaufen.

.VBA-Code #1
Public Sub RunExcelWithoutAddIns1()
  Shell """C:\Programme\Microsoft Office\Office\Excel.exe"" /automation", vbNormalFocus

End Sub

.VBA-Code #2
Public Sub RunExcelWithoutAddIns2()
  CreateObject("WScript.Shell").Run "Excel.exe /automation", vbNormalFocus

End Sub

Verwandte Codebeispiele

Starten von Microsoft Excel

Starten von Microsoft Excel ohne persönliche Makro-Arbeitsmappe Personl.xls

Befehlszeile des Microsoft Excel-Starts ermitteln

Eigene Excel-Startparameter definieren

 

Weitere Informationen

VBA-Befehle und -Funktionen

Excel-Startparameter

To Top


Starten von Microsoft Excel ohne persönliche Makro-Arbeitsmappe Personl.xls

.Beschreibung
...

TODO: Programmcode

.VBA-Code #1
Public Sub RunExcelWithoutPersonalMacroWorkbook1()
  Shell """C:\Programme\Microsoft Office\Office\Excel.exe"" /automation", vbNormalFocus

End Sub

.VBA-Code #2
Public Sub RunExcelWithoutPersonalMacroWorkbook1()
  CreateObject("WScript.Shell").Run "Excel.exe /automation", vbNormalFocus

End Sub

Verwandte Codebeispiele

Starten von Microsoft Excel

Starten von Microsoft Excel ohne Add-Ins

Befehlszeile des Microsoft Excel-Starts ermitteln

Eigene Excel-Startparameter definieren

 

Weitere Informationen

VBA-Befehle und -Funktionen

Excel-Startparameter

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Starten von Microsoft Excel mit Festlegen der Arbeitsordners

.Beschreibung
...

 

Schalter "/p"

Wenn der angegebene Ordner nicht existiert, wird der übliche Standardarbeitsordner verwendet, welcher im Optionen-Dialog von Microsoft Excel eingetragen ist.

.VBA-Code #1
Public Sub RunExcelAndSetWorkDir1()
  Shell """C:\Programme\Microsoft Office\Office\Excel.exe"" /p ""C:\Daten""", vbNormalFocus

End Sub

.VBA-Code #2
Public Sub RunExcelAndSetWorkDir2()
  CreateObject("WScript.Shell").Run "Excel.exe /p ""C:\Daten""", vbNormalFocus

End Sub

Verwandte Codebeispiele

Standardarbeitsordner von Microsoft Excel abfragen/ändern

Starten von Microsoft Excel

Befehlszeile des Microsoft Excel-Starts ermitteln

Eigene Excel-Startparameter definieren

 

Weitere Informationen

VBA-Befehle und -Funktionen

Excel-Startparameter

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Starten von Microsoft Excel ohne neue leere Arbeitsmappe

.Beschreibung
...

Bei Verwendung des Befehlszeilen-Schalters "e" wird Microsoft Excel gestartet, ohne dass eine neue leere Arbeitsmappe erscheint.

.VBA-Code #1
Public Sub RunExcelWithoutNewWorkbook1()
  Shell """C:\Programme\Microsoft Office\Office\Excel.exe"" /e", vbNormalFocus

End Sub

.VBA-Code #2
Public Sub RunExcelWithoutNewWorkbook2()
  CreateObject("WScript.Shell").Run "Excel.exe /e", vbNormalFocus

End Sub

Verwandte Codebeispiele

Starten von Microsoft Excel

Befehlszeile des Microsoft Excel-Starts ermitteln

Eigene Excel-Startparameter definieren

 

Weitere Informationen

VBA-Befehle und -Funktionen

Excel-Startparameter

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Starten von Microsoft Excel im abgesicherten Modus (Safe Mode)

.Beschreibung
...

Je nach Excel-Version kann als Schalter auch "/safe" oder "/safemode" verwendet werden.

.VBA-Code #1
Public Sub RunExcelInSafeMode1()
  Shell """C:\Programme\Microsoft Office\Office\Excel.exe"" /s", vbNormalFocus

End Sub

.VBA-Code #2
Public Sub RunExcelInSafeMode2()
  CreateObject("WScript.Shell").Run "Excel.exe /s", vbNormalFocus

End Sub

Verwandte Codebeispiele

Prüfen, ob Microsoft Excel im abgesicherten Modus (Safe Mode) ausgeführt wird

Starten von Microsoft Excel

Befehlszeile des Microsoft Excel-Starts ermitteln

Eigene Excel-Startparameter definieren

 

Weitere Informationen

VBA-Befehle und -Funktionen

Excel-Startparameter

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Starten von Microsoft Excel mit schreibgeschütztem Öffnen einer Arbeitsmappendatei

.Beschreibung
...

Anhand des Befehlszeilen-Schalters "r" wird festgelegt, dass die angegebene Datei schreibgeschützt geöffnet werden soll.

.VBA-Code #1
Public Sub RunExcelOpenWorkbookReadOnly1()
  Shell """C:\Programme\Microsoft Office\Office\Excel.exe"" /r C:\Daten\EineMappe.xls", vbNormalFocus

End Sub

.VBA-Code #2
Public Sub RunExcelOpenWorkbookReadOnly2()
  CreateObject("WScript.Shell").Run "Excel.exe /r C:\Daten\EineMappe.xls", vbNormalFocus

End Sub

Verwandte Codebeispiele

Starten von Microsoft Excel

Starten von Microsoft Excel mit schreibgeschütztem Öffnen mehrerer Arbeitsmappendateien

 

Weitere Informationen

VBA-Befehle und -Funktionen

Excel-Startparameter

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Starten von Microsoft Excel mit schreibgeschütztem Öffnen mehrerer Arbeitsmappendateien

.Beschreibung
...

Dem Befehlszeilen-Schalter "r" können auch mehrere Dateien folgen. In diesem Fall werden alle angegebenen Dateien schreibgeschützt geöffnet.

.VBA-Code #1
Public Sub RunExcelOpenWorkbooksReadOnly1()
  Shell """C:\Programme\Microsoft Office\Office\Excel.exe"" /r C:\Daten\EineMappe.xls C:\Excel\AndereMappe.xls", vbNormalFocus

End Sub

.VBA-Code #2
Public Sub RunExcelOpenWorkbooksReadOnly2()
  CreateObject("WScript.Shell").Run "Excel.exe /r C:\Daten\EineMappe.xls C:\Excel\AndereMappe.xls", vbNormalFocus

End Sub

Verwandte Codebeispiele

Starten von Microsoft Excel

Starten von Microsoft Excel mit schreibgeschütztem Öffnen einer Arbeitsmappendatei

 

Weitere Informationen

VBA-Befehle und -Funktionen

Excel-Startparameter

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Starten von Microsoft Excel mit einer Kombination verschiedener Startparameter

.Beschreibung
...

Hier wird gezeigt, wie sich die verschiedenen Startparameter von Microsoft Excel kombinieren lassen.

.VBA-Code #1
Public Sub RunExcelWithParameters1()

End Sub

.VBA-Code #2
Public Sub RunExcelWithParameters2()

End Sub

Verwandte Codebeispiele

Standardarbeitsordner von Microsoft Excel abfragen/ändern

Starten von Microsoft Excel

Befehlszeile des Microsoft Excel-Starts ermitteln

Eigene Excel-Startparameter definieren

 

Weitere Informationen

VBA-Befehle und -Funktionen

Excel-Startparameter

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Starten von Microsoft Excel mit einer bestimmten Fenstergrösse und -position

.Beschreibung
Das Starten von Microsoft Excel mit einer festgelegten Anwendungsfenstergrösse und/oder Anwendungsfensterposition ist gar nicht so einfach, da die Fensterabmessungen in der Windows Registry gespeichert sind und somit vor der Programmausführung angepasst werden müssen.

 

 

Anwendungsfenster auf dem Bildschirm zentrieren:

Auflösung 1152 x 864

Bildschirmmitte: Left=576, Top=432

Fenster halber Grösse zentrieren: Left=288, Top=216, Width=576, Top=432

 

Auflösung 1024 x 768

Bildschirmmitte: Left=512, Top=384

Fenster halber Grösse zentrieren: Left=256, Top=192, Width=512, Top=384

Wichtig ist, dass das Programm mit dem Fensterstil vbNormalFocus gestartet wird.

 

 

.VBA-Code #1
Public Sub RunExcelWithWindowSizeAndPos1()
  Dim objWSHShell As Object
  Set objWSHShell = CreateObject("WScript.Shell")
  'Left=0, Top=100, Width=500, Height=200
  objWSHShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel\Pos", "0,100,500,200"
  'WindowState=2 (Normal)
  objWSHShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel\Maximized", "2"
  Set objWSHShell = Nothing

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

.VBA-Code #2
Public Sub RunExcelWithWindowSizeAndPos2()
  Dim objWSHShell As Object
  Set objWSHShell = CreateObject("WScript.Shell")
  'Left=0, Top=100, Width=500, Height=200
  objWSHShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel\Pos", "0,100,500,200"
  'WindowState=2 (Normal)
  objWSHShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\Microsoft Excel\Maximized", "0"
  Set objWSHShell = Nothing

  CreateObject("WScript.Shell").Run "Excel.exe", vbNormalFocus
End Sub

Verwandte Codebeispiele

Starten von Microsoft Excel

Bildschirm-Auflösung von Windows ermitteln

 

Weitere Informationen

VBA-Befehle und -Funktionen

VBA-Spezialthema: Windows Script Host (WSH)

Fragen und Antworten: Wie lässt sich Excel mit einer bestimmten Fenstergrösse und -position starten?

To Top


Starten von Microsoft Excel und Eintragen von fehlenden Informationen in die Registry

.Beschreibung
Mit dem Startparameter "/o" wird erreicht, dass Microsoft Excel insofern die Registry-Einträge korrigiert, indem fehlende Werte eingetragen werden. Ungültige Werte werden dagegen nicht korrigiert.

.VBA-Code #1
Public Sub RunExcelAndRegistryValues1()
  Shell """C:\Programme\Microsoft Office\Office\Excel.exe"" /o", vbNormalFocus

End Sub

.VBA-Code #2
Public Sub RunExcelAndRegistryValues2()
  CreateObject("WScript.Shell").Run "Excel.exe /o", vbNormalFocus

End Sub

Verwandte Codebeispiele

Starten von Microsoft Excel

Starten von Microsoft Excel und Registrierung der Anwendung durchführen

Starten von Microsoft Excel und Registrierung der Anwendung löschen

Eigene Excel-Startparameter definieren

 

Weitere Informationen

VBA-Befehle und -Funktionen

Excel-Startparameter

To Top


Starten von Microsoft Excel und Registrierung der Anwendung durchführen

.Beschreibung
Mit dem Startparameter "/regserver" wird erreicht, dass Microsoft Excel seine Registry-Einträge neu generiert. Nach erfolgter Durchführung wird Excel automatisch beendet.

.VBA-Code #1
Public Sub RunExcelAndRegisterProgram1()
  Shell """C:\Programme\Microsoft Office\Office\Excel.exe"" /regserver", vbNormalFocus

End Sub

.VBA-Code #2
Public Sub RunExcelAndRegisterProgram2()
  CreateObject("WScript.Shell").Run "Excel.exe /regserver", vbNormalFocus

End Sub

Verwandte Codebeispiele

Starten von Microsoft Excel

Starten von Microsoft Excel und Registrierung der Anwendung löschen

Starten von Microsoft Excel und Eintragen von fehlenden Informationen in die Registry

Eigene Excel-Startparameter definieren

 

Weitere Informationen

VBA-Befehle und -Funktionen

Excel-Startparameter

To Top


Starten von Microsoft Excel und Registrierung der Anwendung löschen

.Beschreibung
Mit dem Startparameter "/unregserver" wird erreicht, dass Microsoft Excel seine Registry-Einträge löscht. Nach erfolgter Durchführung wird Excel automatisch beendet.

.VBA-Code #1
Public Sub RunExcelAndUnregisterProgram1()
  Shell """C:\Programme\Microsoft Office\Office\Excel.exe"" /unregserver", vbNormalFocus

End Sub

.VBA-Code #2
Public Sub RunExcelAndUnregisterProgram2()
  CreateObject("WScript.Shell").Run "Excel.exe /unregserver", vbNormalFocus

End Sub

Verwandte Codebeispiele

Starten von Microsoft Excel

Starten von Microsoft Excel und Registrierung der Anwendung durchführen

Starten von Microsoft Excel und Eintragen von fehlenden Informationen in die Registry

Eigene Excel-Startparameter definieren

 

Weitere Informationen

VBA-Befehle und -Funktionen

Excel-Startparameter

To Top


Windows Explorer starten

.Beschreibung
Die hier vorgestellten Codebeispiele zeigen, wie man den Windows Explorer mit VBA/VB starten kann.

» Codebeispiel #1: Dieser VBA-Code startet den Windows Explorer mit der Baumansicht. Es wird der Inhalt des System- bzw. Home-Laufwerkes angezeigt (abgelegt als Umgebungsvariable "SYSTEMDRIVE" bzw. "HOMEDRIVE").

» Codebeispiel #2: Wenn man den Windows Explorer mit dem Schalter "/e" startet, erscheint ebenfalls die Baumansicht, wobei der Inhalt des aktuellen Verzeichnisses angezeigt wird. Das aktuelle Verzeichnis kann mit der VBA-Funktion CurDir abgefragt werden.

» Codebeispiel #3: Hier wird der Windows Explorer mit der Ordneransicht geöffnet und der Inhalt des aktuellen Verzeichnisses angezeigt.

» Codebeispiel #4: Der Parameter "/n" hat hier den gleichen Effekt wie der in Beispiel #3 vorgestellte Parameter "/idlist". Der Windows Explorer wird mit der Ordneransicht gestartet und der Inhalt des aktuellen Verzeichnisses angezeigt.

» Codebeispiel #5: Möchte man den Windows Explorer mit der Ordneransicht öffnen und den Inhalt des System- bzw. Home-Laufwerkes anzeigen, muss man explizit den Pfad dieses Laufwerkes übergeben. Diesen erhält man unter anderem mit der Environ-Funktion von VBA. Der benötigte Bezeichner lautet "SYSTEMDRIVE" bzw. "HOMEDRIVE".

» Codebeispiel #6: Mit dem Schalter "/root" kann ein Ordner als Stammordner angezeigt werden. Nach "/root" muss zwingend ein Verzeichnis angegeben werden (anderenfalls wird der Windows Explorer nicht gestartet). Der Ordnerinhalt wird mit der Ordneransicht angezeigt. Im Beispiel wird das aktuelle Verzeichnis verwendet, welches mit CurDir ermittelt wird.

» Codebeispiel #7: Wie in Beispiel #6 wird der Schalter "/root" verwendet, zusätzlich jedoch der Schalter "/e" angegeben, damit der Windows Explorer mit der Baumansicht gestartet wird. Auch hier wird der angegebene Ordner als Stammordner angezeigt. Im Beispiel wird das aktuelle Verzeichnis verwendet, welches mit CurDir ermittelt wird. Beachten Sie, dass der Schalter "/e" zwingend vor dem Schalter "/root" stehen muss. Anderenfalls wird der Explorer nicht gestartet (es erscheint keine Fehlermeldung). Wenn das Komma zwischen den beiden Schaltern fehlt, wird der Schalter "/e" ignoriert und folglich die Ordneransicht verwendet.

.VBA-Code #1
Public Sub RunWindowsExplorer1()
  Shell "Explorer.exe", vbNormalFocus
End Sub

.VBA-Code #2
Public Sub RunWindowsExplorer2()
  Shell "Explorer.exe /e", vbNormalFocus
End Sub

.VBA-Code #3
Public Sub RunWindowsExplorer3()
  Shell "Explorer.exe /idlist", vbNormalFocus
End Sub

.VBA-Code #4
Public Sub RunWindowsExplorer4()
  Shell "Explorer.exe /n", vbNormalFocus
End Sub

.VBA-Code #5
Public Sub RunWindowsExplorer5()
  Shell "Explorer.exe " & Environ("HOMEDRIVE"), vbNormalFocus
End Sub

.VBA-Code #6
Public Sub RunWindowsExplorer6()
  Shell "Explorer.exe /root, " & CurDir, vbNormalFocus
End Sub

.VBA-Code #7
Public Sub RunWindowsExplorer7()
  Shell "Explorer.exe /e, /root, " & CurDir, vbNormalFocus
End Sub

.Hinweis
Bitte beachten Sie, dass bei der Verwendung eines Verzeichnis-Pfades immer zuerst überprüft werden sollte, ob der Pfad tatsächlich vorhanden ist. Anderenfalls zeigt der Explorer die Fehlermeldung "Der Pfad <x> ist nicht vorhanden oder verweist auf kein Verzeichnis". Da es sich nicht um eine Excel- bzw. VBA-Fehlermeldung handelt, kann sie nicht unterdrückt werden.

Verwandte Codebeispiele

Datei im Windows Explorer anzeigen

Ordner im Windows Explorer anzeigen

Dateisuche des Windows Explorers anzeigen

 

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Dateisuche des Windows Explorers anzeigen

.Beschreibung
Auch die Dateisuche des Windows Explorers lässt sich mit VBA/VB aufrufen.

Dazu wird der Windows Explorer ausgeführt und anschliessend die Taste F3 gedrückt, was mit SendKeys erreicht wird. Der Nachteil dieser Lösung ist allerdings, dass extra der Windows Explorer gestartet werden muss. Das Fenster der Dateisuche wird dabei über dem Fenster des Windows Explorers angezeigt.

Mit der Shell-Funktion von VBA funktioniert es nicht, weil der Windows Explorer nicht synchron gestartet wird.

.VBA-Code
Public Sub ShowWindowsFileSearch()
  CreateObject("WScript.Shell").Run "Explorer.exe", vbNormalFocus, True
  SendKeys "{f3}"
End Sub

Verwandte Codebeispiele

Datei im Windows Explorer anzeigen

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Sprache/Land einer Dokument-Datei abfragen

.Beschreibung
...

Funktioniert nur mit Dokument-Dateien von Microsoft Excel und Microsoft Word.

Enthält bei einer Arbeitsmappe beispielsweise "Germany", wenn die Mappe mit der deutschen Version von Microsoft Excel (zuletzt) gespeichert wurde. Wurde die Arbeitsmappe mit der amerikanischen Excel-Version gespeichert, enthält LocaleInfo "United States". Bei einer Mappe der französischen Excel-Version enthält die Eigenschaft den Wert "France".

Bei einem Microsoft Word-Dokument ist ein Code enthalten, z.B. 1031 bei einem Dokument, welches mit der deutschen Version von Microsoft Word gespeichert wurde, 1033 bei einem Dokument der amerikanischen Word-Version und 1036 bei einem französischen Word-Dokument.

Diese Information kann nur abgefragt werden, wenn man von "aussen" auf die Datei zugreift. Obwohl es sich im Prinzip um eine Dokument-Eigenschaft handelt, kann sie nicht via BuiltInDocumentProperties-Auflistung des Workbook-Objektes (im Falle von Microsoft Excel) abgefragt werden, da die Auflistung diese Eigenschaft nicht enthält.

Bitte beachten Sie, dass sich die Dokument-Datei nicht in Bearbeitung befinden darf. Es kann nur eine geschlossene Datei analysiert werden

 

.VBA-Code
Public Sub GetLocaleInfo()
  Dim objDSOReader As Object
  Dim objDSODocument As Object
  Set objDSOReader = CreateObject("DSOleFile.PropertyReader")
  Set objDSODocument = objDSOReader.GetDocumentProperties("C:\Daten\EineMappe.xls")

  MsgBox "Sprache/Land: " & objDSODocument.LocaleInfo
  Set objDSODocument = Nothing
  Set objDSOReader = Nothing
End Sub

.Hinweis
Sobald man das Dokument in der entsprechenden (Office-)Anwendung speichert (z.B. eine Arbeitsmappe mit Microsoft Excel), so erhält die LocaleInfo-Eigenschaft die aktuelle Sprach-/Land-Einstellung.

Verwandte Codebeispiele

Land der landesspezifischen Version von Microsoft Excel abfragen

Ländereinstellung in der Windows Systemsteuerung abfragen

Spracheinstellung in der Windows Systemsteuerung abfragen

 

Weitere Informationen

VBA-Spezialthema: OLE Document Properties (DSOFile)

To Top


Land der landesspezifischen Version von Microsoft Excel abfragen

.Beschreibung
Von Microsoft Excel gibt es mehrere so genannte lokalisierte Programmausgaben. Es existiert unter anderem eine deutsche, amerikanische, französische und spanische Ausgabe von der gleichen Excel-Version, beispielsweise Microsoft Excel 97. Man kann nun abfragen, welche landesspezifische Microsoft Excel-Version eingesetzt wird. Anhand dieser Information kann man beispielsweise steuern, welche Tastaturabkürzung zum Anklicken einer Schaltfläche mittels SendKeys benutzt werden soll. Ein gutes Codebeispiel dazu ist "Druckereigenschaften-Dialog anzeigen".

Das nachstehende Codebeispiel gibt den Ländercode von Microsoft Excel aus.

Land Code
Brasilien 55
Dänemark 45
Deutschland 49
Finnland 358
Frankreich 33
Italien 39
Niederlande 31
Portugal 351
Spanien 34
Schweden 46
United Kingdom 44
USA 1

 

Diese Information kann nur innerhalb der laufenden Excel-Anwendung abgefragt werden.

.VBA-Code
Public Sub GetExcelCountry()
  MsgBox Application.International(xlCountryCode)
End Sub

Verwandte Codebeispiele

Ländereinstellung in der Windows Systemsteuerung abfragen

Spracheinstellung in der Windows Systemsteuerung abfragen

Sprache/Land einer Dokument-Datei abfragen

 

Weitere Informationen

Excel-Objektmodell: Eigenschaften des Application-Objektes

To Top


Ländereinstellung in der Windows Systemsteuerung abfragen

.Beschreibung
Das in der Windows Systemsteuerung eingestellte Land erhält man am einfachsten über die International-Eigenschaft unter Verwendung der Konstante xlCountrySetting. Das Land wird in Form eines Codes angezeigt, und zwar des so genannten Ländercodes.

49 für Deutschland

41 für Schweiz

.VBA-Code
Public Sub GetWindowsCountry()
  MsgBox Application.International(xlCountrySetting)
End Sub

Verwandte Codebeispiele

Land der landesspezifischen Version von Microsoft Excel abfragen

Spracheinstellung in der Windows Systemsteuerung abfragen

Sprache/Land einer Dokument-Datei abfragen

 

Weitere Informationen

Excel-Objektmodell: Eigenschaften des Application-Objektes

To Top


Spracheinstellung in der Windows Systemsteuerung abfragen

.Beschreibung
...

Programmcode von clipview.vbp

.VBA-Code
Public Sub GetWindowsLanguage()

End Sub

Verwandte Codebeispiele

Land der landesspezifischen Version von Microsoft Excel abfragen

Ländereinstellung in der Windows Systemsteuerung abfragen

Sprache/Land einer Dokument-Datei abfragen

To Top


Computername abfragen

.Beschreibung
Es existieren mehrere Möglichkeiten, wie man den Computernamen des eingesetzten Rechners herausfinden kann. Nachfolgend werden drei verschiedene Lösungen vorgestellt.

.VBA-Code #1
Public Sub GetComputerName1()
  MsgBox "Computername: " & CreateObject("WScript.Network").ComputerName
End Sub

.VBA-Code #2
Public Sub GetComputerName2()
  MsgBox "Computername: " & CreateObject("WScript.Shell").RegRead _

     ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\ComputerName")
End Sub

.VBA-Code #3
Public Sub GetComputerName3()
  MsgBox "Computername: " & Environ("Computername")
End Sub

Verwandte Codebeispiele

Computername ändern

Login-Name des angemeldeten Benutzers abfragen

Domänenname des Windows-Benutzers abfragen

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Computername ändern

.Beschreibung
Der Name des Computers kann geändert werden, indem man einen Eintrag in der Windows Registry ändern. Der benötigte Schlüssel lautet HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\ComputerName.

Wurde der Computername beispielsweise irrtümlich, aber erst vor kurzem geändert, so können Sie in diesem Registry-Schlüssel den ursprünglichen, vor der Änderung verwendeten Computernamen nachschauen: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName.

Mit diesem exemplarischen Codebeispiel wird der Computername auf "WS1" geändert.

.VBA-Code
Public Sub SetComputerName()
  CreateObject("WScript.Shell").RegWrite _
     "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\ComputerName", "WS1"
End Sub

.Hinweis
Bitte beachten Sie, dass das Ändern des Computernamens zu späteren Problemen führen kann.

Verwandte Codebeispiele

Computername abfragen

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Zuletzt gesuchte Computer von Windows auflisten

.Beschreibung
Windows stellt Funktionen zur Verfügung, mit denen man unter anderem Dateien, Ordner, Personen und auch andere Computer suchen kann. Die Suche nach Computern kann über die Windows Start-Schaltfläche, Menü Suchen/Computer oder im Windows Explorer über Menü Extras/Suchen/Computer aufgerufen werden. Im Suchdialog kann man dann den gesuchten Computernamen eingeben oder aus der Liste der zuletzt gesuchten Computer auswählen. Die Einträge der besagten Liste sind in der Windows Registry gespeichert, und zwar im Schlüssel "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FindComputerMRU".

Dieses Codebeispiel zeigt, wie man die Namen der zuletzt gesuchten Computer aus der Registry lesen und auflisten kann. Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.

Einträge a bis z, sowie Eintrag MRUList

.VBA-Code
Public Sub ListFindComputerMRUs()
  Dim strValue As String
  Dim intChar As Integer
  Dim objShell As Object
  Dim wksSheet As Worksheet
  On Error Resume Next
  Set objShell = CreateObject("WScript.Shell")
  strValue = objShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FindComputerMRU\a")
  If Err.Number <> 0 Then
    MsgBox "Die Liste der zuletzt gesuchten Computer ist leer.", vbInformation
    Set objShell = Nothing
    Exit Sub
  End If
  Set wksSheet = ActiveWorkbook.Worksheets.Add
  For intChar = 97 To 122
    strValue = objShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FindComputerMRU\" & Chr$(intChar))
    If Err.Number = 0 Then
      wksSheet.Cells(intChar - 96, 1).NumberFormat = "@"
      wksSheet.Cells(intChar - 96, 1).Value = strValue
    Else
      'Laufzeitfehler -2147024894 "Registrierungsschlüssel [x] kann nicht zum Lesen geöffnet werden"
      Err.Clear
    End If
  Next intChar
  wksSheet.Range("A1").EntireColumn.AutoFit
  Set objShell = Nothing
  Set wksSheet = Nothing
End Sub

Verwandte Codebeispiele

Liste der zuletzt gesuchten Computer von Windows löschen

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Liste der zuletzt gesuchten Computer von Windows löschen

.Beschreibung
Mit diesem Programmcode wird die Liste der zuletzt gesuchten Computer von Windows gelöscht.

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FindComputerMRU

Einträge a bis z, sowie Eintrag MRUList

.VBA-Code
Public Sub ClearFindComputerMRU()

End Sub

Verwandte Codebeispiele

Zuletzt gesuchte Computer von Windows auflisten

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Domänenname des Windows-Benutzers abfragen

.Beschreibung
...

Es kann sein, dass die Domäne nicht abgefragt werden kann und daher ein Laufzeitfehler auftritt. Dies, wenn der Benutzer nicht an einem Netzwerk angemeldet ist oder keine Domäne definiert wurde.

Die UserDomain-Eigenschaft ist schreibgeschützt und kann somit nicht geändert werden.

.VBA-Code
Public Sub GetDomainName()
  MsgBox "Benutzer-Domäne: " & CreateObject("WScript.Network").UserDomain
End Sub

Verwandte Codebeispiele

Computername abfragen

Login-Name des angemeldeten Benutzers abfragen

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Ziel-Betriebssystem einer ausführbaren Datei abfragen

.Beschreibung
Jede kompilierte, ausführbare Datei besitzt ein so genanntes Ziel-Betriebssystem, auf dem sie ausgeführt werden kann. Dadurch wird primär verhindert, dass beispielsweise ein Windows-Programm unter DOS gestartet werden kann. Ausführbare Dateien sind insbesondere exe-, dll- und scr-Dateien. Aber auch andere kompilierte Dateien können diese Information enthalten (z.B. olb-Dateien).

Versionsinformationen der exe/dll-Datei abfragen

.VBA-Code
Public Sub GetDestinationSystem()

End Sub

Verwandte Codebeispiele

Versionsinformationen einer ausführbaren Datei abfragen

To Top


Versteckte Mitteilung in einer Arbeitsmappe speichern

.Beschreibung
Anhand der Dokument-Eigenschaft Format lässt sich ein beliebiger Text in einer Arbeitsmappen-Dokumentdatei unterbringen. Format wird gewöhnlich nur von Microsoft PowerPoint benutzt. Es enthält die Informationen, welches Präsentationsformat eine PowerPoint-Datei verwendet (z.B. "Bildschirmpräsentation" oder "On-Screen Show").

Die Dokument-Eigenschaft wird in der Exceldatei gespeichert und steht nach erneutem Öffnen der Arbeitsmappe wieder zur Verfügung.

Die Dokument-Eigenschaft Format ist innerhalb von Microsoft Excel verfügbar (via BuiltinDocumentProperties) und auch ausserhalb von Microsoft Excel (Dokument-Eigenschaft PresentationFormat der OLE Document Properties Library DSOFile.dll). Bei einer geschlossenen Dokumentdatei ist jedoch nur das Lesen des Eigenschaftswertes möglich. Verändert werden kann er nicht.

.VBA-Code #1
Public Sub AddHiddenMessage()
  ActiveWorkbook.BuiltinDocumentProperties("Format").Value = "Versteckte Mitteilung"

End Sub

.VBA-Code #2
Public Sub ShowHiddenMessage()
  MsgBox ActiveWorkbook.BuiltinDocumentProperties("Format").Value

End Sub

.VBA-Code #3
Public Sub RemoveHiddenMessage()
  ActiveWorkbook.BuiltinDocumentProperties("Format").Value = ""

End Sub

Verwandte Codebeispiele

Dokument-Eigenschaft einer Arbeitsmappe abfragen

Dokument-Eigenschaft einer Datei abfragen

 

Weitere Informationen

VBA-Spezialthema: OLE Document Properties (DSOFile)

To Top


Dokument-Eigenschaft einer Arbeitsmappe abfragen

.Beschreibung
Jede Dokument-Datei - somit auch eine Excel-Arbeitsmappendatei - besitzt verschiedene Dokument-Eigenschaften.

...

Gross-/Kleinschreibung spielt keine Rolle.

Abfrage einer nicht vorhandenen Eigenschaft führt zu Laufzeitfehler 5 "Unzulässiger Prozeduraufruf oder ungültiges Argument".

Mit diesem Beispiel werden die Stichwörter der aktiven Arbeitsmappe ausgegeben.

.VBA-Code
Public Sub GetWorkbookDocumentProperty()
  MsgBox ActiveWorkbook.BuiltinDocumentProperties("Keywords").Value
End Sub

Verwandte Codebeispiele

Dokument-Eigenschaft einer Datei abfragen

 

Weitere Informationen

Excel-Objektmodell: Eigenschaften des Workbook-Objektes

To Top


Dokument-Eigenschaft einer Datei abfragen

.Beschreibung
Auch die Eigenschaften einer Dokument-Datei, welche keine Microsoft Excel-Arbeitsmappe ist, können abgefragt werden. Allerdings muss man dazu eine spezielle Bibliothek namens "OLE Document Properties Reader" (DSOFile) verwenden.

Die angesprochene Datei muss geschlossen sein.

Mit diesem Beispiel werden die Stichwörter der angegebenen Datei ausgegeben.

.VBA-Code
Public Sub GetFileDocumentProperty()
  MsgBox CreateObject("DSOleFile.PropertyReader").GetDocumentProperties("C:\Daten\EineMappe.xls").Keywords
End Sub

Verwandte Codebeispiele

Dokument-Eigenschaft einer Arbeitsmappe abfragen

 

Weitere Informationen

VBA-Spezialthema: OLE Document Properties (DSOFile)

To Top


Benutzerdefinierte Dokument-Eigenschaft einer Arbeitsmappe abfragen

.Beschreibung
...

Gross-/Kleinschreibung spielt keine Rolle.

Abfrage einer nicht vorhandenen Eigenschaft führt zu Laufzeitfehler 5 "Unzulässiger Prozeduraufruf oder ungültiges Argument".

Mit diesem Beispiel wird die benutzerdefinierte Eigenschaft "Ablage" der aktiven Arbeitsmappe abgefragt.

.VBA-Code
Public Sub GetWorkbookCustomDocumentProperty()
  MsgBox ActiveWorkbook.CustomDocumentProperties("Ablage").Value
End Sub

Verwandte Codebeispiele

Dokument-Eigenschaft einer Datei abfragen

 

Weitere Informationen

Excel-Objektmodell: Eigenschaften des Workbook-Objektes

To Top


Benutzerdefinierte Dokument-Eigenschaft einer Datei abfragen

.Beschreibung
...

Mit diesem Beispiel wird die benutzerdefinierte Eigenschaft "Ablage" der angegebenen Datei abgefragt.

.VBA-Code
Public Sub GetFileCustomDocumentProperty()
  MsgBox CreateObject("DSOleFile.PropertyReader").GetDocumentProperties("C:\Daten\EineMappe.xls").CustomProperties("Ablage").Value
End Sub

Verwandte Codebeispiele

Dokument-Eigenschaft einer Datei abfragen

 

Weitere Informationen

VBA-Spezialthema: OLE Document Properties (DSOFile)

To Top


Pfad der Speicherauslagerungsdatei von Windows ermitteln

.Beschreibung
Mit diesem Programmcode erhalten Sie den vollständigen Pfad der Speicherauslagerungsdatei von Windows. Bei mehreren Auslagerungsdateien wird nur der Pfad der ersten Datei ausgegeben.

.VBA-Code
Public Sub GetPageFilePath()
  Dim avarValue As Variant
  avarValue = CreateObject("WScript.Shell").RegRead _

     ("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Memory Management\PagingFiles")
  MsgBox "Speicherauslagerungsdatei: " & Left$(avarValue(0), InStr(LCase$(avarValue(0)), ".sys") + 3)
End Sub

Verwandte Codebeispiele

Grösse der Speicherauslagerungsdatei von Windows ermitteln

Anfangs- und Maximalgrössen der Speicherauslagerungsdateien von Windows ermitteln

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Anfangs- und Maximalgrössen der Speicherauslagerungsdateien von Windows ermitteln

.Beschreibung
...

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Memory Management\PagingFiles

Binärwert

Die Informationen Dateipfad, Anfangsgrösse und Maximalgrösse sind durch ein Leerzeichen getrennt.

Eine Speicherauslagerungsdatei: Dateipfad, Leerzeichen, Anfangsgrösse, Leerzeichen, Maximalgrösse, Nullvalue, Nullvalue

Zwei Speicherauslagerungsdateien: Dateipfad, Leerzeichen, Anfangsgrösse, Leerzeichen, Maximalgrösse, Nullvalue, Dateipfad, Leerzeichen, Anfangsgrösse, Leerzeichen, Maximalgrösse, Nullvalue, Nullvalue

.VBA-Code
Public Sub GetSizesOfPageFiles()
  Dim avarValue As Variant
  Dim intCounter As Integer
  Dim strMsg As String
  avarValue = CreateObject("WScript.Shell").RegRead _
     ("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Memory Management\PagingFiles")
  For intCounter = 0 To UBound(avarValue)
    strMsg = strMsg & "Speicherauslagerungsdatei " & CStr(intCounter + 1) & " von " & CStr(UBound(avarValue) + 1)
    strMsg = strMsg & vbCrLf & "Dateipfad Anfangsgrösse Maximalgrösse: " & avarValue(intCounter)
    If intCounter < UBound(avarValue) Then
      strMsg = strMsg & vbCrLf & vbCrLf
    End If
  Next intCounter
  MsgBox strMsg, vbInformation
End Sub

Verwandte Codebeispiele

Grösse der Speicherauslagerungsdatei von Windows ermitteln

Pfad der Speicherauslagerungsdatei von Windows ermitteln

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Zugriffsmodus einer schreibgeschützt geöffneten Arbeitsmappe auf Lese-/Schreibzugriff ändern

.Beschreibung
...

Wurde eine Arbeitsmappe ursprünglich schreibgeschützt geöffnet, kann man den Zugriffsmodus (auch Dateistatus genannt) nachträglich auf Lese-/Schreibzugriff umstellen, ohne dass die Arbeitsmappe geschlossen bzw. neu geöffnet werden muss.

Zum Wechseln des Zugriffsmodus wird die ChangeFileAccess-Methode des Workbook-Objektes verwendet. Zum Umstellen auf den Lese-/Schreibzugriff wird die Konstante xlReadWrite übergeben. Es wird empfohlen, vor dem Umstellen zuerst zu prüfen, ob die Arbeitsmappe tatsächlich schreibgeschützt geöffnet ist (siehe Codebeispiel #2).

Der Lese-/Schreibzugriffsmodus kann jedoch nicht in jedem Fall aktiviert werden.

- Funktioniert: Datei mit Attribut "Schreibgeschützt" -> Mappe öffnen -> Attribut entfernen -> auf Lese-/Schreibzugriff ändern

- Funktioniert: Dateiberechtigung "Schreiben" fehlt -> Mappe öffnen -> Dateiberechtigung hinzufügen -> auf Lese-/Schreibzugriff ändern

Wenn die xls-Datei der Arbeitsmappe das Datei-Attribut "Schreibgeschützt" besitzt oder der Benutzer die Dateiberechtigung "Schreiben" nicht besitzt, erscheint das "Dateireservierung"-Dialogfenster mit dem Hinweis "<Datei> wird bearbeitet von einem anderen Benutzer [...]" und den drei Schaltflächen "Schreibgeschützt", "Benachrichtigen" und "Abbrechen". Das Erscheinen dieses Dialoges kann nicht mit "Application.DisplayAlerts = False" verhindert werden (siehe Codebeispiel #3).

Dialogfenster "Dateizugriff ändern" mit dem Text "Sie haben <Datei> geändert. Ein anderer Benutzer hat auch Veränderungen vorgenommen. Was möchten Sie tun?".

- "Änderungen ignorieren und letzte Version bearbeiten": Die Datei wird neu geladen, wodurch die von Ihnen vorgenommenen Änderungen verworfen werden.

- "Änderungen speichern und mit der letzten Version vergleichen": Der Speichern unter-Dialog erscheint, damit die Mappe unter einem anderen Namen gespeichert werden kann. Nach dem Speichern wird die ursprüngliche Arbeitsmappe geöffnet, welche ja die Änderungen des anderen Benutzers enthält. Die Fenster beider nun geöffneten Mappen werden nebeneinander angezeigt.

.VBA-Code #1
Public Sub SetFileAccessToReadWrite1()
  ActiveWorkbook.ChangeFileAccess xlReadWrite

End Sub

.VBA-Code #2
Public Sub SetFileAccessToReadWrite2()
  If ActiveWorkbook.ReadOnly = True Then

    ActiveWorkbook.ChangeFileAccess xlReadWrite
  End If
End Sub

.VBA-Code #3
Public Sub SetFileAccessToReadWrite3()
  Application.DisplayAlerts = False    '<- Besitzt keine Wirkung!
  ActiveWorkbook.ChangeFileAccess xlReadWrite
  Application.DisplayAlerts = True

End Sub

Verwandte Codebeispiele

Zugriffsmodus einer geöffneten Arbeitsmappe auf schreibgeschützt ändern

Zugriffsmodus einer geöffneten Arbeitsmappe auf schreibgeschützt ändern ohne "Änderungen speichern?"-Rückfrage

 

Weitere Informationen

Excel-Objektmodell: Methoden des Workbook-Objektes

To Top


Zugriffsmodus einer geöffneten Arbeitsmappe auf schreibgeschützt ändern

.Beschreibung
Bei Bedarf kann der Zugriffsmodus (auch Dateistatus genannt) einer geöffneten Arbeitsmappe nachträglich auf "Schreibgeschützt" geändert werden, ohne dass die Arbeitsmappe geschlossen bzw. neu geöffnet werden muss.

Der Zugriffsmodus wird geändert, indem man die ChangeFileAccess-Methode mit der gewünschten Zugriffsart aufruft. Zum Wechseln auf den schreibgeschützten Zugriffsmodus wäre dies die Konstante xlReadOnly. Wenn die Arbeitsmappe keine nicht-gespeicherten Änderungen enthält, wird sofort auf schreibgeschützt umgestellt. Wird der Zugriffsmodus auf schreibgeschützt umgestellt und es befinden sich nicht-gespeicherte Änderungen in der Arbeitsmappe, so erscheint die Rückfragemeldung "Änderungen vor dem Wechseln des Dateistatus speichern?". Diese Aufforderung muss vom Benutzer mit 'Ja' oder 'Nein' beantwortet werden.

.VBA-Code
Public Sub SetFileAccessToReadOnly()
  ActiveWorkbook.ChangeFileAccess xlReadOnly

End Sub

Tipp! Tipp!
Die "Änderungen speichern?"-Rückfrage lässt sich unterdrücken. Wie das geht, erfahren Sie unter "Zugriffsmodus einer geöffneten Arbeitsmappe auf schreibgeschützt ändern ohne "Änderungen speichern?"-Rückfrage".

Verwandte Codebeispiele

Zugriffsmodus einer geöffneten Arbeitsmappe auf schreibgeschützt ändern ohne "Änderungen speichern?"-Rückfrage

Zugriffsmodus einer schreibgeschützt geöffneten Arbeitsmappe auf Lese-/Schreibzugriff ändern

 

Weitere Informationen

Excel-Objektmodell: Methoden des Workbook-Objektes

To Top


Zugriffsmodus einer geöffneten Arbeitsmappe auf schreibgeschützt ändern ohne "Änderungen speichern?"-Rückfrage

.Beschreibung
Bei Bedarf kann der Zugriffsmodus (auch Dateistatus genannt) einer geöffneten Arbeitsmappe nachträglich auf "Schreibgeschützt" geändert werden, ohne dass die Arbeitsmappe geschlossen bzw. neu geöffnet werden muss.

Wird der Zugriffsmodus auf schreibgeschützt umgestellt und es befinden sich nicht-gespeicherte Änderungen in der Arbeitsmappe, so erscheint die Rückfragemeldung "Änderungen vor dem Wechseln des Dateistatus speichern?", die mit 'Ja' oder 'Nein' beantwortet werden kann. Diese Meldung kann unterdrückt werden, wobei es zwei Möglichkeiten gibt: Entweder wird die Mappe automatisch gespeichert oder die Mappe wird nicht gespeichert.

» Codebeispiel #1: Speichert die Arbeitsmappe automatisch.

» Codebeispiel #2: Speichert die Arbeitsmappe nicht. Nach dem Wechseln des Zugriffsmodus wird die Arbeitsmappe als Mappe ohne Änderungen behandelt, da die Saved-Eigenschaft auf True gestellt wurde.

» Codebeispiel #3: Speichert die Arbeitsmappe nicht und setzt nach dem Wechseln des Zugriffsmodus die Saved-Eigenschaft zurück auf False.

» Codebeispiel #4: Speichert die Arbeitsmappe nicht und setzt nach dem Wechseln des Zugriffsmodus die Saved-Eigenschaft zurück auf ihren ursprünglichen Wert.

.VBA-Code #1
Public Sub SetFileAccessToReadOnly1()
  Application.DisplayAlerts = False

  ActiveWorkbook.ChangeFileAccess xlReadOnly
  Application.DisplayAlerts = True
End Sub

.VBA-Code #2
Public Sub SetFileAccessToReadOnly2()
  ActiveWorkbook.Saved = True

  ActiveWorkbook.ChangeFileAccess xlReadOnly
End Sub

.VBA-Code #3
Public Sub SetFileAccessToReadOnly3()
  If ActiveWorkbook.Saved = False Then
    ActiveWorkbook.Saved = True
    ActiveWorkbook.ChangeFileAccess xlReadOnly
    ActiveWorkbook.Saved = False
  Else
    ActiveWorkbook.ChangeFileAccess xlReadOnly
  End If
End Sub

.VBA-Code #4
Public Sub SetFileAccessToReadOnly4()
  Dim bolSaved As Boolean
  bolSaved = ActiveWorkbook.Saved
  ActiveWorkbook.Saved = True
  ActiveWorkbook.ChangeFileAccess xlReadOnly
  ActiveWorkbook.Saved = bolSaved
End Sub

Verwandte Codebeispiele

Zugriffsmodus einer geöffneten Arbeitsmappe auf schreibgeschützt ändern

Zugriffsmodus einer schreibgeschützt geöffneten Arbeitsmappe auf Lese-/Schreibzugriff ändern

 

Weitere Informationen

Excel-Objektmodell: Methoden des Workbook-Objektes

To Top


Arbeitsmappe als Internet-Startseite festlegen

.Beschreibung
Hier wird gezeigt, wie man in Microsoft Excel die aktive Arbeitsmappe als Internet-Startseite festlegen kann.

» Codebeispiel #1: Legt die aktive Arbeitsmappe als Internet-Startseite fest.

» Codebeispiel #2: Legt wie das erste Codebeispiel die aktive Arbeitsmappe als Internet-Startseite fest. Hier wird jedoch zuerst überprüft, ob es überhaupt eine aktive Arbeitsmappe gibt. Zudem wird kontrolliert, ob die aktive Mappe schon einmal gespeichert wurde. Eine noch nie gespeicherte Mappe kann nicht als Internet-Startseite verwendet werden, da sie noch keine xls-Datei besitzt.

.VBA-Code #1
Public Sub SetWebStartPage1()
  SendKeys "{enter}"
  Application.CommandBars.FindControl(Id:=2057).Execute
End Sub

.VBA-Code #2
Public Sub SetWebStartPage2()
  On Error Resume Next
  If ActiveWorkbook.Name = "" Then
    If Err.Number = 91 Then
      MsgBox "Es gibt keine aktive Arbeitsmappe.", vbInformation
      Exit Sub
    End If
  ElseIf ActiveWorkbook.FullName = ActiveWorkbook.Name Then
    MsgBox "Die aktive Arbeitsmappe wurde noch nie gespeichert.", vbInformation
    Exit Sub
  End If
  On Error GoTo 0
  SendKeys "{enter}"
  Application.CommandBars.FindControl(Id:=2057).Execute
End Sub

Verwandte Codebeispiele

Arbeitsmappe als Internet-Suchseite festlegen

Startseite des Internet Explorers abfragen/ändern

To Top


Arbeitsmappe als Internet-Suchseite festlegen

.Beschreibung
...

.VBA-Code #1
Public Sub SetWebSearchPage1()
  SendKeys "{enter}"
  Application.CommandBars.FindControl(Id:=2058).Execute
End Sub

.VBA-Code #2
Public Sub SetWebSearchPage2()
  On Error Resume Next
  If ActiveWorkbook.Name = "" Then
    If Err.Number = 91 Then
      MsgBox "Es gibt keine aktive Arbeitsmappe.", vbInformation
      Exit Sub
    End If
  ElseIf ActiveWorkbook.FullName = ActiveWorkbook.Name Then
    MsgBox "Die aktive Arbeitsmappe wurde noch nie gespeichert.", vbInformation
    Exit Sub
  End If
  On Error GoTo 0
  SendKeys "{enter}"
  Application.CommandBars.FindControl(Id:=2058).Execute
End Sub

Verwandte Codebeispiele

Arbeitsmappe als Internet-Startseite festlegen

Startseite des Internet Explorers abfragen/ändern

To Top


Startseite des Internet Explorers abfragen/ändern

.Beschreibung
Die Startseite des Internet Explorers ist in der Windows Registry abgelegt. Der zum Abfragen/Ändern benötigte Schlüssel lautet "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start Page".

» Codebeispiel #1: Hier wird die Adresse der Startseite abgefragt und ausgegeben.

» Codebeispiel #2: Hier wird die Startseite auf die Webadresse "www.xlam.ch" geändert.

» Codebeispiel #3: Hier wird die Startseite auf die Datei "C:\xlam\index.htm" geändert.

.VBA-Code #1
Public Sub GetIEStartPage()
  MsgBox CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start Page")
End Sub

.VBA-Code #2
Public Sub SetIEStartPage1()
  CreateObject("WScript.Shell").RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start Page", "http://www.xlam.ch")
End Sub

.VBA-Code #3
Public Sub SetIEStartPage2()
  CreateObject("WScript.Shell").RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start Page", "file:///C:/xlam/index.htm")
End Sub

Verwandte Codebeispiele

Arbeitsmappe als Internet-Startseite festlegen

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Anzahl Tage des Verlaufes von besuchten Internet-Seiten abfragen/ändern

.Beschreibung
...

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Url History\DaysToKeep

Enthält einen DWORD-Wert.

Der Registry-Eintrag wird am einfachsten mittels RegRead des Shell-Objektes eingelesen, beziehungsweise mittels RegWrite geschrieben.

» Bei Codebeispiel #1 wird die Anzahl Tage aus der Windows Registry gelesen und angezeigt.

» Das Codebeispiel #2 dient zum Ändern des Registry-Eintrages. Im Beispiel wird die Anzahl Tage auf 30 gesetzt. Mit dem Argument "REG_DWORD" wird festgelegt, dass der Wert als DWORD-Wert geschrieben werden soll.

 

.VBA-Code #1
Public Sub GetNumberOfHistoryDays()
  MsgBox "Anzahl Tage: " & CreateObject("WScript.Shell").RegRead _
     ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Url History\DaysToKeep")
End Sub

.VBA-Code #2
Public Sub SetNumberOfHistoryDays()
  CreateObject("WScript.Shell").RegWrite _

     "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Url History\DaysToKeep", 30, "REG_DWORD"
End Sub

Verwandte Codebeispiele

Verlauf der besuchten Webseiten leeren

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Verlauf der besuchten Webseiten leeren

.Beschreibung
...

.VBA-Code
Public Sub ClearVisitedHistory()

End Sub

Verwandte Codebeispiele

Anzahl Tage des Verlaufes von besuchten Internet-Seiten abfragen/ändern

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Zellbereich als Grafik in ein Arbeitsblatt einfügen

.Beschreibung
...

.VBA-Code
Public Sub InsertRangeAsPicture()

End Sub

Verwandte Codebeispiele

Zellbereich als verknüpfte Grafik in ein Arbeitsblatt einfügen

Zellbereich als Bilddatei im GIF- oder JPEG-Datei exportieren

Arbeitsblatt als Bilddatei im GIF- oder JPEG-Format speichern

To Top


Zellbereich als verknüpfte Grafik in ein Arbeitsblatt einfügen

.Beschreibung
...

.VBA-Code
Public Sub InsertRangeAsLinkedPicture()

End Sub

Verwandte Codebeispiele

Zellbereich als Grafik in ein Arbeitsblatt einfügen

Zellbereich als Bilddatei im GIF- oder JPEG-Datei exportieren

Arbeitsblatt als Bilddatei im GIF- oder JPEG-Format speichern

To Top


Druckereigenschaften-Dialog anzeigen

.Beschreibung
Das Fenster mit den Eigenschaften des aktiven Druckers kann in Microsoft Excel via den "Drucken"-Dialog geöffnet werden, und zwar mit der "Eigenschaften"-Schaltfläche. In einem VBA-Programm muss man nur das Klicken dieser Schaltfläche simulieren, indem man die SendKeys-Anweisung einsetzt. Da die Schaltfläche die Tastaturabkürzung Alt+E besitzt, wird die Tastenfolge "%e" gesendet ('%' ist die Alt-Taste).

.VBA-Code
Public Sub ShowPrinterPropertiesDialog()
  SendKeys "%e"
  Application.Dialogs(xlDialogPrint).Show
End Sub

.Hinweis
Es ist möglich, dass der obige VBA-Code in einer anderen als der deutschen Version von Microsoft Excel nicht korrekt funktioniert. Wenn nämlich die "Eigenschaften"-Schaltfläche des Dialoges "Drucken" eine andere Tastaturabkürzung als Alt+E besitzt, muss die SendKeys-Anweisung entsprechend angepasst werden.

Verwandte Codebeispiele

Land der landesspezifischen Version von Microsoft Excel abfragen

Systemsteuerung-Ordner "Drucker" anzeigen

 

Weitere Informationen

Excel-Objektmodell: Eigenschaften des Application-Objektes

To Top


Prüfen, ob ein Port (Anschluss) vorhanden ist

.Beschreibung
Dieser Programmcode überprüft, ob ein bestimmter Port existiert.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports

.VBA-Code
Public Sub CheckPort()

End Sub

Verwandte Codebeispiele

Vorhandene Ports (Anschlüsse) auflisten

To Top


Vorhandene Ports (Anschlüsse) auflisten

.Beschreibung
...

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports

.VBA-Code
Public Sub ListPorts()

End Sub

Verwandte Codebeispiele

Prüfen, ob ein Port (Anschluss) vorhanden ist

To Top


Standard-Drucker von Windows festlegen

.Beschreibung
...

Es wird nur der Name des zu verwendenden Druckers angegeben. Wenn man in Microsoft Excel (und auch in Microsoft Word) den aktuellen Drucker festlegen möchte, muss man bei ActivePrinter den Druckernamen mit zusätzlicher Angabe des benutzten Druckerports angeben.

Der Laufzeitfehler -2147352567 "Es ist kein Drucker mit dem Namen <x> vorhanden" tritt auf, wenn der angegebene Drucker nicht existiert.

Im Beispiel wird exemplarisch ein Drucker namens "HP LaserJet 4M Plus" verwendet.

Bitte beachten Sie, dass durch das Setzen des Standard-Druckers automatisch der aktive Drucker von Microsoft Excel geändert wird. Und zwar auch dann, wenn der obige VBA-Code nicht in einem VBA-Projekt von Microsoft Excel sondern in einem anderen Office-Programm wie beispielsweise Microsoft Word oder als Visual Basic-Programm ausgeführt wird. Der aktive Drucker von Microsoft Word dagegen bleibt unverändert. Auch der aktive Drucker von Microsoft PowerPoint wird nicht umgestellt. Der aktive Drucker kann durch Abfragen von "Application.ActivePrinter" herausgefunden werden.

.VBA-Code
Public Sub SetDefaultPrinter()
  On Error Resume Next
  CreateObject("WScript.Network").SetDefaultPrinter "HP LaserJet 4M Plus"
  If Err.Number = -2147352567 Then
    MsgBox "Der Standard-Drucker konnte nicht festgelegt werden!" & vbCrLf & vbCrLf & Err.Description, vbExclamation
  End If
End Sub

.Hinweis
Bitte beachten Sie, dass es zu schwerwiegenden Problemen kommen kann, wenn Sie beispielsweise bei SetDefaultPrinter einen Drucker angeben, auf den nicht über den Spooler sondern direkt gedruckt wird (kann im Eigenschaften-Dialog des Druckers eingestellt werden) und sich gerade ein Druckauftrag in Bearbeitung befindet. In einem konkreten Fall stürzte die druckende Anwendung mit einem Anwendungsfehler/Zugriffsverletzung (Dr. Watson) ab.

Verwandte Codebeispiele

Aktuell verwendeter Drucker abfragen

Aktuell verwendeter Drucker wechseln

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Netzwerk-Drucker hinzufügen/entfernen

.Beschreibung
...

Funktioniert nur mit Netzwerk-Druckern.

WSH, AddWindowsPrinterConnection

.VBA-Code #1
Public Sub AddPrinterConnection()
  Dim objWSHNetwork As Object
  Set objWSHNetwork = CreateObject("WScript.Network")
  objWSHNetwork.AddWindowsPrinterConnection "\\PrintServer\DefaultPrinter"
  Set objWSHNetwork = Nothing
End Sub

.VBA-Code #2
Public Sub RemovePrinterConnection()
  Dim objWSHNetwork As Object
  Set objWSHNetwork = CreateObject("WScript.Network")
  objWSHNetwork.RemovePrinterConnection "\\PrintServer\DefaultPrinter"
  Set objWSHNetwork = Nothing
End Sub

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Anzahl Druckaufträge in der Warteschlange eines Druckers ermitteln

.Beschreibung
...

In diesem Codebeispiel wird vorgestellt, wie man die Anzahl Druckaufträge (Print Jobs) erhält, die sich gerade in der Warteschlange des Standard-Druckers befinden.

.VBA-Code
'Deklarationsbereich
Private Const CCHDEVICENAME = 32
Private Const CCHFORMNAME = 32
Private Type DEVMODE
  dmDeviceName As String * CCHDEVICENAME
  dmSpecVersion As Integer
  dmDriverVersion As Integer
  dmSize As Integer
  dmDriverExtra As Integer
  dmFields As Long
  dmOrientation As Integer
  dmPaperSize As Integer
  dmPaperLength As Integer
  dmPaperWidth As Integer
  dmScale As Integer
  dmCopies As Integer
  dmDefaultSource As Integer
  dmPrintQuality As Integer
  dmColor As Integer
  dmDuplex As Integer
  dmYResolution As Integer
  dmTTOption As Integer
  dmCollate As Integer
  dmFormName As String * CCHFORMNAME
  dmUnusedPadding As Integer
  dmBitsPerPel As Integer
  dmPelsWidth As Long
  dmPelsHeight As Long
  dmDisplayFlags As Long
  dmDisplayFrequency As Long
End Type

Private Type PRINTER_DEFAULTS
  pDatatype As String
  pDevMode As DEVMODE
  DesiredAccess As Long
End Type

Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal _
   pPrinterName As String, phPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA" (ByVal _

   hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal _
   Level As Long, pJob As Any, ByVal cdBuf As Long, pcbNeeded As Long, _
   pcReturned As Long) As Long

'Codemodul
Public Sub GetNumberOfPrintJobs()
  Dim byteJobsButter() As Byte
  Dim hPrinter As Long
  Dim lNeeded As Long
  Dim lReturned As Long
  Dim lJobCount As Long
  Dim pDef As PRINTER_DEFAULTS

  '''Bei Bedarf anderer Standard-Drucker festlegen, da immer dessen Warteschlange überprüft wird.
  '''Dazu diese Codezeile verwenden:
  'CreateObject("WScript.Network").SetDefaultPrinter "HP LaserJet 4M Plus"
  'OpenPrinter Printer.DeviceName, hPrinter, pDef
  OpenPrinter "HP LaserJet 4M Plus", hPrinter, pDef

  EnumJobs hPrinter, 0, 99, 1, ByVal 0&, 0, lNeeded, lReturned
  If lNeeded > 0 Then
    ReDim byteJobsBuffer(lNeeded - 1) As Byte
    EnumJobs hPrinter, 0, 99, 1, byteJobsBuffer(0), lNeeded, lNeeded, lReturned
    If lReturned > 0 Then
      lJobCount = lReturned
    Else
      lJobCount = 0
    End If
  Else
    lJobCount = 0
  End If
  ClosePrinter hPrinter
  MsgBox "Anzahl Druckaufträge in der Warteschlange: " & CStr$(lJobCount), vbInformation
End Sub

.Hinweis
Bitte beachten Sie, dass immer die Warteschlange des Standard-Druckers abgefragt wird. Wenn Sie eine andere Warteschlange ansprechen möchten, können Sie behelfsmässig zuerst den entsprechenden Drucker als Standard-Drucker festlegen (siehe Kommentar im obigen Programmcode). Der Drucker kann auch dann umgestellt werden, wenn sich bereits Druckaufträge in der Warteschlange befinden. Diese Lösung ist daher nur behelfsmässig, weil dadurch eben der Standard-Drucker von Windows geändert wird. Zudem müssen Sie den genauen Namen des abzufragenden Druckers kennen, damit Sie ihn bei SetDefaultPrinter (siehe Programmcode) angeben können.

Verwandte Codebeispiele

Standard-Drucker von Windows festlegen

Eingerichtete Drucker auflisten (inkl. Angabe des Druckerports)

Eingerichtete Drucker mit zusätzlichen Informationen auflisten

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

To Top


Schriftart installieren

.Beschreibung
Das Hinzufügen einer neuen Schriftart ist in Windows äusserst einfach. Man muss lediglich die entsprechende Schriftart-Datei (gewöhnlich eine Datei mit der Endung "ttf", gelegentlich "fon" oder "pfm") in den "Fonts"-Ordner von Windows kopieren, wodurch die Schriftart automatisch installiert wird. Den Pfad dieses Ordners erhält man - unter anderem - über die SpecialFolders-Auflistung des Shell-Objektes aus der Windows Script Host Object Model-Bibliothek. Der Bezeichner des Ordners lautet "fonts". Kopiert wird die Datei mit FileCopy.

.VBA-Code
Public Sub AddFont()
  Const strFontFile As String = "C:\Daten\Schrift.ttf"
  Dim strFontsFolder As String
  strFontsFolder = CreateObject("WScript.Shell").SpecialFolders("fonts")
  FileCopy strFontFile, strFontsFolder & "\" & Dir(strFontFile)
End Sub

.Hinweis
Eine bereits vorhandene gleichnamige Datei wird automatisch ersetzt.

Verwandte Codebeispiele

Schriftart deinstallieren

Installierte Schriften auflisten

Prüfen, ob eine Schriftart installiert ist

Systemsteuerung-Ordner "Schriftarten" anzeigen

 

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Schriftart deinstallieren

.Beschreibung
...

.VBA-Code
Public Sub RemoveFont()

End Sub

Verwandte Codebeispiele

Schriftart installieren

Installierte Schriften auflisten

Prüfen, ob eine Schriftart installiert ist

Systemsteuerung-Ordner "Schriftarten" anzeigen

 

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Auto_Open-/Auto_Close-Makro ausführen

.Beschreibung
Anhand der RunAutoMacros-Methode des Workbook-Objektes können das Auto_Open- und Auto_Close-Makro explizit im VBA-Programmcode aufgerufen werden.

.VBA-Code #1
Public Sub RunAutoOpenMacro()
  ActiveWorkbook.RunAutoMacros xlAutoOpen
End Sub

.VBA-Code #2
Public Sub RunAutoCloseMacro()
  ActiveWorkbook.RunAutoMacros xlAutoClose
End Sub

.Hinweis
Häufig werden Auto-Makros im Programmcode wie bei gewöhnlichen Prozeduren üblich mitels Call aufgerufen (bzw. ohne Call). Im Falle von Auto_Open und Auto_Close ist dies gefährlich und daher nicht zu empfehlen. Ohne RunAutoMacros wird ein solches Makro nämlich wie eine gewöhnliche VBA-Prozedur aufgerufen. Das kann zu unerwarteten Laufzeitfehlern führen, die schwer zu finden sind, weil sie beim Öffnen bzw. Schliessen der Arbeitsmappe nicht auftreten.

Sie können diese Problematik selbst testen, indem Sie das nachstehende Auto_Open-Makro einmal mit "ActiveWorkbook.RunAutoMacros xlAutoOpen" und einmal mit "Call Auto_Open" aufrufen (z.B. im Direktfenster des VBA-Editors):

Sub Auto_Open()
  MsgBox Application.Caller
End Sub

Bei RunAutoMacros gibt die Meldungsbox den Namen der Arbeitsmappe und des aktiven Arbeitsblattes aus. Bei Call jedoch tritt der Laufzeitfehler 13 "Typen unverträglich" auf.

Weitere Informationen

Excel-Objektmodell: Methoden des Workbook-Objektes

To Top


Prüfen, ob der Benutzer genügend Berechtigungen für den Zugriff auf einen bestimmten Ordner besitzt

.Beschreibung
...

.VBA-Code
Public Sub CheckUserRightsForFolder()

End Sub

Private Function CheckRights(ByVal strPath As String, ParamArray Rights()) As Booleam
  Dim intCounter As Integer
  CheckRights = True
  For intCounter = 0 To UBound(Rights)
    If CBool(CheckFileAccess(strPath, Rights(intCounter)) = Rights(intCounter)) = False Then
      CheckRights = False
      Exit Function
    End If
  Next intCounter
End Sub

'*** Aufruf ***
Sub TestCall()
  Const strPath As String = "C:\Daten"
  If CheckRights(strPath, FILE_GENERIC_READ, FILE_GENERIC_WRITE, DELETE) = True Then
    MsgBox "Die angegebenen Berechtigungen sind vorhanden."
  Else
    MsgBox "Nicht alle angegebenen Berechtigungen sind vorhanden."
  End If
End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Prüfen, ob ein Laufwerk existiert

.Beschreibung
Es gibt mehrere Wege, die Existenz beziehungsweise Verfügbarkeit eines Laufwerkes herauszufinden.

» Codebeispiel #1: Dieses Beispiel überprüft die reine Existenz eines Laufwerkes (aber nicht die Verfügbarkeit). Dazu wird die DriveExists-Methode aus der FileSystemObject-Bibliothek verwendet. Der grosse Vorteil dieser Methode ist, dass sie erstens absolut zuverlässig funktioniert und zweitens keinerlei Laufzeitfehler auftreten. Bei DriveExists kann das Laufwerk auch ohne Backslash und sogar auch ohne Doppelpunkt angegeben werden.

» Codebeispiel #2: Eine andere Möglichkeit stellt die Verwendung der Windows API-Funktion GetVolumeInformation dar. Hier wird überprüft, ob ein Laufwerk existiert und verfügbar ist.

» Codebeispiel #3: Wie Codebeispiel #2, jedoch als Funktion gekapselt.

Es wird hier absichtlich keine Lösung mittels Dir-Funktion von VBA vorgestellt, weil Dir zur Existenz-Überprüfung eines Laufwerkes ungeeignet ist. Ausserdem können bei Dir verschiedene Laufzeitfehler auftreten, die zudem je nach Laufwerktyp unterschiedlich sind.

.VBA-Code #1
Sub CheckIfDriveExists1()
  Const strDrive As String = "C:\"
  If CreateObject("Scripting.FileSystemObject").DriveExists(strDrive) = True Then
    MsgBox "Das Laufwerk existiert.", vbInformation
  Else
    MsgBox "Das Laufwerk existiert nicht.", vbInformation
  End If
End Sub

.VBA-Code #2
'Deklarationsbereich
Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" _
   (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal _
   nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength _
   As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
   ByVal nFileSystemNameSize As Long) As Long

'Codemodul
Sub CheckIfDriveExists2()
  Const strDrive As String = "C:\"
  If GetVolumeInformation(strDrive, vbNullString, 0, ByVal 0&, 0, 0, vbNullString, 0) <> 0 Then
    MsgBox "Das Laufwerk ist verfügbar.", vbInformation
  Else
    MsgBox "Das Laufwerk ist nicht verfügbar.", vbInformation
  End If
End Sub

.VBA-Code #3
'Deklarationsbereich
Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" _
   (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal _
   nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength _
   As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
   ByVal nFileSystemNameSize As Long) As Long

'Codemodul
Function IsDriveAvailable(ByVal strDrive As String) As Boolean
  strDrive = Trim$(strDrive)
  If Len(strDrive) = 1 Then
    strDrive = strDrive & ":\"
  ElseIf Len(strDrive) = 2 Then
    strDrive = strDrive & "\"
  ElseIf Len(strDrive) > 3 Then
    strDrive = Left$(strDrive, 3)
  End If
  If GetVolumeInformation(strDrive, vbNullString, 0, ByVal 0&, 0, 0, vbNullString, 0) <> 0 Then
    IsDriveAvailable = True
  Else
    IsDriveAvailable = False
  End If
End Function

'*** Aufruf ***
Sub TestCall()
  If IsDriveAvailable("C:\") = True Then
    MsgBox "Das angegebene Laufwerk existiert und ist bereit.", vbInformation
  Else
    MsgBox "Das angegebene Laufwerk existiert nicht bzw. ist nicht bereit.", vbInformation
  End If
End Sub

Verwandte Codebeispiele

Prüfen, ob ein Laufwerk verfügbar und bereit ist

 

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Prüfen, ob eine Arbeitsmappe eine Vorlage ist

.Beschreibung
Anhand der FileFormat-Eigenschaft des Workbook-Objektes kann man herausfinden, ob eine Arbeitsmappe eine Mustervorlage (xlt-Datei) ist.

.VBA-Code
Public Sub CheckIfWorkbookIsTemplate()
  If ActiveWorkbook.FileFormat = xlTemplate Then
    MsgBox "Die Arbeitsmappe ist eine Vorlage.", vbInformation
  Else
    MsgBox "Die Arbeitsmappe ist keine Vorlage.", vbInformation
  End If
End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Datei kopieren mit "Ersetzen von Dateien bestätigen"-Aufforderung

.Beschreibung
...

.VBA-Code
Public Sub CopyFileWithConfirmation()

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Mehrere bestimmte Dateien kopieren mit "Ersetzen von Dateien bestätigen"-Aufforderung

.Beschreibung
...

.VBA-Code
Public Sub CopyFilesWithConfirmation()

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Mehrere bestimmte Dateien kopieren

.Beschreibung
...

.VBA-Code
Public Sub CopyFilesWithoutConfirmation()

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Datei(en) kopieren mit Fortschrittsanzeige

.Beschreibung
Mit der API-Funktion SHFileOperation von Windows kann man praktisch beliebig viele Dateien in einem Arbeitsschritt kopieren, wobei diese in verschiedenen Quellverzeichnissen liegen dürfen (und sogar auf unterschiedlichen Laufwerken). Bei Kopieren von vielen oder grossen Dateien und beim Kopieren über langsame Netzwerkverbindungen oder von/nach langsamen Laufwerken (z.B. Diskettenlaufwerk) wird die Benutzung einer Fortschrittsanzeige empfohlen, damit der Benutzer über den aktuellen Status der Datei-Operation informiert ist.

.VBA-Code
Public Sub FileCopyWithProgressBar()

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Datei(en) löschen mit Fortschrittsanzeige

.Beschreibung
...

.VBA-Code
Public Sub FileDeleteWithProgressBar()

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Datei(en) verschieben mit Fortschrittsanzeige

.Beschreibung
...

.VBA-Code
Public Sub FileMoveWithProgressBar()

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Mehrere bestimmte Ordner kopieren

.Beschreibung
...

.VBA-Code
Public Sub CopyFoldersWithoutConfirmation()

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Netzlaufwerk-Zuordnungen auflisten

.Beschreibung
...

.VBA-Code
Public Sub ListNetworkDrives()

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Default-Verzeichnis des Webseite speichern-Dialoges des Internet Explorers abfragen/ändern

.Beschreibung
...

.VBA-Code #1
Public Sub GetIEDefaultSaveDir()
  MsgBox CreateObject("WScript.Shell").RegRead _

     ("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Save Directory")
End Sub

.VBA-Code #2
Public Sub SetIEDefaultSaveDir1()
  CreateObject("WScript.Shell").RegWrite _
     "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Save Directory", "C:\Daten"
End Sub

.VBA-Code #3
Public Sub SetIEDefaultSaveDir2()
  CreateObject("WScript.Shell").RegWrite _
     "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Save Directory", _
     CreateObject("WScript.Shell").SpecialFolders("mydocuments") & "\"
End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


E-Mail-Formular öffnen

.Beschreibung
...

Mit der Shell-Funktion von VBA geht das nicht.

.VBA-Code #1
Public Sub OpenMailForm1()
  CreateObject("WScript.Shell").Run "mailto:"
End Sub

.VBA-Code #2
Public Sub OpenMailForm2()
  CreateObject("WScript.Shell").Run "mailto:philipp.von.wartburg@bluewin.ch"
End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Pfadtrennzeichen des Dateisystems abfragen

.Beschreibung
Da es Microsoft Office bzw. Microsoft Excel nicht nur für Windows sondern auch für den Macintosh gibt, muss man beim Schreiben von VBA-Programmcode darauf achten, dass man bei Pfaden das Pfadtrennzeichen des gerade eingesetzten Systems benutzt. Bei Microsoft Excel erhalten Sie das Pfadtrennzeichen über die Eigenschaft PathSeparator des Application-Objektes.

.VBA-Code #1
Public Sub GetPathSeparator1()
  MsgBox "Pfadtrennzeichen: " & Application.PathSeparator
End Sub

.VBA-Code #2
Public Sub GetPathSeparator2()
  ActiveWorkbook.SaveAs Application.DefaultFilePath & Application.PathSeparator & ActiveWorkbook.Name
End Sub

Weitere Informationen

Excel-Objektmodell: Eigenschaften des Application-Objektes

To Top


Listentrennzeichen von Microsoft Excel abfragen

.Beschreibung
...

.VBA-Code
Public Sub GetListSeparator()
  MsgBox "Listentrennzeichen: " & Application.International(xlListSeparator)
End Sub

To Top


Benutzerinitialen des Office-Benutzers abfragen/ändern

.Beschreibung
...

HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Common\UserInfo

UserInitials

Binärwert

Zwischen den Zeichen eine NullValue, am Schluss zwei NullValues

.VBA-Code #1
Public Function GetUserInitials() As String
  Dim varValue As Variant
  Dim strString As String
  Dim intCounter As Integer
  Dim intDummy As Integer
  On Error Resume Next
  varValue = CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Common\UserInfo\UserInitials")
  If Err.Number <> 0 Then
    GetUserInitials = "N/A"
    Exit Function
  End If
  Err.Clear
  intDummy = UBound(varValue)
  If Err.Number <> 0 Then
    GetUserInitials = "N/A"
    Exit Function
  End If
  For intCounter = 0 To UBound(varValue) Step 2
    strString = strString & Chr$(varValue(intCounter))
  Next intCounter
  strString = Left$(strString, Len(strString) - 1)
  GetUserInitials = strString
End Function

'*** Aufruf ***
Sub TestCall()
  If GetUserInitials() = "N/A" Then
    MsgBox "Fehler beim Abfragen der Benutzerinitialen aufgetreten."
  Else
    MsgBox "Benutzerinitialen: " & GetUserInitials()
  End If
End Sub

.VBA-Code #2
Public Sub SetUserInitials()

End Sub

Verwandte Codebeispiele

Benutzername des Office-Benutzers abfragen/ändern

Benutzername des Excel-Benutzers abfragen/ändern

Alle Codebeispiele von Themengebiet: Benutzer

 

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Anwendungsfenstertitel von Microsoft Excel abfragen/ändern/zurücksetzen

.Beschreibung
...

Die folgenden drei Beispiele zeigen, wie man den Fenstertitel von Microsoft Excel abfragen, ändern und zurücksetzen kann.

So setzt sich der Anwendungsfenstertitel von Excel zusammen:
- Anwendungsname (gewöhnlich "Microsoft Excel")
- " - "
- Dateiname
- ":x" (Doppelpunkt plus Fensternummer)
- " "
- "[Gruppe]"
- " "
- "[Schreibgeschützt]"
- " "
- "[Freigegeben]"
- " - "
- "Abgesicherter Modus"

 

.VBA-Code #1
Public Sub GetExcelWindowTitle()
  MsgBox "Anwendungsfenstertitel: " & Application.Caption
End Sub

.VBA-Code #2
Public Sub SetExcelWindowTitle()
  Application.Caption = "Mein eigener Titel"
End Sub

.VBA-Code #3
Public Sub ResetExcelWindowTitle()
  MsgBox Application.Caption = ""
End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Vorschaugrafik einer Arbeitsmappe generieren/entfernen

.Beschreibung
Microsoft Office-Dokumente können mit einer so genannten Vorschaugrafik versehen werden. In Microsoft Excel kann man die Vorschaugrafik einer geöffneten Arbeitsmappe automatisiert mittels VBA-Code erstellen beziehungsweise entfernen, allerdings nur mit einem kleinen Trick

 

.VBA-Code #1
Public Sub AddPreviewPicture()
  SendKeys "%r{+}{enter}"
  'SendKeys "%v{+}{enter}"   'Englische Excel-Version
  Application.Dialogs(xlDialogProperties).Show
End Sub

.VBA-Code #2
Public Sub RemovePreviewPicture()
  SendKeys "%r-{enter}"
  'SendKeys "%v-{enter}"   'Englische Excel-Version
  Application.Dialogs(xlDialogProperties).Show
End Sub

Verwandte Codebeispiele

Prüfen, ob eine Dokument-Datei eine Vorschaugrafik enthält

Vorschaugrafik einer Dokument-Datei anzeigen

Vorschaugrafik einer geöffneten Arbeitsmappe anzeigen

To Top


Excel beenden mit Speichern der xlb-Datei (benutzerdefinierte Symbolleisten)

.Beschreibung
...

Mit "Application.Dialogs(xlDialogAttachToolbars).Show" funktioniert es nicht.

.VBA-Code
Public Sub QuitExcelWithSavingXLB()
  AppActivate "Microsoft Excel"
  SendKeys "{esc}"
  Application.CommandBars.FindControl(Id:=797).Execute

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Excel beenden ohne Speichern der xlb-Datei (benutzerdefinierte Symbolleisten)

.Beschreibung
...

xlb-Datei vorübergehend mit Schreibgeschützt-Attribut versehen.

.VBA-Code
Public Sub QuitExcelWithoutSavingXLB()

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Starten von Microsoft Excel ohne xlb-Datei (benutzerdefinierte Symbolleisten)

.Beschreibung
...

xlb-Datei vorübergehend mit Schreibgeschützt-Attribut versehen.

.VBA-Code
Public Sub RunExcelWithoutXLB()

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Starten von Microsoft Excel mit einer anderen xlb-Datei (benutzerdefinierte Symbolleisten)

.Beschreibung
...

.VBA-Code
Public Sub RunExcelWithOtherXLB()
  Shell """C:\Programme\Microsoft Office\Office\Excel.exe"" ""C:\Daten\Symbolleisten.xlb""", vbNormalFocus
End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Benutzerdefinierte Symbolleiste(n) in einer Arbeitsmappe speichern

.Beschreibung
...

.VBA-Code #1
Public Sub AttachCommandBarToWorkbook()

End Sub

.VBA-Code #2
Public Sub AttachCommandBarsToWorkbook()
  Dim intCounter As Integer
  Dim intCustomBars As Integer
  intCustomBars = GetCustomCommandBarsCount() 
'Anzahl benutzerdefinierte Symbolleisten herausfinden
  AppActivate "Microsoft Excel"
 
'Tabulator-Taste drücken, damit das linke Listenfeld den Fokus erhält und einmal die
  'Leer-Taste drücken, damit das oberste Listenelement selektiert wird

  SendKeys "{tab} "
  For intCounter = 1 To intCustomBars
    'Pro Listenelement einen Eintrag nach unten gehen und dann die Leer-Taste drücken,

    'damit nacheinander jeder Eintrag (dazu-)selektiert wird

    SendKeys "{down} "
  Next intCounter
  'Alt+K drücken für Klick auf "Kopieren"-Schaltfläche auslösen
  'Tabluator-Taste drücken, damit die "OK"-Schaltfläche zur Default-Schaltfläche wird

  'Eingabe-Taste drücken für Klick auf "OK"-Schaltfläche auslösen
  SendKeys "%k{tab}{enter}"
  'Dialog "Symbolleiste anbinden" öffnen

  Application.Dialogs(xlDialogAttachToolbars).Show
End Sub

Public Function GetCustomCommandBarsCount() As Integer
  Dim intCustomBars As Integer
  Dim intCounter As Integer
  intCustomBars = 0
  For intCounter = 1 To Application.CommandBars.Count
    If Application.CommandBars(intCounter).BuiltIn = False Then
      intCustomBars = intCustomBars + 1
    End If
  Next intCounter
  GetCustomCommandBarsCount = intCustomBars
End Function

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Benutzerdefinierte Symbolleiste(n) aus einer Arbeitsmappe entfernen

.Beschreibung
...

.VBA-Code #1
Public Sub RemoveCustomCommandBar()

End Sub

.VBA-Code #2
Public Sub RemoveAllCustomCommandBars()

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Dateiname und Ordner der xlb-Datei (benutzerdefinierte Symbolleisten) ermitteln

.Beschreibung
Trick: Verzeichnis der AutoKorrektur-Datei abfragen.

Windows Registry-Schlüssel "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Common\AutoCorrect\Path"

Eintrag enthält z.B. D:\WINNT\Administrator.acl

.VBA-Code
Public Sub GetXLBFilePath()
  Dim strFile As String
  Dim strXLBPath As String
  strFile = CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Common\AutoCorrect\Path")
  strXLBPath = Left$(strFile, Len(strFile) - Len(Dir(strFile, vbHidden)) - 1)
  MsgBox "Verzeichnis der xlb-Datei: " & strXLBPath, vbInformation
End Sub

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

Phil's Office Secrets: Die xlb-Datei von Microsoft Excel

To Top


Andere xlb-Datei (benutzerdefinierte Symbolleisten) laden

.Beschreibung
Beim Starten von Microsoft Excel wird automatisch die xlb-Datei geladen.

...

.VBA-Code
Public Sub LoadOtherXLBFile()
  Workbooks.Open "C:\Daten\Symbolleisten.xlb"
End Sub

Verwandte Codebeispiele

Starten von Microsoft Excel mit einer anderen xlb-Datei (benutzerdefinierte Symbolleisten)

 

Weitere Informationen

VBA-Befehle und -Funktionen

Phil's Office Secrets: Die xlb-Datei von Microsoft Excel

To Top


Systemsteuerung-Ordner "Drucker" anzeigen

.Beschreibung
...

Öffnet den Windows Explorer und zeigt den Inhalt des Ordners "Drucker".

Main.cpl

Argument "Drucker"

.VBA-Code
Public Sub ShowPrinterFolder()
  Shell "rundll32.exe shell32.dll,Control_RunDLL main.cpl Drucker", vbNormalFocus

End Sub

Verwandte Codebeispiele

Systemsteuerung-Ordner "Schriftarten" anzeigen

 

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Ordner "Schriftarten" anzeigen

.Beschreibung
Der Ordner "Schriftarten" enthält alle installierten Schriftarten. Er wird über das Symbol "Schriftarten" der Windows-Systemsteuerung geöffnet. Mittels VBA-Code wird der Ordner geöffnet, indem man die Systemsteuerungsoption-Datei "main.cpl" aufrufen und als Argument den Parameter "Schriftarten" übergibt.

.VBA-Code
Public Sub ShowFontsFolder()
  Shell "rundll32.exe shell32.dll,Control_RunDLL main.cpl Schriftarten", vbNormalFocus

End Sub

Verwandte Codebeispiele

Systemsteuerung-Ordner "Drucker" anzeigen

 

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von Tastatur" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von Tastatur" wird die Systemsteuerungsoption-Datei "main.cpl" aufgerufen. Als Argument muss der Parameter "Tastatur" übergeben werden.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL main.cpl Tastatur", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von Akustische Signale" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von Akustische Signale" wird die Systemsteuerungsoption-Datei "mmsys.cpl" aufgerufen ("mmsys" steht für "Multimedia System"). Als Argument muss der Parameter "Akustische Signale" übergeben werden.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl Akustische Signale", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von Anzeige" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von Anzeige" wird die Systemsteuerungsoption-Datei "desk.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

2 zeigt die dritte Registerseite an (0=erste, 1=zweite, 2=dritte etc.)

.VBA-Code #1
Public Sub ShowSystemPropertiesDialog1()
  Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl", vbNormalFocus

End Sub

.VBA-Code #2
Public Sub ShowSystemPropertiesDialog2()
  Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von Datum/Uhrzeit" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von Datum/Uhrzeit" wird die Systemsteuerungsoption-Datei "timedate.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL timedate.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von Eingabehilfen" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von Eingabehilfen" wird die Systemsteuerungsoption-Datei "access.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL access.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von Internet" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von Internet" wird die Systemsteuerungsoption-Datei "inetcpl.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von Konsolenfenstern" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von Konsolenfenstern" wird die Systemsteuerungsoption-Datei "console.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL console.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von Ländereinstellungen" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von Ländereinstellungen" wird die Systemsteuerungsoption-Datei "intl.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL intl.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von PC-Karte (PCMCIA)" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von PC-Karte (PCMCIA)" wird die Systemsteuerungsoption-Datei "devapps.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL devapps.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von Maus" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von Maus" wird die Systemsteuerungsoption-Datei "main.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL main.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von Modem" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von Modem" wird die Systemsteuerungsoption-Datei "modem.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL modem.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von Multimedia" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von Multimedia" wird die Systemsteuerungsoption-Datei "mmsys.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Eigenschaften von Software" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Eigenschaften von Software" wird die Systemsteuerungsoption-Datei "appwiz.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Anschlüsse" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Anschlüsse" wird die Systemsteuerungsoption-Datei "ports.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL ports.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Bandgeräte" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Bandgeräte" wird die Systemsteuerungsoption-Datei "devapps.cpl" aufgerufen. Als Argument muss der Parameter "Bandgeräte" übergeben werden.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL devapps.cpl Bandgeräte", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Dienste" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Dienste" wird die Systemsteuerungsoption-Datei "srvmgr.cpl" aufgerufen. Als Argument muss der Parameter "Dienste" übergeben werden.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL srvmgr.cpl Dienste", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Geräte" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Geräte" wird die Systemsteuerungsoption-Datei "srvmgr.cpl" aufgerufen. Als Argument muss der Parameter "Geräte" übergeben werden.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL srvmgr.cpl Geräte", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Netzwerk" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Netzwerk" wird die Systemsteuerungsoption-Datei "ncpa.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL ncpa.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "ODBC Datenquellen" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "ODBC Datenquellen" wird die Systemsteuerungsoption-Datei "odbccp32.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "SCSI-Adapter" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "SCSI-Adapter" wird die Systemsteuerungsoption-Datei "devapps.cpl" aufgerufen. Als Argument muss der Parameter "SCSI-Adapter" übergeben werden.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL devapps.cpl SCSI-Adapter", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Server" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Server" wird die Systemsteuerungsoption-Datei "srvmgr.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL srvmgr.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Systemeigenschaften" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Systemeigenschaften" wird die Systemsteuerungsoption-Datei "sysdm.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "Wählparameter (Telefon)" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "Wählparameter" wird die Systemsteuerungsoption-Datei "telephon.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL telephon.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Systemsteuerung-Dialog "USV" anzeigen

.Beschreibung
Der Windows Systemsteuerung-Dialog "USV" wird die Systemsteuerungsoption-Datei "ups.cpl" aufgerufen. Ein spezifischer Parameter wird hier nicht benötigt.

.VBA-Code
Public Sub ShowSystemPropertiesDialog()
  Shell "rundll32.exe shell32.dll,Control_RunDLL ups.cpl", vbNormalFocus

End Sub

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Absoluter Dateipfad eines relativen Dateipfades ermitteln

.Beschreibung
Mit der GetAbsolutePathName-Methode des FileSystemObject-Objektes kann man den absoluten Pfad eines beliebigen relativen Pfades ermitteln.

Ein Pfad ist immer dann absolut, wenn er eine eindeutige und vollständige Referenz in Bezug auf das Stammverzeichnis des angegebenen Laufwerkes darstellt.

Als Basis dient immer das aktuelle Verzeichnis (kann mit CurDir abgefragt werden).

Wenn der angegebene Pfad bereits absolut ist, wird der gleiche Pfad zurückgegeben.

» Codebeispiel #1: Zeigt den absoluten Pfad des angegebenen relativen Pfades.

» Codebeispiel #2: Wird kein relativer Pfad angegeben (leere Zeichenfolge), so wird das aktuelle Verzeichnis ausgegeben (wie bei CurDir).

» Codebeispiel #3: Mit "\" wird das Stammverzeichnis (Root) des aktuellen Laufwerkes angezeigt.

.VBA-Code #1
Public Sub GetAbsolutePath1()
  MsgBox "Absoluter Pfad: " & CreateObject("Scripting.FileSystemObject").GetAbsolutePathName("..\EineMappe.xls")
End Sub

.VBA-Code #2
Public Sub GetAbsolutePath2()
  MsgBox "Aktuelles Verzeichnis: " & CreateObject("Scripting.FileSystemObject").GetAbsolutePathName("")
End Sub

.VBA-Code #3
Public Sub GetAbsolutePath3()
  MsgBox "Stammverzeichnis des aktuellen Laufwerkes: " & CreateObject("Scripting.FileSystemObject").GetAbsolutePathName("\")
End Sub

.Hinweis
Der bei GetAbsolutePathName verwendete Pfad muss nicht zwingend existieren.

Verwandte Codebeispiele

Relativer Dateipfad eines absoluten Dateipfades ermitteln

 

Weitere Informationen

VBA-Spezialthema: FileSystemObject (FSO)

To Top


Relativer Dateipfad eines absoluten Dateipfades ermitteln

.Beschreibung
...

Als Basis dient immer das aktuelle Verzeichnis (kann mit CurDir abgefragt werden).

.VBA-Code
Public Sub GetRelativePath()

End Sub

Verwandte Codebeispiele

Absoluter Dateipfad eines relativen Dateipfades ermitteln

To Top


Hilfedatei öffnen

.Beschreibung
Obwohl das Öffnen einer Hilfedatei (sprich das Aufrufen einer Hilfe) im Grunde genommen ein simpler Vorgang ist, existieren dafür zahlreiche - zum Teil gänzlich unterschiedliche - Wege. Es gibt folgende drei grundsätzliche Varianten:
- Die Help-Methode des Application-Objektes.
- Die Run-Methode des Shell-Objektes aus der "Windows Script Host"-Objektbibliothek.
- Die Windows API-Funktion WinHelp.

Wenn die bei der Help-Methode angegebene Datei nicht existiert, erscheint die Fehlermeldung "Die Datei <Datei> wurde nicht gefunden. Möchten Sie selbst nach ihr suchen?". Bei 'Nein' wird die Folgemeldung "Die Hilfedatei <Datei> wurde nicht gefunden. [...]" angezeigt. Das Einblenden dieser Fehlermeldungen kann nicht verhindert werden, auch nicht mit Setzen von DisplayAlerts auf False. Es wird daher empfohlen, vor dem Aufruf der Help-Methode zu überprüfen, ob die angegebene Datei tatsächlich vorhanden ist.

Die bei Help angegebene Hilfedatei darf versteckt sein, d.h. das Dateiattribut "Versteckt" besitzen.

Wenn die übergebene Kontext-ID nicht existiert, tritt die Fehlermeldung "Das Thema ist nicht vorhanden. [...]" auf.

Der Nachteil der Help-Methode ist, dass das Thema der angegebenen Kontext-ID angezeigt wird. Wird keine Kontext-ID angegeben, wird das Thema mit der ID 0 geöffnet. Wenn man die Hilfedatei dagegen mit Run öffnet, und es existiert eine so genannte Contents-Datei (eine Datei, die den gleichen Namen wie die Hilfedatei mit der Dateinamenerweiterung "cnt" besitzt; "cnt" ist die Abkürzung für "Contents"), so wird das "Hilfethemen"-Fenster der Hilfe geöffnet. Des weiteren können nur Hilfedateien geöffnet werden, die die Dateinamenerweiterung "hlp" besitzen. Das Öffnen von chm-Dateien ist mit der Help-Methode nicht möglich. Die Verwendung einer chm-Datei oder einer Datei mit einem anderen Dateiformat als eine hlp-Datei führt zur Fehlermeldung "Die Datei <Datei> ist keine Windows-Hilfedatei, oder sie ist beschädigt".

Kompilierte Hilfedateien (chm-Dateien) müssen mit der Run-Methode aus der "Windows Script Host"-Objektbibliothek geöffnet werden. Der Einsatz der VBA-Funktion Shell funktioniert hier nicht, weil Shell nur ausführbare Dateien starten kann.

» Codebeispiel #1: Öffnet die angegebene Hilfedatei. Die Datei muss die Dateinamenerweiterung "hlp" bzw. dessen Dateiformat besitzen. Bei chm-Dateien kann die Help-Methode nicht benutzt werden.

» Codebeispiel #2: Dieses Codebeispiel überprüft zuerst, ob die angegebene Hilfedatei vorhanden ist. Der Dateipfad darf sowohl absolut als auch relativ sein.

» Codebeispiel #3: Die Angabe eines relativen Pfades ist bei Help erlaubt. Wenn sich die Hilfedatei im aktuellen Verzeichnis, im Office-Verzeichnis (z.B. "C:\Programme\Microsoft Office\Office") oder im Standard Hilfe-Ordner von Windows (z.B. "C:\Windows\Help") befindet, so wird sie anstandslos geöffnet. Das aktuelle Verzeichnis kann u.a. mit der VBA-Funktion CurDir herausgefunden und mit ChDir gewechselt werden. Den vollständigen Pfad des Office-Verzeichnisses erhält man durch Abfragen von Application.Path.

» Codebeispiel #4: Öffnet die angegebene Hilfedatei, die sich im gleichen Verzeichnis wie die Arbeitsmappe befindet, die den Programmcode enthält.

» Codebeispiel #5: Öffnet eine Hilfedatei (Dateinamenerweiterung "hlp") mittels Run. Wenn eine cnt-Datei für diese Hilfe existiert, wird das "Hilfethemen"-Fenster der Hilfe geöffnet.

» Codebeispiel #6: Öffnet eine Hilfedatei (Dateinamenerweiterung "hlp") mittels Run genau wie Beispiel #5. Hier soll lediglich gezeigt werden, dass auch relative Pfade erlaubt sind. Das Beispiel würde die Datei "Hilfedatei.hlp" öffnen, welche sich im aktuellen Verzeichnis befindet (bzw. befinden muss). Das aktuelle Verzeichnis kann u.a. mit der VBA-Funktion CurDir herausgefunden und mit ChDir gesetzt werden.

» Codebeispiel #7: Öffnet eine Hilfedatei (Dateinamenerweiterung "hlp") mittels Run. Wenn der Dateipfad Leerzeichen enthält, muss er in zwei zusätzlichen Anführungszeichen geschrieben werden.

» Codebeispiel #8: Öffnet eine Hilfedatei (Dateinamenerweiterung "chm") mittels Run. Auch hier kann der Dateipfad als relativer Pfad angegeben werden. Wenn der Dateipfad Leerzeichen enthält, muss er in zwei zusätzlichen Anführungszeichen geschrieben werden.

» Codebeispiel #9: Öffnet die Hilfedatei und blendet das Thema mit der angegebenen Kontext-ID ein (im Beispiel wird die Kontext-ID 1000& verwendet).

» Codebeispiel #10: Öffnet das "Hilfethemen"-Fenster und zeigt die Registerseite "Index" zum Suchen eines Themas. Dies wird erreicht, indem man für das wCommand-Argument der API-Funktion WinHelp den Wert &H105 angibt. Bitte beachten Sie, dass die Kontext-ID zwingend mit 0& angegeben werden muss. Wird ein anderer Wert verwendet, stürzt die Anwendung sofort ab (Dr. Watson).

.VBA-Code #1
Public Sub OpenHelpFile1()
  Application.Help "C:\Daten\Hilfedatei.hlp"
End Sub

.VBA-Code #2
Public Sub OpenHelpFile2()
  Const HelpFile As String = "C:\Daten\Hilfedatei.hlp"
  Dim bolExists As Boolean
  If Mid$(HelpFile, 2, 1) = ":" Then
    'Absoluter Pfad
    If Dir(HelpFile, vbHidden) <> "" Then
      bolExists = True
    End If
  Else
    'Relativer Pfad
    If Dir(CurDir & "\" & HelpFile, vbHidden) <> "" Then
      bolExists = True
    End If
  End If
  If bolExists = True Then
    Application.Help HelpFile
  End If
End Sub

.VBA-Code #3
Public Sub OpenHelpFile3()
  Application.Help "Hilfedatei.hlp"
End Sub

.VBA-Code #4
Public Sub OpenHelpFile4()
  If Right$(ThisWorkbook.Path, 1) <> "\" Then
    Application.Help ThisWorkbook.Path & "\Hilfedatei.hlp"
  Else
    Application.Help ThisWorkbook.Path & "Hilfedatei.hlp"
  End If

  '* ODER *
  Application.Help IIf(Right$(ThisWorkbook.Path, 1) <> "\", ThisWorkbook.Path & "\Hilfedatei.hlp", ThisWorkbook.Path & "Hilfedatei.hlp")
End Sub

.VBA-Code #5
Public Sub OpenHelpFile5()
  CreateObject("WScript.Shell").Run "C:\Daten\Hilfedatei.hlp", vbNormalFocus
End Sub

.VBA-Code #6
Public Sub OpenHelpFile6()
  CreateObject("WScript.Shell").Run "Hilfedatei.hlp", vbNormalFocus
End Sub

.VBA-Code #7
Public Sub OpenHelpFile7()
  CreateObject("WScript.Shell").Run """C:\Meine Daten\Hilfedatei.hlp""", vbNormalFocus
End Sub

.VBA-Code #8
Public Sub OpenHelpFile8()
  CreateObject("WScript.Shell").Run "C:\Daten\Hilfedatei.chm", vbNormalFocus
End Sub

.VBA-Code #9
'Deklarationsbereich
Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal hwnd As Long, ByVal _
   lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As Long) As Long

Public Sub OpenHelpFile9()
  WinHelp 0&, "C:\Daten\Hilfedatei.hlp", 1, ByVal 1000&
End Sub

.VBA-Code #10
'Deklarationsbereich
Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal hwnd As Long, ByVal _
   lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As Long) As Long

Public Sub OpenHelpFile10()
  WinHelp 0&, "C:\Daten\Hilfedatei.hlp", &H105, ByVal 0&
End Sub

.Hinweis
Wenn die Datei, welche bei der Run-Methode angegeben wurde, nicht vorhanden ist, erscheint der Fehler -2147024894 (80070002) "Automatisierungsfehler: Das System kann die angegebene Datei nicht finden".

Verwandte Codebeispiele

Hilfedatei von Microsoft Excel öffnen

Hilfedatei eines VBA-Projektes öffnen

 

Weitere Informationen

VBA-Spezialthema: Windows Script Host (WSH)

Excel-Objektmodell: Methoden des Application-Objektes

To Top


Hilfedatei von Microsoft Excel öffnen

.Beschreibung
» Codebeispiel #1: Sendet den Tastenbefehl "F1" an das aktive Anwendungsfenster, wodurch das Drücken der Funktionstaste F1 simuliert wird. Zuvor wird das Anwendungsfenster von Microsoft Excel aktiviert, damit nicht irrtümlich die Hilfe des VBA-Editors geöffnet wird. Diese Lösungsvariante öffnet das "Hilfethemen"-Fenster der Hilfe.

» Codebeispiel #2: Wenn man die Help-Methode ohne Angabe einer Hilfedatei aufruft, wird automatisch die Hilfe von Microsoft Excel geöffnet. Bitte beachten Sie, dass das Thema angezeigt wird, das sich ganz am Anfang in der Hilfedatei befindet (unabhängig seiner Kontext ID). Es handelt sich dabei in den seltensten Fällen um das Thema, welches das so genannte Contents Topic ist (quasi die Startseite der Hilfe). Bei der deutschsprachigen Ausgabe von Microsoft Excel 97 ist es das Thema mit dem Titel "Listen, Dateneingabe mit Hilfe von Masken".

» Codebeispiel #3: Damit das Dialogfenster "Hilfethemen" angezeigt wird, muss man die Help-Methode explizit mit der Kontext ID 0 aufrufen. Anderenfalls wird das Thema angezeigt, welches sich ganz am Anfang in der Hilfedatei befindet (siehe Codebeispiel #2).

» Codebeispiel #4: Die Excel-Hilfe kann auch geöffnet werden, indem man der Help-Methode den Dateinamen der Hilfedatei von Microsoft Excel übergibt. Bei Microsoft Excel 97 ist dies die Datei "xlmain8.hlp". Die Angabe des gesamten Dateipfades ist hierbei nicht notwendig. Auch die Dateinamenerweiterung ".hlp" könnte weggelassen werden.

.VBA-Code #1
Public Sub OpenExcelHelp1()
  AppActivate "Microsoft Excel"
  SendKeys "{f1}"
End Sub

.VBA-Code #2
Public Sub OpenExcelHelp2()
  Application.Help
End Sub

.VBA-Code #3
Public Sub OpenExcelHelp3()
  Application.Help HelpContextID:=0
  '* ODER *
  Application.Help , 0

End Sub

.VBA-Code #4
Public Sub OpenExcelHelp4()
  Application.Help "xlmain8.hlp"
End Sub

Verwandte Codebeispiele

Hilfedatei öffnen

Hilfedatei eines VBA-Projektes öffnen

 

Weitere Informationen

Excel-Objektmodell: Methoden des Application-Objektes

To Top


Hilfedatei eines VBA-Projektes öffnen

.Beschreibung
Die nachfolgenden Codebeispiele dienen zum Öffnen der Hilfedatei eines VBA-Projektes.

» Codebeispiel #1: Via ActiveWorkbook.VBProject

» Codebeispiel #2: Via ThisWorkbook.VBProject

» Codebeispiel #3: Via Application.VBE.ActiveVBProject

.VBA-Code #1
Public Sub OpenProjectHelp1()
  Application.Help ActiveWorkbook.VBProject.HelpFile
End Sub

.VBA-Code #2
Public Sub OpenProjectHelp2()
  Application.Help ThisWorkbook.VBProject.HelpFile
End Sub

.VBA-Code #3
Public Sub OpenProjectHelp3()
  Application.Help Application.VBE.ActiveVBProject.HelpFile
End Sub

Verwandte Codebeispiele

Hilfedatei eines VBA-Projektes festlegen

Hilfedatei öffnen

Hilfedatei von Microsoft Excel öffnen

Prüfen, ob die Hilfedatei eines VBA-Projektes existiert

Hilfedatei eines Symbolleisten-Steuerelementes festlegen

To Top


Prüfen, ob die Hilfedatei eines VBA-Projektes existiert

.Beschreibung
Mit dieser Funktion kann überprüft werden, ob die Hilfedatei des VBA-Projektes der codeausführenden Arbeitsmappe vorhanden ist.

.VBA-Code
'Codemodul
Function CheckProjectHelpFile() As Boolean
  Dim strHelpFile As String
  strHelpFile = ThisWorkbook.VBProject.HelpFile
  If Mid$(strHelpFile, 2, 1) = ":" Then
    'Absoluter Pfad
    If Dir(strHelpFile, vbHidden) <> "" Then
      CheckProjectHelpFile = True
    End If
  Else
    'Relativer Pfad
    If Dir(CurDir & "\" & strHelpFile, vbHidden) <> "" Then
      CheckProjectHelpFile = True
    End If
  End If
End Function

'*** Aufruf ***
Sub TestCall()
  If CheckProjectHelpFile() = True Then
    MsgBox "Die Hilfedatei dieses VBA-Projektes existiert."
  Else
    MsgBox "Die Hilfedatei dieses VBA-Projektes existiert nicht."
  End If
End Sub

Verwandte Codebeispiele

Hilfedatei eines VBA-Projektes festlegen

Hilfedatei eines VBA-Projektes öffnen

Hilfedatei eines Symbolleisten-Steuerelementes festlegen

 

Weitere Informationen

VBA-Befehle und -Funktionen

To Top


Hilfedatei eines Symbolleisten-Steuerelementes festlegen

.Beschreibung
...

.VBA-Code
Public Sub SetCommandBarControlHelpFile()
  Application.CommandBars("Worksheet Menu Bar").FindControl(id:=30007).Controls("Bericht erstellen").HelpFile = _

     ThisWorkbook.VBProject.HelpFile
End Sub

Verwandte Codebeispiele

Hilfedatei eines VBA-Projektes festlegen

Hilfedatei eines VBA-Projektes öffnen

Prüfen, ob die Hilfedatei eines VBA-Projektes existiert

To Top


Anzahl Symbole in einer ausführbaren Datei ermitteln

.Beschreibung
Eine Programmdatei (eine ausführbare Datei) enthält gewöhnlich ein Dateisymbol. Software-Entwickler besitzen die Möglichkeit, mehrere Symbole in eine Programmdatei zu verpacken. Dieses Codebeispiel zeigt, wie man herausfinden kann, wieviele Symbole (Icons) sich in einer ausführbaren Datei befinden. Im Beispiel wird die Datei "Shell32.dll" abgefragt.

Nebst exe-Dateien können auch Dateien der Dateitypen dll, ocx, cpl und scr Symbole enthalten.

.VBA-Code
'Deklarationsbereich
Declare Function ExtractIcon32 Lib "Shell32.dll" Alias "ExtractIconA" _
   (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long

'Codemodul
Public Sub GetNumberOfIcons()
  Dim lngIconHandle As Long
  Dim intIcons As Integer
  Const strFile As String = "C:\Windows\System32\Shell32.dll"
  Do
    lngIconHandle = ExtractIcon32(0, strFile, intIcons)
    If lngIconHandle = 0 Then
      Exit Do
    End If
    intIcons = intIcons + 1
  Loop
  MsgBox "Die Datei '" & strFile & "' enthält " & intIcons & " Symbole.", vbInformation
End Sub

To Top


Laufwerk-Buchstaben auflisten

.Beschreibung
Dieses Codebeispiel erstellt eine Liste der logischen Laufwerke. Es werden alle Laufwerkbuchstaben von A bis Z aufgelistet und zu jedem Buchstabe angegeben, ob er von einem Laufwerk benutzt wird. Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.

.VBA-Code
'Deklarationsbereich
Declare Function GetLogicalDrives Lib "kernel32" () As Long

'Codemodul
Public Sub ListDriveLetters()
  Dim wksSheet As Worksheet
  Dim lngDrives As Long
  Dim intCounter As Integer
  Dim lngRow As Long
  lngDrives = GetLogicalDrives
  Set wksSheet = ActiveWorkbook.Worksheets.Add
  With wksSheet
    .Range("A1:B1").Value = Array("Laufwerk", "Vorhanden")
    .Range("A1:B1").Font.Bold = True
    For intCounter = 0 To 25
      .Cells(intCounter + 2, 1).Value = Chr$(65 + intCounter) & ":"
      If (lngDrives And 2 ^ intCounter) <> 0 Then
        .Cells(intCounter + 2, 2).Value = "Ja"
      Else
        .Cells(intCounter + 2, 2).Value = "Nein"
      End If
    Next intCounter
    .Columns("A:B").AutoFit
  End With
  Set wksSheet = Nothing
End Sub

Verwandte Codebeispiele

Benutzte Laufwerk-Buchstaben auflisten

Laufwerke mit Speicherkapazität und Auslastung auflisten

To Top


Benutzte Laufwerk-Buchstaben auflisten

.Beschreibung
Mit diesem Codebeispiel wird eine Liste der vorhandenen logischen Laufwerken erstellt. Es werden nur diejenigen Buchstaben aufgeführt, die von einem Laufwerk benutzt werden. Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.

.VBA-Code
'Deklarationsbereich
Declare Function GetLogicalDrives Lib "kernel32" () As Long

'Codemodul
Public Sub ListUsedDriveLetters()
  Dim wksSheet As Worksheet
  Dim lngDrives As Long
  Dim intCounter As Integer
  Dim lngRow As Long
  lngDrives = GetLogicalDrives
  Set wksSheet = ActiveWorkbook.Worksheets.Add
  For intCounter = 0 To 25
    If (lngDrives And 2 ^ intCounter) <> 0 Then
      lngRow = lngRow + 1
      wksSheet.Cells(lngRow, 1).Value = Chr$(65 + intCounter) & ":"
    End If
  Next intCounter
  Set wksSheet = Nothing
End Sub

Verwandte Codebeispiele

Laufwerk-Buchstaben auflisten

Laufwerke mit Speicherkapazität und Auslastung auflisten

To Top


Laufwerke mit Speicherkapazität und Auslastung auflisten

.Beschreibung
Mit diesem VBA-Programmcode wird eine Liste der vorhandenen Laufwerke erstellt und zu jedem Laufwerk die Speicherkennzahlen "Gesamter Speicher", "Freier Speicher", "Verfügbarer Speicher" und "Belegter Speicher" angegeben. Zudem wird die Auslastung aufgeführt. Die Spalte "Frei %" zeigt den freien Speicherplatz in Prozent der gesamten Speicherkapazität des Laufwerkes. Die Spalte "Belegt %" den prozentualen Anteil des beanspruchten Speichers. Die Liste wird auf einem neuen Arbeitsblatt der aktiven Arbeitsmappe erstellt.

.VBA-Code
Public Sub ListDrivesWithSpace()
  Dim objFSO As Object
  Dim objDrive As Object
  Dim strDriveType As String
  Dim wksSheet As Worksheet
  Dim intRow As Integer
  On Error Resume Next
  intRow = 1
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set wksSheet = ActiveWorkbook.Worksheets.Add
  With wksSheet
    .Range("A1:J1").Value = Array("Nr.", "Laufwerk", "Bezeichnung", "Typ", _

        "Gesamter Speicher", "Freier Speicher", "Verfügbarer Speicher", _
        "Belegter Speicher", "Frei %", "Belegt %")
    .Range("A1:J1").Font.Bold = True
    For Each objDrive In objFSO.Drives
      intRow = intRow + 1
      .Cells(intRow, 1).Value = intRow - 1
      .Cells(intRow, 2).Value = objDrive.DriveLetter & ":"
      .Cells(intRow, 3).Value = objDrive.VolumeName     'Laufzeitfehler 71 bei nicht bereitem Datenträger
      If Err.Number = 71 Then
        .Cells(intRow, 3).Value = "(Datenträger nicht bereit)"
      End If
      Select Case objDrive.DriveType
        Case 0: strDriveType = "Unbekannt"
        Case 1: strDriveType = "Austauschbar"
        Case 2: strDriveType = "Fest"
        Case 3: strDriveType = "Netzwerk"
        Case 4: strDriveType = "CD-ROM"
        Case 5: strDriveType = "RAM Disk"
        Case Else: strDriveType = "Unbekannt"
      End Select
      .Cells(intRow, 4).Value = strDriveType & " (" & objDrive.DriveType & ")"
      .Cells(intRow, 5).Value = objDrive.TotalSize
      .Cells(intRow, 5).NumberFormat = "#,##0"
      .Cells(intRow, 6).Value = objDrive.FreeSpace
      .Cells(intRow, 6).NumberFormat = "#,##0"
      .Cells(intRow, 7).Value = objDrive.AvailableSpace
      .Cells(intRow, 7).NumberFormat = "#,##0"
      .Cells(intRow, 8).Value = objDrive.TotalSize - objDrive.FreeSpace
      .Cells(intRow, 8).NumberFormat = "#,##0"
      .Cells(intRow, 9).Value = 100 / objDrive.TotalSize * objDrive.FreeSpace
      .Cells(intRow, 9).NumberFormat = "#0.00"
      .Cells(intRow, 10).Value = 100 / objDrive.TotalSize * (objDrive.TotalSize - objDrive.FreeSpace)
      .Cells(intRow, 10).NumberFormat = "#0.00"
      Err.Clear
    Next
    .Columns("A:J").AutoFit
  End With
  Set wksSheet = Nothing
  Set objFSO = Nothing
End Sub

Verwandte Codebeispiele

Laufwerk-Buchstaben auflisten

Benutzte Laufwerk-Buchstaben auflisten

 

Weitere Informationen

VBA-Spezialthema: FileSystemObject (FSO)

To Top


Autor einer Datei abfragen/ändern

.Beschreibung
Auf den Autor eines Dokumentes erhält man über die BuiltinDocumentProperties-Eigenschaft Zugriff. Als Alternative kann man auch nicht mehr gebräuchliche (und daher im Objektkatalog ausgeblendete) Eigenschaft Author des Workbook-Objektes benutzen. Diese funktioniert genau gleich. Nur das Ändern des Autors einer freigegebenen Arbeitsmappe ist nicht möglich, was mit dem Laufzeitfehler 1004 "Anwendungs- oder objektdefinierter Fehler" gemeldet wird.

Man kann den Autor auch dann ändern, wenn die Arbeitsmappe für die gemeinsame Bearbeitung freigegeben ist - aber nur via BuiltinDocumentProperties-Eigenschaft.

.VBA-Code #1
Public Sub GetDocumentAuthor1()
  MsgBox ActiveWorkbook.BuiltinDocumentProperties("Author").Value
End Sub

.VBA-Code #2
Public Sub GetDocumentAuthor2()
  MsgBox ActiveWorkbook.Author
End Sub

.VBA-Code #3
Public Sub SetDocumentAuthor1()
  ActiveWorkbook.BuiltinDocumentProperties("Author").Value = "Peter Mustermann"
End Sub

.VBA-Code #4
Public Sub SetDocumentAuthor2()
  ActiveWorkbook.Author = "Peter Mustermann"
End Sub

.VBA-Code #5
Public Sub SetDocumentAuthor3()
  ActiveWorkbook.BuiltinDocumentProperties("Author").Value = Application.UserName
End Sub

Verwandte Codebeispiele

Laufwerk-Buchstaben auflisten

To Top


Firma einer Datei abfragen/ändern

.Beschreibung
Diese beiden Codebeispiele geben die Firma einer Dokument-Datei aus beziehungsweise ändern sie.

Man kann die Firma übrigens auch dann ändern, wenn die Arbeitsmappe für die gemeinsame Bearbeitung freigegeben ist. Über die Benutzeroberfläche von Microsoft Excel ist dies nicht möglich.

.VBA-Code #1
Public Sub GetDocumentCompany()
  MsgBox ActiveWorkbook.BuiltinDocumentProperties("Company").Value
End Sub

.VBA-Code #2
Public Sub SetDocumentCompany()
  ActiveWorkbook.BuiltinDocumentProperties("Company").Value = "Musterfirma"
End Sub

Verwandte Codebeispiele

Laufwerk-Buchstaben auflisten

To Top


Titel einer Datei abfragen/ändern

.Beschreibung
Auf den Titel eines Dokumentes erhält man über die BuiltinDocumentProperties-Eigenschaft Zugriff. Als Alternative kann man auch nicht mehr gebräuchliche (und daher im Objektkatalog ausgeblendete) Eigenschaft Title des Workbook-Objektes benutzen. Diese funktioniert genau gleich. Nur das Ändern des Titels einer freigegebenen Arbeitsmappe ist nicht möglich, was mit dem Laufzeitfehler 1004 "Anwendungs- oder objektdefinierter Fehler" gemeldet wird.

Der Titel einer Microsoft Excel-Arbeitsmappe wird insbesondere in diesen beiden Situationen zweckmässig verwendet:

- Für den Namen eines Add-Ins (Titel wird im Add-In-Manager angezeigt). Der Titel sollte nicht zu lang gewählt werden, weil im Add-In-Manager wegen der festen Dialogfensterbreite nur ungefähr die ersten 70 Zeichen optisch erkennbar sind.

- Für den Namen einer Internet-Verknüpfung, die über den "Zu Favoriten hinzufügen"-Dialog in Microsoft Excel erstellt wird (Titel wird als Dateiname mit Dateinamenerweiterung "url" vorgegeben). Da Dateinamen unter Windows bestimmte Zeichen nicht enthalten dürfen, wird ein solches Zeichen automatisch in einen Bindestrich (-) umgewandelt. Die nicht erlaubten Zeichen sind ?, *, <, >, \, /, :, | und ". Auch ein enthaltenes Komma (,) wird einen Bindestrich umgewandelt, obwohl eigentlich das Komma in Windows-Dateinamen erlaubt ist. Da Dateinamen nicht unbegrenzt lang sein dürfen, werden nur die ersten 127 Zeichen eines langen Titels als Dateiname vorgeblendet. Der Dokument-Titel selbst darf jedoch erheblich länger als 127 Zeichen sein (bei Microsoft Excel maximal 32'766 Zeichen, bei Microsoft Excel 2000 und neuer maximal 32'767 Zeichen).

Man kann den Titel auch dann ändern, wenn die Arbeitsmappe für die gemeinsame Bearbeitung freigegeben ist.

.VBA-Code #1
Public Sub GetDocumentTitle1()
  MsgBox ActiveWorkbook.BuiltinDocumentProperties("Title").Value
End Sub

.VBA-Code #2
Public Sub GetDocumentTitle2()
  MsgBox ActiveWorkbook.Title
End Sub

.VBA-Code #3
Public Sub SetDocumentTitle1()
  ActiveWorkbook.BuiltinDocumentProperties("Title").Value = "Umsatzstatistik Juli 2005"
End Sub

.VBA-Code #4
Public Sub SetDocumentTitle2()
  ActiveWorkbook.Title = "Umsatzstatistik Juli 2005"
End Sub

.Hinweis
Der Titel eines Add-Ins kann mit der Codezeile

  MsgBox AddIns(1).Title

abgefragt werden, wobei die Zahl 1 für die Indexnummer des ersten Add-Ins steht. Bei einem Titel kann in der Klammer nur eine Zahl (Indexnummer) stehen. Anstelle einer Zahl könnte man theoretisch auch den Titel angeben, also

  MsgBox AddIns("Add-In-Verknüpfungen aktualisieren").Title

schreiben, was allerdings keinen Sinn macht, weil man ja den Titel des Add-Ins herausfinden will.

Ein Add-In-Titel kann nicht direkt geändert werden. Wenn der Title-Eigenschaft eine Zeichenfolge zugewiesen wird, tritt bereits beim Ausführen bzw. Kompilieren des VBA-Programmcodes ein Kompilierungsfehler auf.

Verwandte Codebeispiele

Prüfen, ob ein Dateiname gültig ist

To Top


Dateien im Temp-Verzeichnis von Windows löschen

.Beschreibung
Im Prinzip kann man die Dateien im Temp-Verzeichnis von Windows löschen, indem man ganz einfach die Kill-Anweisung von VBA einsetzt und als Dateiname "*.*" angibt. Das Problem ist allerdings, dass dieses Verzeichnis häufig Dateien enthält, die gerade von einer laufenden Anwendung oder von einem Prozess benutzt werden. Solche Dateien lassen sich nicht löschen;  es tritt eine Zugriffsverletzung auf. Bei VBA ist dies der Laufzeitfehler 70 "Zugriff verweigert".

Es werden alle Dateien unabhängig dem Dateityp gelöscht, also nicht nur temporäre Dateien. Dateien, die sich in einem Unterverzeichnis des Temp-Verzeichnisses befinden, werden nicht gelöscht.

» Codebeispiel #1: Dieses Beispiel löscht alle Dateien, die sich im Temp-Verzeichnis von Windows befinden.

» Codebeispiel #2: Dieses Codebeispiel löscht ebenfalls alle Dateien des Temp-Verzeichnisses, wobei allfällige Laufzeitfehler abgefangen werden. Wie weiter oben erwähnt treten diese auf, wenn eine Datei gesperrt ist. Am Schluss wird angezeigt, wie viele Dateien gelöscht bzw. nicht gelöscht werden konnten.

.VBA-Code #1
Public Sub KillTempFiles1()
  Kill Environ("Temp") & "\*.*"
End Sub

.VBA-Code #2
Public Sub KillTempFiles2()
  Dim intDeleted As Integer
  Dim intFailed As Integer
  Dim objFiles As Object
  Dim objFile As Object
  On Error Resume Next
  Set objFiles = CreateObject("Scripting.FileSystemObject").GetFolder(Environ("Temp")).Files
  For Each objFile In objFiles
    objFile.Delete
    If Err.Number = 0 Then
      intDeleted = intDeleted + 1
    Else
      intFailed = intFailed + 1

      Err.Clear
    End If
  Next
  MsgBox "Von den insgesamt " & intDeleted + intFailed & " Dateien wurden " & intDeleted & _

      " Dateien gelöscht. " & intFailed & " Dateien konnten nicht gelöscht werden.", vbInformation
  Set objFile = Nothing
  Set objFiles = Nothing
End Sub

Verwandte Codebeispiele

Datei löschen

Dateien eines Ordners löschen

 

Weitere Informationen

VBA-Spezialthema: FileSystemObject (FSO)

To Top


Standard-Dateityp für neue Arbeitsmappen abfragen/ändern

.Beschreibung
Der Standard-Dateityp (DefaultSaveFormat-Eigenschaft des Application-Objektes) legt fest, welcher Dateityp im Speichern unter-Dialog als Vorgabe eingestellt sein soll. Er wird somit nur berücksichtigt, wenn man eine Arbeitsmappe - egal ob neu oder bereits einmal gespeichert - via Speichern unter-Dialog speichert.

Beim Speichern einer neuen Arbeitsmappe mittels Save-Methode von Workbook wird die DefaultSaveFormat-Eigenschaft nicht beachtet. Es wird immer das Dateiformat für Arbeitsmappen der eingesetzten Excel-Version benutzt, welches grundsätzlich "Microsoft Excel-Arbeitsmappe (*.xls)" ist. Auch beim Speichern einer Arbeitsmappe mittels SaveAs-Methode wird die DefaultSaveFormat-Eigenschaft nicht beachtet. Wird das Argument FileFormat der SaveAs-Methode nicht spezifiziert, wird bei einer neuen Arbeitsmappe das Dateiformat der eingesetzten Excel-Version und bei einer vorhandenen Datei das zuletzt verwendete Dateiformat benutzt.

.VBA-Code #1
Public Sub GetDefaultFileFormat()
  MsgBox Application.DefaultSaveFormat
End Sub

.VBA-Code #2
Public Sub SetDefaultFileFormat()
  Application.DefaultSaveFormat = xlWorkbookNormal
End Sub

Weitere Informationen

Excel-Objektmodell: Eigenschaften des Application-Objektes

To Top


Zieldatei aus einer Datei-Verknüpfung (lnk-Datei) ermitteln

.Beschreibung

Wenn man der Funktion nichts übergibt oder die angegebene lnk-Datei nicht vorhanden ist, dann gibt die Funktion eine leere Zeichenfolge zurück. Ist die angegebene Datei keine Verknüpfung, so wird der gleiche Dateiname zurückgegeben.

Bitte beachten Sie, dass nur Datei-Verknüpfungen funktionieren. Verknüpfungen, die einen Ordner als Ziel besitzen, können nicht auf diese Weise analysiert werden.

.VBA-Code
'Codemodul
Function GetLinkDestination(ByVal strLinkFile As String) As String
  On Error Resume Next

  If Len(Trim$(strLinkFile)) = 0 Or Dir(strLinkFile, vbHidden) = "" Then
    GetLinkDestination = ""
  Else
    With Application.FileSearch
      .NewSearch
      .LookIn = Left$(strLinkFile, Len(strLinkFile) - Len(Dir(strLinkFile, vbHidden)) - 1)
      .SearchSubFolders = False
      .FileType = msoFileTypeAllFiles
      .FileName = Dir(strLinkFile, vbHidden)

      If Err.Number = 5 Then
        GetLinkDestination = ""
        Exit Function
      End If

      If .Execute() > 0 Then
        GetLinkDestination = .FoundFiles(1)
      Else
        GetLinkDestination = ""
      End If
    End With
  End If
End Function

'*** Aufruf ***
Sub TestCall()
  MsgBox "Zieldatei: " & GetLinkDestination("C:\Daten\Datei-Verknüpfung.lnk")
End Sub

Verwandte Codebeispiele

Zieldateiname aus einer Datei-Verknüpfung (lnk-Datei) ermitteln

Zielordner aus einer Ordner-Verknüpfung (lnk-Datei) ermitteln

Ziel-URL aus einer Internet-Verknüpfung (url-Datei) ermitteln

To Top


Zieldateiname aus einer Datei-Verknüpfung (lnk-Datei) ermitteln

.Beschreibung
Wenn man der Funktion nichts übergibt oder die angegebene lnk-Datei nicht vorhanden ist, dann gibt die Funktion eine leere Zeichenfolge zurück. Ist die angegebene Datei keine Verknüpfung, so wird der gleiche Dateiname zurückgegeben.

Die Dateinamenerweiterung "lnk" muss immer angegeben werden.

.VBA-Code
Public Sub GetLinkDestinationFileName()
  With Application.FileSearch
    .NewSearch
    .LookIn = "C:\Daten"
    .FileType = msoFileTypeAllFiles
    .FileName = "Datei-Verknüpfung.lnk"
    MsgBox "Zieldateiname: " & .Filename
  End With
End Sub

Verwandte Codebeispiele

Zieldatei aus einer Datei-Verknüpfung (lnk-Datei) ermitteln

Zielordner aus einer Ordner-Verknüpfung (lnk-Datei) ermitteln

Ziel-URL aus einer Internet-Verknüpfung (url-Datei) ermitteln

To Top


Zielordner aus einer Ordner-Verknüpfung (lnk-Datei) ermitteln

.Beschreibung
Wenn man der Funktion nichts übergibt oder die angegebene lnk-Datei nicht vorhanden ist, dann gibt die Funktion eine leere Zeichenfolge zurück. Ist die angegebene Datei keine Verknüpfung, so wird der gleiche Dateiname zurückgegeben.

Die angegebene Datei darf versteckt sein.

Die Dateinamenerweiterung "lnk" muss nicht zwingend angegeben werden.

Relative und UNC-Pfade wurden nicht getestet.

Noch keine Lösung gefunden!

.VBA-Code
'Codemodul
Function GetLinkDestinationFolder(ByVal strLinkFile As String) As String

End Function

'*** Aufruf ***
Sub TestCall()
  MsgBox "Zielordner: " & GetLinkDestinationFolder("C:\Daten\Ordner-Verknüpfung.lnk")
End Sub

Verwandte Codebeispiele

Zieldatei aus einer Datei-Verknüpfung (lnk-Datei) ermitteln

Zieldateiname aus einer Datei-Verknüpfung (lnk-Datei) ermitteln

Ziel-URL aus einer Internet-Verknüpfung (url-Datei) ermitteln

To Top


Ziel-URL aus einer Internet-Verknüpfung (url-Datei) ermitteln

.Beschreibung
Nebst Dateiverknüpfungen (Dateinamenerweiterung "lnk") unterstützt Windows auch so genannte Internet-Verknüpfungen. Dabei handelt es sich um Dateien mit der Dateinamenerweiterung "url".

Nachfolgend wird eine kleine Funktion vorgestellt, mit der man die Ziel-URL einer Internet-Verknüpfung abfragen kann.

- HTTP
- HTTPS
- FTP
- MAILTO
- FILE

Die URL "file:///D:/Daten" (Ordner) funktioniert!

Der Funktion GetLinkDestinationURL wird der vollständige Pfad der Internet-Verknüpfung inklusive Dateinamenerweiterung "url" übergeben.

.VBA-Code
'Codemodul
Function GetLinkDestinationURL(ByVal strLinkFile As String) As String
  Dim strLinkFilenameNoExtension As String
  On Error Resume Next
  If Len(Trim$(strLinkFile)) = 0 Or Dir(strLinkFile, vbHidden) = "" Then
    GetLinkDestinationURL = ""
  Else
    strLinkFilenameNoExtension = Left$(Dir(strLinkFile), Len(Dir(strLinkFile)) - 4)
    With Application.FileSearch
      .NewSearch
      .LookIn = Left$(strLinkFile, Len(strLinkFile) - Len(Dir(strLinkFile, vbHidden)) - 1)
      .SearchSubFolders = False
      .FileType = msoFileTypeAllFiles
      .FileName = strLinkFilenameNoExtension
      If Err.Number = 5 Then
        GetLinkDestinationURL = ""
      Else
        If .Execute() > 0 Then
          GetLinkDestinationURL = .FoundFiles(1)
        Else
          GetLinkDestinationURL = ""
        End If
      End If
    End With
  End If
End Function

'*** Aufruf ***
Sub TestCall()
  MsgBox "URL: " & GetLinkDestinationURL("C:\Daten\Internet-Verknüpfung.url")
End Sub

Verwandte Codebeispiele

Zieldatei aus einer Datei-Verknüpfung (lnk-Datei) ermitteln

Zieldateiname aus einer Datei-Verknüpfung (lnk-Datei) ermitteln

Zielordner aus einer Ordner-Verknüpfung (lnk-Datei) ermitteln

Internet-Verknüpfung erstellen

E-Mail-Verknüpfung erstellen

To Top

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

Zuletzt aktualisiert am 1.03.2006 / 23:00 Uhr
© 2002-2006 by Philipp von Wartburg, CH-8916 Jonen

Alle Rechte vorbehalten