自己認識マクロ(Microsoft Excel)
一部のマクロでは、マクロが動作している特定のマシンを判別する方法があるかどうかを判別する必要がある場合があります。たとえば、D:\ OraNT \ Plus33に特定のディレクトリがあるデスクトップPCがあり、ノートブックPCのC:\ OraNT \ Plus33にディレクトリがあるとします。もちろん、マクロは、処理に使用するディレクトリを認識できるように、使用中のマシンを検出する必要があります。
このタスクに取り組むには、さまざまな方法があります。実際にWindowsAPIにアクセスし、それが実行されているコンピューターの名前を判別する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は空になります。それらの1つが見つかった場合、sTempは空にならず、sGoodPathは以降の処理で使用できるディレクトリ名に設定されます。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(11576)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。
Excelの古いメニューインターフェイスに関するこのヒントのバージョンは、 linkSelf-AwareMacrosにあります。