ここでは プリセットをさらに外部ファイル(CSVやJSON)から読み込んで切り替える VBA の例を紹介します。これにより、ユーザーは Excel 内の Config シートを編集する代わりに、外部ファイルを更新するだけで処理パターンを切り替えられるようになります。
外部ファイルの設計例
CSVファイル(例:presets.csv)
Mode,HighlightZero,ReplaceNG,ClearYellow,TargetCol
Pattern1,TRUE,TRUE,FALSE,C
Pattern2,FALSE,TRUE,TRUE,B
Pattern3,TRUE,FALSE,FALSE,D
JSONファイル(例:presets.json)
{
"Pattern1": { "HighlightZero": true, "ReplaceNG": true, "ClearYellow": false, "TargetCol": "C" },
"Pattern2": { "HighlightZero": false, "ReplaceNG": true, "ClearYellow": true, "TargetCol": "B" },
"Pattern3": { "HighlightZero": true, "ReplaceNG": false, "ClearYellow": false, "TargetCol": "D" }
}
JSON1. CSVから読み込む例
Sub LoadPresetFromCSV()
Dim fso As Object, ts As Object
Dim line As String, parts() As String
Dim presetMode As String
Dim dict As Object
' 選択するプリセット名
presetMode = "Pattern2"
' CSVファイルを開く
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile("C:\Users\YourName\OneDrive\presets.csv", 1)
' ヘッダー行を読み飛ばす
ts.ReadLine
' Dictionaryに格納
Set dict = CreateObject("Scripting.Dictionary")
Do Until ts.AtEndOfStream
line = ts.ReadLine
parts = Split(line, ",")
If parts(0) = presetMode Then
dict("HighlightZero") = (UCase(parts(1)) = "TRUE")
dict("ReplaceNG") = (UCase(parts(2)) = "TRUE")
dict("ClearYellow") = (UCase(parts(3)) = "TRUE")
dict("TargetCol") = parts(4)
Exit Do
End If
Loop
ts.Close
' クラスを呼び出して処理
Dim ws As Worksheet, proc As clsCellProcessor
Set proc = New clsCellProcessor
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Config" Then
proc.TargetRange = ws.Range(dict("TargetCol") & "2:" & dict("TargetCol") & ws.Cells(ws.Rows.Count, dict("TargetCol")).End(xlUp).Row)
If dict("HighlightZero") Then proc.HighlightZero
If dict("ReplaceNG") Then proc.ReplaceNG
If dict("ClearYellow") Then proc.ClearYellow
End If
Next ws
End Sub
VB2. JSONから読み込む例(Windows Script Host の JSON パーサを利用)
Sub LoadPresetFromJSON()
Dim fso As Object, ts As Object
Dim jsonText As String
Dim Json As Object, preset As Object
Dim presetMode As String
' 選択するプリセット名
presetMode = "Pattern1"
' JSONファイルを読み込む
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile("C:\Users\YourName\OneDrive\presets.json", 1)
jsonText = ts.ReadAll
ts.Close
' JSONをパース(Microsoft Script Controlや外部ライブラリを利用)
Set Json = JsonConverter.ParseJson(jsonText) ' ※VBA JSONライブラリを参照
Set preset = Json(presetMode)
' クラスを呼び出して処理
Dim ws As Worksheet, proc As clsCellProcessor
Set proc = New clsCellProcessor
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Config" Then
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
End If
Next ws
End Sub
VB👉 JSONを扱う場合は「VBA JSONライブラリ(JsonConverter.bas)」を導入するのが一般的です。
応用パターン
- プリセット切替 → ユーザーは外部ファイルの
Modeを変更するだけ - 複数ユーザー対応 → 各ユーザーごとにプリセットファイルを持たせる
- クラウド連携 → OneDrive/SharePoint 上の CSV/JSON を読み込めば、チーム全員で共有可能
練習課題
- CSVに「対象シート名リスト」を追加して、特定シートだけ処理するように拡張
- JSONに「処理モード(CheckOnly / Fix)」を追加して、チェックだけ or 修正までを切り替える
- 外部ファイルを読み込んだ後に「Configシート」に反映して、ユーザーに現在の設定を見せる仕組みを作る
こうして クラス × イベント駆動 × Configシート × 外部ファイル(CSV/JSON) を組み合わせると、ユーザーが外部ファイルを編集するだけで処理パターンを切り替えられる、まさに 実務で超使える自動化フレームワークになります。

