ここでは 外部ファイルを読み込んだプリセットを複数同時に適用(複数モード並列処理) の VBA 例を紹介します。ポイントは「外部ファイル(CSVやJSON)に複数プリセットを定義しておき、選択した複数モードを一度に読み込んで順番に適用する」ことです。
外部ファイルの設計例(CSV)
presets.csv
Mode,HighlightZero,ReplaceNG,ClearYellow,TargetCol
Pattern1,TRUE,TRUE,FALSE,C
Pattern2,FALSE,TRUE,TRUE,B
Pattern3,TRUE,FALSE,FALSE,D
1. 複数モードを選択して並列適用(CSV版)
Sub ApplyMultiplePresetsFromCSV()
Dim fso As Object, ts As Object
Dim line As String, parts() As String
Dim dicts As Collection
Dim presetNames As Variant
Dim presetMode As String
Dim dict As Object
' 適用する複数モードを指定
presetNames = Array("Pattern1", "Pattern2")
' CSVファイルを開く
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile("C:\Users\YourName\OneDrive\presets.csv", 1)
' ヘッダー行を読み飛ばす
ts.ReadLine
' 複数プリセットを読み込む
Set dicts = New Collection
Do Until ts.AtEndOfStream
line = ts.ReadLine
parts = Split(line, ",")
For Each presetMode In presetNames
If parts(0) = presetMode Then
Set dict = CreateObject("Scripting.Dictionary")
dict("Mode") = parts(0)
dict("HighlightZero") = (UCase(parts(1)) = "TRUE")
dict("ReplaceNG") = (UCase(parts(2)) = "TRUE")
dict("ClearYellow") = (UCase(parts(3)) = "TRUE")
dict("TargetCol") = parts(4)
dicts.Add dict
End If
Next presetMode
Loop
ts.Close
' クラスを呼び出して複数プリセットを順次適用
Dim ws As Worksheet, proc As clsCellProcessor, d As Object
Set proc = New clsCellProcessor
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Config" Then
For Each d In dicts
proc.TargetRange = ws.Range(d("TargetCol") & "2:" & d("TargetCol") & ws.Cells(ws.Rows.Count, d("TargetCol")).End(xlUp).Row)
If d("HighlightZero") Then proc.HighlightZero
If d("ReplaceNG") Then proc.ReplaceNG
If d("ClearYellow") Then proc.ClearYellow
Next d
End If
Next ws
End Sub
VB👉 このコードでは Pattern1 と Pattern2 を同時に適用。シートごとに対象列を切り替えながら処理します。
2. JSON版(複数モード適用)
Sub ApplyMultiplePresetsFromJSON()
Dim fso As Object, ts As Object
Dim jsonText As String
Dim Json As Object, preset As Object
Dim presetNames As Variant
Dim ws As Worksheet, proc As clsCellProcessor
Dim mode As Variant
' 適用する複数モード
presetNames = Array("Pattern1", "Pattern3")
' JSONファイルを読み込む
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile("C:\Users\YourName\OneDrive\presets.json", 1)
jsonText = ts.ReadAll
ts.Close
' JSONをパース(JsonConverter.basなどのライブラリが必要)
Set Json = JsonConverter.ParseJson(jsonText)
Set proc = New clsCellProcessor
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Config" Then
For Each mode In presetNames
Set preset = Json(mode)
proc.TargetRange = ws.Range(preset("TargetCol") & "2:" & preset("TargetCol") & ws.Cells(ws.Rows.Count, preset("TargetCol")).End(xlUp).Row)
If preset("HighlightZero") Then proc.HighlightZero
If preset("ReplaceNG") Then proc.ReplaceNG
If preset("ClearYellow") Then proc.ClearYellow
Next mode
End If
Next ws
End Sub
VB👉 JSON版では Pattern1 と Pattern3 を同時適用。外部ファイルの定義を柔軟に使えます。
応用パターン
- 複数モードを並列適用 → 1シートに対して複数処理を順番に実行
- ユーザー選択 → Configシートに「適用モードリスト」を書いておき、それを読み込む
- 外部ファイル共有 → OneDrive/SharePoint 上の CSV/JSON を使えばチーム全員で同じプリセットを共有可能
練習課題
- Configシートに「適用モードリスト」を追加して、ユーザーが複数モードを選べるようにする
- 複数モードを「順次適用」ではなく「結果をマージ」して一括出力するコードを作る
- JSONに「優先度」フィールドを追加して、優先度順に処理を並列適用する仕組みを作る
こうして クラス × イベント駆動 × 外部ファイル × 複数モード並列処理 を組み合わせると、ユーザーが外部ファイルを編集するだけで複数の処理パターンを同時に適用できる、まさに 実務で超使える自動化フレームワークになります。

