对于某些宏,您可能需要确定是否有一种方法可以确定运行该宏的特定计算机。例如,您可能有一台台式计算机,其特定目录位于D:\ OraNT \ Plus33,而您的笔记本计算机的目录位于C:\ OraNT \ Plus33。当然,该宏需要检测正在使用的计算机,以便知道用于处理的目录。

有多种方法可以完成此任务。可以创建一个实际访问Windows API并确定运行它的计算机名称的Excel宏。但是,这种方法可能会涉及很多。

一种简单的方法是仅使用VBA的DIR命令来确定所需目录的位置。以下将达到目的:

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

注意在此示例中如何使用DIR函数。通常,DIR返回在请求目录中找到的第一个文件的名称。

但是,如果目录为空,即使目录实际存在,DIR也会返回空字符串。由于我们要做的只是找出目录是否存在(如果目录中没有文件),因此有必要在DIR使用的目录路径的末尾附加字母“ nul”。

如果目录未找到,这将导致DIR返回空字符串,否则将返回字符“ nul”(即使目录为空)。

在宏末尾,如果找不到两个目录,则sTemp将为空。如果找到其中之一,则sTemp不会为空,并且sGoodPath将设置为可用于进一步处理的目录名称。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11576)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较旧菜单界面找到此技巧的版本:“ link:/ excel-Self-Aware_Macros [Self-Aware Macros]”。