2

以前、INIファイル読込はシナリオ共有サークルにアップしましたが、

全く、パラメータ設定なしの「変数初期値テキストファイル読込」をご紹介します。

ファイルのパスや、動作させる環境で変数の初期値を変えたい場合などに便利です。

開発と実行が異なる場合など、ファイルのパスが変わったりしますが、そのような場合にも

テキストファイルで指定すれば、シナリオを修正する、または環境別のシナリオを作る必要はありません。

テキストファイルは、メモ帳で

変数1 = 値1
変数2 = 値2
変数3 = 値3
・・・

と記述します。詳しくは、下記注釈を参照してください。

【ライブラリ名】

変数初期値テキストファイル読込

【注釈】

変数の初期値の読み込みを行います。
ファイル名は、シナリオと同じファイル名で拡張子をTXTにしてください。
保存場所もシナリオと同じフォルダにしてください。
ファイルは、テキストファイルですが、文字コードはShift-JISです。
(メモ帳では、文字コードをANSI)

変数1 = 値1
変数2 = 値2
変数3 = 値3
・・・
の形で登録しておき、このノードで指定した変数名に値をセットします。
変数が登録されていない場合は、無視されます。

【スクリプト】

var_scenario_file = GetUmsVariable("$SCENARIO-FILE")
If IsNull(var_scenario_file) Then
  Err.Raise 1, "", "シナリオが保存されていません。(シナリオパス不明)"
End If

TXT = Left(var_scenario_file, Len(var_scenario_file) - 4) & "TXT"

'ファイルシステムオブジェクトを生成
Set objFSO = CreateObject("Scripting.FileSystemObject")

'TEXTファイルの存在チェック
If objFSO.FileExists(TXT) = False Then
  Err.Raise 1, "", "初期値ファイルが見つかりません。(" & TXT & ")"
End If

'TEXTファイルの読み込み
Set objFile = objFSO.OpenTextFile(TXT)
Do While objFile.AtEndOfStream <> True
  readData = objFile.ReadLine
  eq = InStr(readData, "=")
  If eq >= 2 Then
    KM = Trim(Left(readData, eq - 1)) '項目名
    VL = Right(readData, Len(readData) - eq)
    SetUMSVariable KM, Trim(VL)
  End If
Loop
objFile.Close

Set objFile = Nothing
Set objFSO = Nothing

今までも、初期値ファイルは使用していて、取得する項目名とセットする変数を指定するものでした。

最近、SetUMSVariableで、パラメータで指定した変数でなくても、変数に設定できることを学び、このように変更しました。

おかげで、初期値をセットする変数を増やしても、初期値ファイルだけで、スクリプトを変更することがなくなり、とても便利です。

Kouichi 編集済みのコメント
回答とコメントは、会員登録(無料)で閲覧できるようになります。