VBAでWinAPIを使用する

VBAはそれ単独でも非常に強力であり、さまざまな処理・動作が可能です。しかしながらファイル操作等でVBAの機能だけではできない処理があります。そんな時でもWindowsが提供する機能を実行できるwin APIを利用すれば、さらに強力な処理が可能となります。今回はVBAからwin APIを利用する方法を調べました。

 

 

 

win API

win APIとはソフトウェアがWindowsの機能を利用するためのインターフェースです。

 

win APIの宣言

win APIをVBAで使用するためには、Declareステートメントで使用するAPI関数の宣言を行う必要があります。

宣言はwin32 をコールするか、win64をコールするかで宣言が異なります。

win32での宣言

  • function_name   : VBAで使用するうえでの関数名
  • lib_name              : WinAPIを提供するライブラリー名
  • alias_name          : ライブラリー内で定義されている正式な関数名
  • argument_name : 関数の引数名
  • argument_type   : 関数の引数の型
  • return_type         : 返り値の型

 

win64での宣言

  • PtrSafe                : win64 の時宣言する必要がある
  • function_name   : VBAで使用するうえでの関数名
  • lib_name              : WinAPIを提供するライブラリー名
  • alias_name          : ライブラリー内で定義されている正式な関数名
  • argument_name : 関数の引数名
  • argument_type   : 関数の引数の型
  • return_type         : 返り値の型

 

使用例

GetAsyncKeyState

 

  • 関数実行時に指定したキーが押されているか調べる
  • ライブラリー名 User32.dll
  • 引数 : キーコード
  • 戻り値の最上位ビットがonの時、実行時にキーが押されていた

 

SetForegroundWindow

 

  • ウィンドウをアクティブにする
  • ライブラリー名 User32
  • 引数 : アクティブにしたウィンドウズの関数

 

参考文献

  1. Win API リスト

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA