FSOオブジェクトで「ユーザー定義型は定義されてません」が出る時は?

VBA
スポンサーリンク

発生したエラーの様子

FSOオブジェクトでコードを書いてて、いざ実行しようとしたらエラーが出たんだよ!なんで~???

おやおや・・・どんなエラーだろう?
エラー内容を見てみよう。

なるほど・・・
主に、青い背景になっている部分からエラーが出ていることが分かるね。。

安心して、これはとっても簡単なエラーよ!これは「参照設定」が足りてないからよ。

参照設定とは

簡単に言えば、
VBAで拡張機能を使う
という感じ。
Googleブラウザを使ってる人ならイメージできると思うが、GoogleChromeブラウザ本体に「付属品」(=拡張機能)をつけてパワーアップさせ、ブラウザができることを増やす、というイメージだ。

そしてこのような「ユーザー定義型が定義されていません」というメッセージが出る原因の多くは「参照設定をしていない」ことがほとんどである。

では次に、どんなふうに参照設定をすればいいのかを説明しよう。

参照設定のやり方

まず、FSOオブジェクトに必要な参照設定は「Microsoft Scripting Runtime」である。
これを参照設定画面から探し出して、見つけたらチェックをつけるだけ。

簡単だよね。
もし「ユーザー定義型が定義されていません」というエラーが出る時は、まず参照設定を疑ってみると良い。

最後に:オブジェクトは忘れずに解除しておこう!

ちょっと待って!もう少し気を付けて考えてほしいところがあるの。

今回の記事のテーマとは少しずれるけど、参照設定をしたらそれで終わり、じゃなくて、もう少し気を付けてほしいポイントがある。

オブジェクトを使ったら必ずオブジェクト参照を解除しておく

これはどういうことかというと、SetステートメントでNothingを設定することで、オブジェクト変数と参照先のオブジェクトとの関係が無効になる、というもの。

ただ、これをすることでオブジェクトのメモリ解放ができるかといったらそれは違う。
これについては私がよく分かってないので、後ほど詳しく調べてみたい。

タイトルとURLをコピーしました