和風スパゲティのレシピ

日本語でコーディングするExcelVBA

Scripting Runtime の参照設定方法

DictionaryやFileSystemObjectを使用するためには、
以下の二つの方法があります。

1.Object変数にCreateObject関数を使って代入

Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim 辞書 As Object
Set 辞書 = CreateObject("Scripting.Dictionary")

 
2.Scripting Runtimeを参照設定して専用の変数を宣言

Dim FSO As New FileSystemObject
Dim 辞書 As New Dictionary


後者の宣言を行うため必要となるライブラリ、
Scripting Runtimeの参照を設定する方法を解説します。

Scripting Runtime の参照設定手順

「Microsoft Scripting Runtime」は以下の手順で参照設定ができます。

1.VBEのツールバーより「ツール ⇒ 参照設定」を選択
ツール⇒参照設定


2.参照設定ウィンドウにて「Microsoft Scripting Runtime」を探す
Microsoft Scripting Runtimeを探す
※ アルファベット順です。真ん中のあたりにあります。
※ SではなくMですのでご注意ください。


3.レ点チェックを入れて「OK」
Microsoft Scripting Runtimeにチェックを入れてOK

以上で参照設定が完了します。


この参照設定はブックごとの設定になりますので、
DictionaryやFSOを利用するすべてのブックでこの設定を行う必要があります。

Scripting Runtimeの検索を簡単にする方法

慣れれば10秒かからず設定できると思いますが、
リストから「Microsoft Scripting Runtime」を探すのがちょっと面倒です。


この対策として、
既に参照済みのブックを開いていると選択肢が最上部に移動する
という仕様を覚えておきましょう。


Scripting Runtimeを参照した別のブックを開いていると、
↓のように、レ点はないけどすぐそこにある状態になります。
別ブックのScripting Runtime参照がある場合

これなら2~3秒で設定が終わります。


特に「個人用マクロブック」など常に開くブックで参照しておくと、
常時この状態になってとても便利です。

Dictionary&FSOサンプルコード集.xlsm」みたいなファイルを作り、
コピペ用コードを調べるついでに参照設定の補助にも使うのもおすすめです。

参照設定のメリット

Scripting Runtimeを参照設定するメリットとしては、
やはり「As FileSystemObject」「As Dictionary」と、
データの型をはっきりと明示できることが大きいです。


Object型では間違って別の何かを代入してしまう恐れもありますし、
なにより、
Dictionaryのインテリセンス
FileSystemObjectのメンバー候補
これらの選択肢入力ができるというのが型指定の最大のメリットです。

特にFileSystemObjectは階層型オブジェクトのため、
これがあるとないとではコーディング効率が全然違います。


また、入力候補が出る=VBAが候補を把握しているということであり、
間違ったメソッド・プロパティを打ってしまった際エラーで教えてくれる
というのも非常に強力なメリットになります。

※ データ型を明示している場合は構文エラーのためコンパイルで分かるが、
Object型の場合は実行時エラーのためその行が実行されるまでわからない。


対してObject型変数にCreateObject関数を使って代入するメリットですが、
こちらは「コードをコピペしただけで動く」というのが大きいです。

どちらかと言えばコードを公開する側のメリットという側面が強いですね。


ネット上のコードは「コピペで動く」ことを重視しているものが多いため、

Set FSO = CreateObject("Scripting.FileSystemObject")
Set 辞書 = CreateObject("Scripting.Dictionary")

と記載されているコードの方が多い印象があります。


しかしDictionaryやFileSystemObjectを学習して自分でコーディングするなら、
「As FileSystemObject」「As Dictionary」の明示は絶対やった方がよいです。


慣れれば数秒の設定ですので、
DictionaryやFSOはScripting Runtimeを参照して使用しましょう。


なお、この設定はマクロから実行することも可能です。

マクロブックの生成時に自動参照を行いたい場合は、
以下の記事を参考にして下さい。