VBAでWin32APIを使う方法と定義一式

Win32APIを使うには

Win32APIを使うにはDeclareステートメントで対象の関数を定義する必要があります。

過去にはWin32APIのDeclare宣言が書かれているWin32API.txtというファイルがMicrosoft Office 2000 DeveloperやMicrosoft Visual Basicに含まれていましたが、2018/9/24現在はWin32API_PtrSafe.TXTというファイルを含んだexeファイルを以下のサイトからダウンロードできます。

取得手順は以下になります。

  1. https://www.microsoft.com/en-us/download/details.aspx?id=9970」を開きます。
  2. 赤い「Download」のリンクをクリックすると、Office2010Win32API_PtrSafe.exeがダウンロードされます。
  3. Office2010Win32API_PtrSafe.exeを実行すると以下のダイアログが表示されるため、それぞれ、はい、Yes、OK、を押します。


  4. 最後のOKを押すと「C:\Office 2010 Developer Resources\Documents\」に解凍されます。

VBAのバージョンとWin32API_PtrSafe.TXTの使い方

Win32APIを使いたい場合は、Win32API_PtrSafe.TXTの内容から必要な部分をVBAのモジュールに転記すれば使えるようになります。

ただ、VBAにはバージョンがあり、Office 2007まではVBA6で32bit版、Office 2010からがVBA7で32bit版と64bit版になっています。

VBAのバージョンはVBA画面のヘルプメニューのバージョン情報で確認できます。

Win32API_PtrSafe.TXTの内容はVBAのバージョンが7.0からの記述になっています。

もしVBA6で動かしたい場合はWin32API_PtrSafe.TXTの内容を使いたい場合は、Declare宣言の「LongPtr」を「Long」に書き換える必要があります。

なお、PtrSafeは削除しなくても32bit版で動きます。

LongPtr型は32bit版の場合はLong型(-2,147,483,648 から 2,147,483,647)となり、64bit版の場合はLongLong型(-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807)として扱われます。

MSDNはURLがよく変わるので

MSDNは度々URLが変わります。

上記のURLも変わるかもしれません。

その度に探すのが面倒なのとダウンロードがわずらわしいので、以下にWin32API_PtrSafe.TXTを転記しておきます。

Win32API_PtrSafe.TXT