先日 VBAからwinAPIを呼び出し、使用する方法 を学びました。
そこで今回はwinAPIで使用されているC言語と、VBAのデータ型の対応を調べました。
APIをVBAで使用するためには、使用するwin APIをVBA上で宣言する必要があります。その際引数や戻り値のデータ型を指定しなければなりませんが、VBAとC言語ではデータ型が異なります。
winAPIではC言語の入門書によく出てくるint や long等のデータ型だけでなく、様々な種類のデータ型が出てきます。
データ型の対応
C言語 | VBA |
int | Long |
Long | Long |
DWORD | Long |
HWND | Long |
BOOL | Long |
NULL | Long |
Short | Integer |
WORD | Integer |
ATOM | Integer |
BYTE | Byte |
Char | Byte |
データ型の使用場所
WORD型
符号なし16 bit 整数です。
定義は以下の通りです。
1 |
typedef unsigned short WORD; |
DWORD型
符号なし32bit 整数です。
定義は以下の通りです。
1 |
typedef unsigned long DWORD; |
ATOM 型
符号なし16 bit 整数で、アトムテーブル使用時に用いられるデータ型です。
定義は次の通りです。
1 2 |
typedef unsigned short WORD; typedef WORD ATOM; |
HWMD型
Windowのハンドルを扱う場合に使用するデータ型です。
定義は次の通りです。
1 2 3 |
typedef void *PVOID; typedef PVOID HANDLE; typedef HANDLE HWND; |
PVOID型
PVOID型はvoidポインターのことで、すべての型のポインターを格納することができます。
定義は次の通りです。
1 |
typedef void *PVOID; |
BOOL型
BOOL型は真理値(真・偽、TRUE・FALSE、1・0等)を扱うデータ型です。
定義は以下の通りです。
1 |
typedef int BOOL; |
参考文献