Selbstbewusste Makros (Microsoft Excel)
Bei einigen Makros müssen Sie möglicherweise feststellen, ob es eine Möglichkeit gibt, den bestimmten Computer zu bestimmen, auf dem das Makro ausgeführt wird. Beispielsweise haben Sie möglicherweise einen Desktop-PC mit einem bestimmten Verzeichnis unter D: \ OraNT \ Plus33, während Ihr Notebook-PC das Verzeichnis unter C: \ OraNT \ Plus33 hat. Das Makro muss natürlich erkennen, welcher Computer verwendet wird, damit es weiß, welches Verzeichnis für seine Verarbeitung verwendet werden soll.
Es gibt verschiedene Möglichkeiten, wie diese Aufgabe angegangen werden kann. Es ist möglich, ein Excel-Makro zu erstellen, das tatsächlich auf die Windows-API zugreift und den Namen des Computers ermittelt, auf dem es ausgeführt wird. Ein solcher Ansatz kann jedoch durchaus involviert sein.
Eine einfachere Möglichkeit besteht darin, einfach den DIR-Befehl von VBA zu verwenden, um festzustellen, wo das gewünschte Verzeichnis vorhanden ist. Folgendes reicht aus:
Sub OracleQueries() Dim sTemp As String Dim sGoodPath As String sGoodPath = "D:\OraNT\Plus33\" sTemp = Dir("D:\OraNT\Plus33\nul") If sTemp = "" Then sGoodPath = "C:\OraNT\Plus33\" sTemp = Dir("C:\OraNT\Plus33\nul") End If 'Now have directory information If sTemp <> "" Then 'Process queries using sGoodPath Else MsgBox "Directories not found!" End If End Sub
Beachten Sie, wie die DIR-Funktion in diesem Beispiel verwendet wird. Normalerweise gibt DIR den Namen der ersten Datei zurück, die im angeforderten Verzeichnis gefunden wurde.
Wenn das Verzeichnis jedoch leer ist, gibt DIR eine leere Zeichenfolge zurück – auch wenn das Verzeichnis tatsächlich vorhanden ist. Da wir nur herausfinden möchten, ob das Verzeichnis vorhanden ist (nicht, ob sich Dateien darin befinden), müssen die Buchstaben „nul“ am Ende des von DIR verwendeten Verzeichnispfads angehängt werden.
Dies führt dazu, dass DIR eine leere Zeichenfolge zurückgibt, wenn sich das Verzeichnis nicht befindet, oder die Zeichen „nul“, wenn dies der Fall ist (auch wenn das Verzeichnis leer ist).
Gegen Ende des Makros ist sTemp leer, wenn keines der Verzeichnisse gefunden werden konnte. Wenn einer von ihnen gefunden wurde, ist sTemp nicht leer und sGoodPath wird auf den Verzeichnisnamen gesetzt, der für die weitere Verarbeitung verwendet werden kann.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (2607) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: