組み込み定数(列挙体)を自作(?)しておく

組み込み定数(列挙体)を自作(?)しておく

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集を作っておけばいいのではないでしょうか。