オプション設定のタイミング
これはバイナリファイルを使ったオプションの設定である。この考え方はレジストリを使ったオプション設定にも当然あてはまる。
今まではこのオプションの読み込みを次のようにしていた。しかし、この段階でやるのが妥当かどうか。
参考
Private Sub Workbook_Open()
OptionSet
'現在はSetBinOption.basモジュールにある関数である。
End Sub
今まで作ってきたマクロの多くは、ひとつのExcelファイルがひとつの業務に特化したようなものばかりだった。そんなところでは、起動時にこういう形でオプションを読み込むことには意味があった。
しかし、ひとつのExcelファイルの中に多数の種類の違うものが混ざってくると、起動時にオプションの読み込みをする必要はないことになってくる。たとえば「お手軽ツール」であるTools.xlsmでは、(1)全ファイル名の一括変更、(2)連番ファイルの一括作成、(3)フォルダ内の全ファイル列挙型検索などのフォームがある。それぞれが独立したものである。この場合、どのフォームにも共通するオプションはない。Tools.xlsmの起動時にオプションを読み込む必要はないことになる。
むしろ、このオプションの読み込みは、各フォーム単位にしたほうがいいのではないか。それで、このパターンに使える共通の方式というのを作っておくのも悪くはないだろう。
ところで、SetBinOption.basには以下の関数がある。
- Public Function OptionSet()
オプション設定ファイルがあればそれを読み込みオプションを設定して起動する。なければデフォルトの設定で起動する。
- Public Function OptionDefault()
デフォルトの設定である。
- Public Function OptionRead()
オプション設定ファイルの内容を読み込み、その設定をする。
- Public Function OptionWrite()
オプションの設定を変更した場合、その変更をファイルに保存する。
- Public Function IsExistOptFile(ByRef strFile As String) As Boolean
オプション設定ファイルの有無を調べる。
現在の段階では、IsExistOptFile関数は、汎用モジュールとして用意しているFilePath.bas内のIsFileExist関数またはIsFileExist2関数を使えばいいだろう。したがって、この関数はカットしてもよい(すでに削除した)。その場合は当然FilePath.basとペアで使うことになる。
OptionSet関数の読み込みは、各フォームのPrivate Sub UserForm_Initialize()でやればいいだろう(すでにここに設定した)。
メモ
これはバイナリファイルを使ったオプション設定の例である。これ自体に実用価値があるわけではない。これを参考にしてケースバイケースで作っていく必要がある。その時の土台(テンプレート)になるという程度のものである。
- 2017/04/24 -
参考
BinaryOption.frm@Topic1.xlsm
SetBinaryOption.bas@Topic1.xlsm
Unicode,UTF-8,UTF-16,Big,Little,Endian,LE,BE,Shift_JIS,SJIS,CR,LF,CRLF,byte,bit,word,CSV,BOM,Encode,Decode,ANSI,
Binary,Open,Byte,Get,Put,Input,InputB,Asc,AscB,AscW,Chr,ChrB,ChrW,Hex,Mod,EOF,LOF,Loc,FreeFile,ReDim,Encoding,
Left,LeftB,Right,RightB,Mid,MidB,Len,LenB,InStr,InStrB,FileSystemObject,FSO,CreateTextFile,OpenTextFile,Line Input #,
バイナリ,テキスト,文字列,文字コード,16進コード,16進文字列,変換,ビッグ,リトル,エンディアン,ユニコード,改行,サンプル,
バイト,ビット,ヘキサ,2進数,16進数,読み込み,書き込み,エンコード,デコード,解析,変換,判定,判別,バイナリエディタ,
全角,半角,カタカナ,ひらがな,漢字,