組み込み定数(列挙体)を自作(?)しておく
組み込み定数(列挙体)を自作(?)しておく
CreateObject派への転向
実は、だいぶ前からCreateObject
派に転向しておりました。
やっぱり、参照設定せずに使えるってのはいいよね、ということで。
CreateObject派になって困ること
いろいろあると思いますが、やはり
組み込み定数(列挙体)が使えねえ!
これに尽きるのではないでしょうか。(異論は認めます。)
なかったら、作ればいいじゃない
そこで、私は、よく使う組み込み定数(列挙体)を自作し(というか、パクッ)ています。
これまでにパクッ完コピした組み込み定数(列挙体)
代表的なものをいくつか紹介します。
基本的に、クラスモジュールとかの中に封印してしまうことが多いのでPrivate
指定ですが、Public
メソッドなんかの引数にするときには、適宜Public
指定に変えてやればいいと思います。
ADODB関係
ADODB.Stream
オブジェクトを扱うときによく使うやつです。
StreamTypeEnum列挙体
Private Enum StreamTypeEnum adTypeBinary = 1 adTypeText = 2 End Enum
SaveOptionsEnum列挙体
Private Enum SaveOptionsEnum adSaveCreateNotExist = 1 'ファイルがあるとき上書きしない' adSaveCreateOverWrite = 2 'ファイルがあるとき上書きする' End Enum
StreamReadEnum列挙体
Private Enum StreamReadEnum adReadAll = -1 adReadLine = -2 End Enum
StreamWriteEnum列挙体
Private Enum StreamWriteEnum adWriteChar = 0 adWriteLine = 1 End Enum
Scripting.FileSystemObject関係
IOMode列挙体
Private Enum IOMode ForReading = 1 ForWriting = 2 ForAppending = 8 End Enum
Tristate列挙体
Private Enum Tristate TristateFalse = 0 TristateTrue = -1 TristateUseDefault = 2 End Enum
おわりに
こんなふうに、代表的な組み込み定数(列挙体)を自作(?)しておけば、たとえばScripting.FileSystemObject
オブジェクトを利用するコードを書いたときに、参照設定していなくても、たとえば次のように読んで意味がわかるように書くことができます。
Set m_TextStream = m_FSO.OpenTextFile(FileName:=a_Path, _ IOMode:=ForReading, _ Create:=True, _ Format:=a_CharCode)
OpenTextFile
メソッドの引数「IOMode
」のところ、IOMode:=1
とか書かれていても、何のことかわからんでしょう?
完コピ自体は、オブジェクト ブラウザー様を見たら誰でもできるので、CreateObject
派の人は、Enum集を作っておけばいいのではないでしょうか。