Для некоторых макросов вам может потребоваться определить, есть ли способ определить конкретную машину, на которой работает макрос. Например, у вас может быть настольный компьютер с определенным каталогом в D: \ OraNT \ Plus33, а на вашем ноутбуке — каталог в C: \ OraNT \ Plus33. Макрос, конечно, должен определять, какая машина используется, чтобы знать, какой каталог использовать для обработки.

Есть разные способы подойти к этой задаче. Можно создать макрос Excel, который фактически обращается к Windows API и определяет имя компьютера, на котором он работает. Однако такой подход может оказаться весьма сложным.

Более простой способ — просто использовать команду 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 возвращает пустую строку, даже если каталог действительно существует. Поскольку все, что нам нужно сделать, это выяснить, существует ли каталог (а не файлы в нем), необходимо добавить буквы «nul» в конец пути к каталогу, используемого DIR.

Это заставляет DIR возвращать пустую строку, если каталог не находится, или символы «nul», если это так (даже если каталог пуст).

Ближе к концу макроса sTemp будет пустым, если ни один каталог не может быть найден. Если один из них был обнаружен, то sTemp не будет пустым, а sGoodPath будет установлен на имя каталога, которое можно использовать в дальнейшей обработке.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (11576) применим к Microsoft Excel 2007, 2010, 2013 и 2016.

Вы можете найти версию этого совета для более старого интерфейса меню Excel здесь: link: / excel-Self-Aware_Macros [Self-Aware Macros].