教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA API操作】Windowsディレクトリのパスを取得(GetWindowsDirectory)する方法を教えて!

f:id:m_kbou:20200419203346p:plain

Windowsディレクトリのパスを取得するWindowsAPI関数(GetWindowsDirectory)について紹介します。

 

 

構文

記述方法は以下の通りとなります。

(API定義)

Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

---------------------------------

(VBA記述)

GetWindowsDirectory(lpBuffer,nSize)

[説明]:

Windowsディレクトリのパスを取得するAPI関数はGetWindowsDirectory関数となります。VBAから呼び出して使用する場合には、

---------------------------------

Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

---------------------------------

をプロシージャ外で宣言します。

GetWindowsDirectory関数はWindowsアプリケーションや初期ファイル・ヘルプファイル等が登録されているディレクトリパスを取得します。引数であるlpBufferは取得したWindowsディレクトリパスを格納する変数を指定します。また、nSizeにはWindowsディレクトリパスの文字数を指定します。実行による戻り値には「0」と「0以外」があり、「0」の場合はディレクトリパスの取得に失敗、「0以外」の場合は取得に成功となります。

 

使い方

使用方法について説明します。 

[プログラミング例]:

Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Sub サンプル()

  '↓処理①
  Dim Windowsディレクトリパス As String * 260

  '↓処理②
  If GetWindowsDirectory(Windowsディレクトリパス, 260) <> 0 Then
    MsgBox Windowsディレクトリパス
  Else
    MsgBox "Windowsディレクトリのパスが取得できません。"
  End If

End Sub

処理の流れは以下の通りとなります。

[処理①]:変数定義
Windowsディレクトリパスを取得・格納する変数定義となります。引数には格納するバッファサイズを指定します。(※宣言時には必ず260に指定します。)

[処理②]:GetWindowsDirectoryによるWindowsディレクトリパス取得
WindowsAPI関数であるGetWindowsDirectoryを使用したWindowsディレクトリのパスを取得します。各引数には以下の内容をセットして処理を実行します。
・lpBuffer・・・ディレクトリパスを格納する変数をセットします。
 ※今回は[処理①]で定義した変数:Windowsディレクトリパスをセットします。
・nSize・・・ディレクトリパスの文字数をセットします。
 ※今回は「260」をセットします。
処理を実行すると戻り値として「0」又は「0以外」が返され、「0」の場合はディレクトリパスの取得に失敗した状態(MsgBoxで”Windowsディレクトリのパスが取得できません。”を表示)となり、「0以外」の場合は取得に成功した状態(MsgBoxでディレクトリパスを表示)となります。

f:id:m_kbou:20210522173444p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210522173501p:plain

②結果は以下の通りとなり、Windowsディレクトリのパス「C:\Windows」がMsgBoxで表示されます。

f:id:m_kbou:20210522173512p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

WindowsAPIを使用したWindowsディレクトリのパスを取得する方法についての説明は以上です。

 

おわりに

今回はWindowsAPI関数によるWindowsディレクトリのパスを取得する方法について説明しました。是非参考にして下さい。