AppActivate(Title As Variant, [Wait As Variant = False])
Setzt den Focus auf eine laufende Anwendung. Title kann eine
Zeichenfolge sein, die mit dem Titel einer Anwendung aus der Taskleiste übereinstimmt.
Bei mehreren Übereinstimmungen wird zufällig irgendeine Anwendung gewählt. Bei den
meisten Officeapplikationen kann der Titel mit Application.Caption
eingestellt werden. Title kann aber auch die Task-ID sein, die von
der Shell-Funktion zurückgegeben wird.
Wird Wait auf True gesetzt, wartet VBA, bis der
Befehl verarbeitet wurde.
Beep
Gibt einen kurzen Ton aus, in Abhängigkeit zu den Soundeinstellungen des Computers.
DeleteSetting AppName As String, [Section As String, [Key As String]])
Löscht unterhalb von HKEY_CURRENT_USER\Software\VB and VBA Program Settings
einen Eintrag aus der Registry . Ohne Key wird auch die Schlüsseleinstellung,
ohne Section auch der Abschnitt gelöscht.
DoEvents As Integer
Übergibt die Steuerung an das Betriebssystem, damit es andere Ereignisse verarbeiten kann. Dabei kann es sich um Ereignisse handeln, die von zuvor ausgelösten Befehlen wie CreateObject abhängen.
Das Programm erhält erst dann die Steuerung wieder zurück, wenn das Betriebssystem
alle wartenden Ereignisse verarbeitet hat. In VBA gibt DoEvents immer
„0“ zurück.
Environ(Expression As Variant) As String
Gibt eine Umgebungsvariable des Betriebssystems zurück.
Expression kann der Name einer existierenden Umgebungsvariablen sein.
Debug.Print Environ("Path")
C:\Windows\system32;C:\Windows
Alternativ kann Expression auch die Nummer der Umgebungsvariablen
sein, gemäß der Reihenfolge, in der sie das System verwaltet. Dann gibt Environ
nicht nur den Inhalt der Umgebungsvariablen zurück, sondern den Namen der Umgebungsvariablen,
gefolgt von einem Gleichheitszeichen und dann den Inhalt. Das folgende Beispiel
gibt alle Umgebungsvariablen des Systems zurück.
Sub Umgebung() Dim i As Integer, env As String Do i = i + 1 env = Environ(i) Debug.Print i, env Loop Until env = "" End Sub
GetAllSettings(AppName As String, Section As String) As Variant
Gibt eine Liste von Schlüsseleinstellungen aus der Registry in Form eines
zweidimensionales Arrays zurück. Für jeden Key in Section
wird Key und Setting zurückgegeben. Es kann nur auf
Einstellungen unter HKEY_CURRENT_USER\Software\VB and VBA Program Settings
zugegriffen werden.
Sub Registriere() Dim Registry 'Variant für Datenfeld Dim intSettings As Integer 'Einträge in der Registrierung vornehmen SaveSetting "Anhalter", "Problem", "Frage", "Sinn des Lebens" SaveSetting "Anhalter", "Problem", "Antwort", 42 'Einträge abrufen Registry = GetAllSettings("Anhalter", "Problem") 'Einträge ausgeben For intSettings = LBound(Registry, 1) To UBound(Registry, 1) Debug.Print Registry(intSettings, 0), Registry(intSettings, 1) Next 'Einträge wieder löschen DeleteSetting "Anhalter" End Sub
GetSetting(AppName As String, Section As String, Key As String, [Default] As String) As String
Gibt aus der Registry unter HKEY_CURRENT_USER\Software\VB and VBA Program Settings
den Wert einer Schlüsseleinstellung zurück. Mit Default kann ein
Rückgabewert definiert werden für den Fall, dass kein Schlüssel festgesetzt ist.
SaveSetting AppName As String, Section As String, Key As String, Setting As String
Erstellt in der Registry einen neuen Eintrag oder überschreibt ihn, falls er
schon besteht. Der Eintrag erfolgt stets unterhalb von
HKEY_CURRENT_USER\Software\VB and VBA Program Settings.
SendKeys(String As String, [Wait As Variant])
Simuliert Tastenanschläge, die an das aktive Fenster gesendet werden. Mit
SendKeys lässt sich jede Aktion durchführen, die man auch über die
Tastatur durchführen könnte, und zwar auf genau die gleiche Art und Weise. Das
macht SendKeys zwar zu einer mächtigen, aber zugleich auch schwer zu
kontrollierenden Anweisung: Manchmal lässt sich nicht unbedingt vorhersagen, ob
ein bestimmtes Fenster immer genau so wie erwartet reagiert, oder ob es überhaupt
wirklich gerade aktiv ist. Daher gilt SendKeys als äußerst verpönt.
Man sollte sehr gute Gründe haben, wenn man es doch einmal einsetzen sollte.
Die in String angegebenen Zeichen wie angegeben gesendet. Für
Tasten, für die es keine direkte Zeichenentsprechung gibt, gibt es
spezielle Codes,
weswegen die Zeichen +^%~(){} in geschweifte Klammern geschrieben
werden müssen.
Wird Wait auf True gesetzt, wartet VBA, bis der
Befehl verarbeitet wurde.
Im folgenden Beispiel wird der Windows-Rechner gestartet
und gewartet, bis er aktiviert werden kann. Im Direktfenster
wird zur Information ausgegeben, wie oft das versucht werden musste. Anschließend
werden die Zahlen von 1-10 addiert. Löscht man in diesem Beispiel die Zeile
AppActivate TaskID ' Rechner aktivieren,
wird wahrscheinlich ein nicht genau bestimmbarer Teil der Tastenanschläge ins
Direktfenster geschrieben (das aufgrund des Debug.Print-Befehls aktiviert wurde),
noch bevor der Rechner den Fokus bekommen kann.
Sub EinsBisZehn() Dim TaskID As Double, i As Integer, anzFehler As Double On Error GoTo NichtAktiv TaskID = Shell("CALC.EXE") 'Rechner starten AppActivate TaskID 'Rechner aktivieren Debug.Print anzFehler 'Wie oft ging AppActivate schief? For i = 1 To 10 SendKeys i & "{+}" Next i SendKeys "=" AppActivate TaskID, True 'Rechner in den Vordergrund holen Exit Sub NichtAktiv: anzFehler = anzFehler + 1 Resume End Sub
Shell(PathName As Variant, [WindowStyle As VbAppWinStyle = vbMinimizedFocus]) As Double
Startet ein ausführbares Programm (EXE, COM, BAT) und gibt die Task-ID zurück, über die das Programmfenster anschließend eindeutig identifizierbar ist.
PathName ist der Name der Anwendung. Die Dateierweiterung ist nicht
notwendig. Sofern der Name in der Path-Umgebungsvariable
enthalten ist, muss auch keine Pfadangabe enthalten sein. PathName
kann auch Befehlszeilenargumente enthalten.
In welcher Fenstergröße das neue Programmfenster geöffnet wird und ob es den
Fokus erhält, kann über VbAppWinStyle
gesteuert werden.
Debug.Print Shell("F:\Programme\MeinBrowser http://www.vba-tutorial.de/")
6000
Debug.Print Shell("calc.exe")
1764
Shell "AcroRd32 /A page=5 C:\myvba.pdf", vbNormalNoFocus