Excel VBAとJavaアプリを安全かつ柔軟に連携させたい場面は多くあります。この記事では、VBAからJavaアプリをREST APIを通じて呼び出す方法を、Spring Bootを使ったJavaサーバ構築からVBAコードの実装までわかりやすく解説します。
目次
- なぜAPI経由で連携するのか?
- Java側:Spring BootでREST APIを構築
- VBA側:APIを呼び出して結果を取得
- セキュリティ対策(トークン認証・CORS)
- 応用例:帳票出力やバッチ処理連携
- まとめ
1. なぜAPI経由で連携するのか?
VBAから直接Javaアプリを起動する方法(Shell
関数など)は簡単ですが、引数の扱いやエラーハンドリング、安全性に難があります。
REST APIを使えば
- プロセスを分離できる(VBAはクライアント、Javaはサーバ)
- ネットワーク越しの呼び出しも可能
- セキュリティ(認証・暗号化)を追加しやすい
2. Java側:Spring BootでREST APIを構築
pom.xml(主要依存)
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
コントローラ(例:テキスト加工処理)
@RestController
@RequestMapping("/api")
public class ProcessController {
@PostMapping("/process")
public ResponseEntity<String> process(@RequestBody String input) {
// Javaの処理
String result = input.toUpperCase(); // 例:大文字変換
return ResponseEntity.ok(result);
}
}
3. VBA側:APIを呼び出す
参考コード(WinHttp使用)
Function CallJavaAPI(inputText As String) As String
Dim http As Object
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "POST", "http://localhost:8080/api/process", False
http.SetRequestHeader "Content-Type", "application/json"
http.Send """" & inputText & """"
If http.Status = 200 Then
CallJavaAPI = http.ResponseText
Else
CallJavaAPI = "Error: " & http.Status
End If
End Function
4. セキュリティ対策
API連携には以下の対策を推奨します:
- トークン認証(JWTやAPIキー)
- HTTPS対応
- CORS制限(必要なドメインだけ許可)
- ログ出力と監査
5. 応用例
- ExcelボタンからPDF帳票をJavaで生成
- VBAで入力したパラメータをJavaで計算処理
- JavaでスクレイピングしたデータをExcelに出力
6. まとめ
VBAからJavaアプリを安全に呼び出すには、REST API連携が最適です。プロセスの独立性と拡張性に優れ、業務効率化とセキュリティを両立できます。特にSpring Bootを使えば、APIの構築も容易でメンテナンス性に優れます。