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 |
|
Verwandte Codebeispiele |
|
|
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 |
|
Verwandte Codebeispiele |
|
|
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 |
|
Verwandte Codebeispiele |
|
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 |
|
|
|
Weitere Informationen |
|
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 |
|
|
|
Weitere Informationen |
|
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 |
|
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
|
Weitere Informationen |
|
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 |
|
|
|
Weitere Informationen |
|
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 |
|
|
|
Weitere Informationen |
|
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 |
|
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
|
|
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 |
|
|
|
Weitere Informationen |
|
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 |
|
|
|
Weitere Informationen |
|
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 |
|
|
|
Weitere Informationen |
|
.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 |
|
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
|
Weitere Informationen |
|
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 |
|
|
Weitere Informationen |
|
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 |
|
|
Weitere Informationen |
|
Spracheinstellung in der Windows Systemsteuerung abfragen
.Beschreibung
...
Programmcode von clipview.vbp
.VBA-Code
Public Sub GetWindowsLanguage()
End Sub
Verwandte Codebeispiele |
|
|
.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 |
|
Weitere Informationen |
|
.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 |
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
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 |
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
|
Weitere Informationen |
|
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!
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 |
|
|
|
Weitere Informationen |
|
.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 |
|
|
Weitere Informationen |
|
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
.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 |
|
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 |
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
Verlauf der besuchten Webseiten leeren
.Beschreibung
...
.VBA-Code
Public Sub ClearVisitedHistory()
End Sub
Verwandte Codebeispiele |
|
|
Weitere Informationen |
|
Zellbereich als Grafik in ein Arbeitsblatt einfügen
.Beschreibung
...
.VBA-Code
Public Sub InsertRangeAsPicture()
End Sub
Zellbereich als verknüpfte Grafik in ein Arbeitsblatt einfügen
.Beschreibung
...
.VBA-Code
Public Sub InsertRangeAsLinkedPicture()
End Sub
Verwandte Codebeispiele |
|
|
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 |
|
|
Weitere Informationen |
|
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
.Beschreibung
...
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports
.VBA-Code
Public Sub ListPorts()
End Sub
Verwandte Codebeispiele |
|
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 |
|
Weitere Informationen |
|
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 |
|
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 |
|
|
Weitere Informationen |
|
.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 |
|
|
|
Weitere Informationen |
|
.Beschreibung
...
.VBA-Code
Public Sub RemoveFont()
End Sub
Verwandte Codebeispiele |
|
|
|
Weitere Informationen |
|
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 |
|
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 |
|
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 |
|
Weitere Informationen |
|
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 |
|
Datei kopieren mit "Ersetzen von Dateien bestätigen"-Aufforderung
.Beschreibung
...
.VBA-Code
Public Sub CopyFileWithConfirmation()
End Sub
Weitere Informationen |
|
Mehrere bestimmte Dateien kopieren mit "Ersetzen von Dateien bestätigen"-Aufforderung
.Beschreibung
...
.VBA-Code
Public Sub CopyFilesWithConfirmation()
End Sub
Weitere Informationen |
|
Mehrere bestimmte Dateien kopieren
.Beschreibung
...
.VBA-Code
Public Sub CopyFilesWithoutConfirmation()
End Sub
Weitere Informationen |
|
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 |
|
Datei(en) löschen mit Fortschrittsanzeige
.Beschreibung
...
.VBA-Code
Public Sub FileDeleteWithProgressBar()
End Sub
Weitere Informationen |
|
Datei(en) verschieben mit Fortschrittsanzeige
.Beschreibung
...
.VBA-Code
Public Sub FileMoveWithProgressBar()
End Sub
Weitere Informationen |
|
Mehrere bestimmte Ordner kopieren
.Beschreibung
...
.VBA-Code
Public Sub CopyFoldersWithoutConfirmation()
End Sub
Weitere Informationen |
|
Netzlaufwerk-Zuordnungen auflisten
.Beschreibung
...
.VBA-Code
Public Sub ListNetworkDrives()
End Sub
Weitere Informationen |
|
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 |
|
.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 |
|
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 |
|
Listentrennzeichen von Microsoft Excel abfragen
.Beschreibung
...
.VBA-Code
Public Sub GetListSeparator()
MsgBox "Listentrennzeichen: " &
Application.International(xlListSeparator)
End Sub
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 |
|
|
Weitere Informationen |
|
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 |
|
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 |
|
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
Weitere Informationen |
|
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 |
|
.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 |
|
Weitere Informationen |
|
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 |
|
Weitere Informationen |
|
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 |
|
|
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 |
|
|
Weitere Informationen |
|
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 |
|
|
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
.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
.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 |
|
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 |
|
Weitere Informationen |
|
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 |
|
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 |
|
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 |
|
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 |
|
Weitere Informationen |
|
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 |
|
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
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
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
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
Zuletzt aktualisiert
am 1.03.2006 / 23:00 Uhr
© 2002-2006 by Philipp von Wartburg, CH-8916 Jonen
Alle Rechte vorbehalten