外部連携 × マルチ選択の基本
業務でよくあるのが「複数ファイルを選んで一括処理したい」「外部システムや外部ファイルと連携したい」というケースです。
ここでは初心者向けに、外部連携(ファイルやAPIなど)とマルチ選択を組み合わせる方法 をコード例とテンプレートでかみ砕いて説明します。
基本の考え方
- 外部連携とは?
Excel VBAから外部のファイル(CSV, TSV, XML, JSONなど)やWeb APIを扱うこと。 - マルチ選択とは?
ユーザーが複数の対象(ファイルや項目)をまとめて選べる仕組み。 - 組み合わせると?
- 複数ファイルを一度に選んで読み込む
- 複数データをまとめて外部APIに送信する
- 選択した複数フォルダやファイルを一括処理
テンプレ1:複数CSVファイルを選んで一括取り込み
Sub ImportMultiCSV()
Dim filePaths As Variant
Dim i As Long
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim rowCount As Long
' 複数ファイル選択ダイアログ
filePaths = Application.GetOpenFilename( _
FileFilter:="CSVファイル (*.csv), *.csv", _
Title:="複数CSVを選択してください", _
MultiSelect:=True)
If IsArray(filePaths) = False Then Exit Sub
ws.Cells.Clear
rowCount = 1
' 選択したファイルを順番に読み込む
For i = LBound(filePaths) To UBound(filePaths)
Open filePaths(i) For Input As #1
Dim lineData As String, arr As Variant
Do Until EOF(1)
Line Input #1, lineData
arr = Split(lineData, ",")
ws.Cells(rowCount, 1).Resize(1, UBound(arr) + 1).Value = arr
rowCount = rowCount + 1
Loop
Close #1
Next i
MsgBox "複数CSVを一括で取り込みました!"
End Sub
VB- ポイント:
MultiSelect:=Trueで複数ファイル選択。- 配列で返るので
For i = LBound ...でループ処理。 - 実務で「日次CSVをまとめて取り込む」などに便利。
テンプレ2:複数ファイルを選んで外部APIに送信(例)
Sub SendMultiFilesToAPI()
Dim filePaths As Variant
Dim i As Long
Dim http As Object
Dim url As String
url = "https://example.com/api/upload"
filePaths = Application.GetOpenFilename( _
FileFilter:="テキストファイル (*.txt), *.txt", _
Title:="複数ファイルを選択してください", _
MultiSelect:=True)
If IsArray(filePaths) = False Then Exit Sub
Set http = CreateObject("MSXML2.XMLHTTP")
For i = LBound(filePaths) To UBound(filePaths)
' ファイル内容を読み込む
Dim fso As Object, ts As Object, fileContent As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(filePaths(i), 1)
fileContent = ts.ReadAll
ts.Close
' APIにPOST送信
http.Open "POST", url, False
http.setRequestHeader "Content-Type", "text/plain"
http.Send fileContent
MsgBox "送信完了: " & filePaths(i) & vbCrLf & "レスポンス: " & http.responseText
Next i
End Sub
VB- ポイント:
- 選択した複数ファイルを順番に読み込み。
- APIにPOSTで送信。
- 実務で「複数ログファイルを外部システムにアップロード」などに応用可能。
テンプレ3:ListBoxで複数選択した項目を外部連携
UserFormに ListBox1 を配置し、MultiSelect プロパティを 1 - fmMultiSelectMulti に設定。
Private Sub CommandButton1_Click()
Dim i As Long
Dim http As Object
Dim url As String
url = "https://example.com/api/register"
Set http = CreateObject("MSXML2.XMLHTTP")
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
' 選択項目をAPIに送信
http.Open "POST", url, False
http.setRequestHeader "Content-Type", "application/json"
http.Send "{""item"":""" & ListBox1.List(i) & """}"
MsgBox "送信完了: " & ListBox1.List(i)
End If
Next i
End Sub
VB- ポイント:
- ListBoxで複数選択された項目をループ処理。
- 外部APIにまとめて送信。
例題で練習
'例1:複数CSVファイルを選んで一括取り込み
'例2:複数ファイルを選んで外部APIに送信
'例3:ListBoxで複数項目を選んで外部APIに連携
VB初心者向けポイント
- ファイル選択は配列で返る →
IsArrayで判定してループ処理。 - ListBoxはSelectedプロパティで判定 → Trueなら選択済み。
- 外部連携は「ファイル読み込み」や「API送信」と組み合わせる → 実務で役立つ。
- マルチ選択を活用すると一括処理が可能 → 効率化に直結。
👉 この「外部連携 × マルチ選択テンプレ」を覚えておけば、Excel VBAで 複数ファイルや複数項目をまとめて外部システムに連携する処理 を簡単に作成できます。
