Javaで作った処理をExcelからボタン1つで実行する方法【バッチ連携】

はじめに

「Javaで作った業務ロジックを、Excelからワンクリックで実行したい」
——そんなニーズは現場でよくあります。

この記事では、JavaプログラムをExcel上のボタン1つで起動できる方法(バッチ連携)を解説します。
VBAとJavaを連携させることで、表計算とシステム処理の間を効率よく橋渡しできます。


想定シナリオ

  • Javaで作成した処理:CSV出力・データ加工・API連携など
  • ユーザーはExcelボタンを押すだけ
  • 処理ログや出力ファイルを自動保存

1. Javaアプリケーションの準備

サンプルコード(CSVファイルを出力)

// CsvExportApp.java
import java.io.FileWriter;
import java.io.PrintWriter;

public class CsvExportApp {
  public static void main(String[] args) throws Exception {
    try (PrintWriter pw = new PrintWriter(new FileWriter("C:\\JavaOutput\\output.csv"))) {
      pw.println("名前,スコア");
      pw.println("山田太郎,90");
      pw.println("佐藤花子,85");
    }
    System.out.println("CSV出力完了");
  }
}

コンパイルとJAR化

javac CsvExportApp.java
jar cfe CsvExportApp.jar CsvExportApp CsvExportApp.class

→ 出力された CsvExportApp.jar を、たとえば C:\JavaApps\ に配置しておきます。


2. ExcelにVBAボタンを追加

シートにボタンを挿入

  1. Excelを開き、「開発」タブ →「挿入」→「フォームコントロール:ボタン」
  2. ボタンを配置し、「マクロの登録」で RunJavaProcess を指定

VBAコードを書く

Sub RunJavaProcess()
    Dim shell As Object
    Set shell = CreateObject("WScript.Shell")
    
    Dim javaPath As String
    javaPath = """C:\Program Files\Java\jdk-17\bin\java.exe""" ' 必要に応じて修正
    
    Dim jarPath As String
    jarPath = "C:\JavaApps\CsvExportApp.jar"
    
    Dim command As String
    command = javaPath & " -jar """ & jarPath & """"
    
    shell.Run command, 1, False
    MsgBox "Java処理を実行しました。"
End Sub

shell.Run の第2引数はウィンドウ表示モード(1: 通常)、第3引数は非同期(False)


3. 処理結果をExcelにフィードバック(オプション)

Java処理が完了後、出力されたCSVをVBAで読み取ってシートに表示することもできます。

Sub LoadCsvResult()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    
    ws.Range("A1:B100").ClearContents
    
    With ws.QueryTables.Add(Connection:="TEXT;C:\JavaOutput\output.csv", Destination:=ws.Range("A1"))
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

4. トラブル対策

問題対応方法
Javaが実行できないjava.exeのパスが通っているか確認
Excelがファイルを読み取れないファイルパスが正しいか、権限を確認
Javaの出力を確認したいJava側でログファイル出力を追加する
同期で処理完了を待ちたいWshShell.Exec を使う

まとめ

  • Javaアプリをバッチ化(JAR化)すれば、VBAから簡単に起動可能
  • Excelボタンにマクロを割り当てることで「ワンクリック実行」を実現
  • 処理結果の読み込みまで組み合わせれば、業務自動化に最適な構成に
タイトルとURLをコピーしました