Self-Aware Macro's

Voor sommige macro's die u nodig heeft om te bepalen of er een manier is om de specifieke machine waarop de macro werkt bepalen. Zo kan je een desktop PC die een bepaalde directory bij D heeft zijn: \ Orant \ Plus33, terwijl uw notebook pc heeft de directory in C: \ Orant \ Plus33. De macro natuurlijk moet detecteren welke machine in gebruik is, zodat het weet welke directory te gebruiken voor de verwerking.

Er zijn verschillende manieren waarop deze taak kan worden benaderd. Het is mogelijk om een ​​Excel macro die daadwerkelijk toegang tot de Windows API en bepaalt de naam van de computer waarop het draait maken. Een dergelijke aanpak kan heel betrokken, echter.

Een eenvoudigere manier is om gewoon gebruik maken DIR commando VBA om te bepalen waar de gewenste map bestaat. Het volgende zal doen de truc:

Sub OracleQueries ()
Dim Stemp als Koord
Dim sGoodPath als Koord

sGoodPath = "D: \ Orant \ Plus33 \"
Stemp = Dir ("D: \ Orant \ Plus33 \ nul")
Als Stemp = "" Dan
sGoodPath = "C: \ Orant \ Plus33 \"
Stemp = Dir ("C: \ Orant \ Plus33 \ nul")
End If

'Nu hebben directory informatie
Als Stemp <> "" Dan
'Proces queries met behulp sGoodPath
Anders
MsgBox "Directories niet gevonden!"
End If
End Sub

Merk op hoe de DIR-functie wordt gebruikt in dit voorbeeld. Normaal DIR geeft de naam van het eerste bestand het vindt in de gevraagde map. Als de map leeg is, echter, DIR een lege tekenreeks geretourneerd, zelfs als de directory daadwerkelijk bestaat. Omdat alles wat we willen doen is te achterhalen of de map bestaat (niet als er bestanden in het), is het noodzakelijk om de letters "nul" te voegen aan het einde van het pad gebruikt door DIR. Dit veroorzaakt DIR om een ​​lege string terug als de map niet is gevestigd, of anders de letters "nul" als het is (zelfs als de map leeg is).

Tegen het einde van de macro zal STEMP leeg zijn wanneer noch directory kunnen worden gevestigd. Als een van hen was bereikt en STEMP niet leeg zijn, en sGoodPath ingesteld op de directory naam die kan worden gebruikt in de verdere verwerking.

ExcelTips is uw bron voor kosteneffectieve Microsoft Excel training. Deze tip (11.576) is van toepassing op Microsoft Excel 2007 en 2010. U kunt een versie van deze tip voor de oudere menu-interface van Excel vindt u hier: Self-Aware Macro's.