Excel の CALL 関数は、Windows の DLL(Dynamic-Link Library)関数を呼び出すための関数です。これは非常に強力で低レベルな機能ですが、現在は セキュリティ上の理由でほとんどの環境で無効化されているか使用できません。
🔧 CALL 関数の概要
CALL(モジュール, 手続き, 型の文字列, 引数1, 引数2, ...)
引数の意味:
| 引数 | 説明 |
|---|---|
モジュール | DLL のパスまたは Excel で登録された DLL の名前 |
手続き | DLL 内の関数名 |
型の文字列 | 呼び出す関数の戻り値と引数の型を表す文字列 |
引数 | 関数に渡す引数(任意) |
🧪 使用例(※理論的なもの)
=CALL("user32", "MessageBoxA", "JJCCJ", 0, "Hello", "Title", 0)
👉 これは Windows API の MessageBox 関数を呼び出し、メッセージボックスを表示する例です。
⚠️ 使用上の注意点
CALL関数は 旧バージョンの Excel(32bit、VBAマクロが有効な環境) でのみ使えることが多いです。- セキュリティリスクが高いため、多くの Excel 環境(特に 64bit や Office 365)では無効化されています。
- 実用的には、VBA(Visual Basic for Applications)から Windows API を呼び出す方が一般的です。
🚫 推奨されない理由
- 非公式・非推奨の方法であり、互換性・安全性ともに低い
- DLL 呼び出しはメモリ破壊やクラッシュの原因にもなりうる
- Excel の更新で機能が削除・制限される可能性がある
✅ 代替手段
- VBA + Declare ステートメントで Windows API を呼び出す
- Power Query や 外部アプリケーションとの連携(Python/Power Automate) を検討する