ITサポーターTsuchida

VBA Advance1

第1章 ファイルシステムオブジェクト

Excel VBA実践編では、ワークブックやCSVファイルの処理を解説してきました。実践編では、ワークブックやCSVファイルのファイルの名前が正しいことを前提にしていました。

ExcelのVBAを使って行う処理は自動処理なので、ファイル名が決まっているとは限りません。しかも保存する場合に、上書きされては困ることはよくあります。そのため、ファイルやフォルダが存在しているかどうかを調べることはよくあります。

ファイルシステムオブジェクトを使うと、ファイルやフォルダの多くの操作が可能になります。ファイルやフォルダに対して様々な想定をしておくことで、より使いやすいVBAでの自動処理が作成することができます。SEやプログラマを経験するとこの想定はなじみがあるのですが、プログラムに慣れない方は想定が甘くなりがちです。この想定ができるようになるとかなり上級者になります。

そもそもファイルシステムオブジェクトとは?

ファイルシステムオブジェクトというと難しそうなイメージで、横文字が嫌いな人からすると言葉を聞いただけで嫌になりそうです。

ファイルシステムオブジェクトは、ExcelのVBAからエクスプローラ画面でファイルを操作するのとほぼ同じだと思ってください。Windowsを使ってファイルを開いたり、コピーする場合にはエクスプローラを使いますが、VBAからはファイルシステムオブジェクトで行います。

MkdirステートメントやDir関数との違い

Excel95の頃はファイルやフォルダの操作にMkdirステートメントやDir関数などを使っていました。これらは現在でも使用可能ですが、あまり使われません。何故でしょうか?

Windows95の頃のファイルシステムはFAT(File Allocation Table)を使っていて、ファイルやフォルダの操作が単純だったのです。Windows2000の頃からファイルシステムはNTFSになりMFT(Master File Table)を使うようになりました。ファイルやフォルダにアクセス権が設定できるようになったのは、MFTを使うようになってからです。

Windows版のExcelのVBAのファイルシステムオブジェクトは、MFTに対してファイルやフォルダを行う操作だと思っていただければいいです。そのため、MkdirステートメントやDir関数が使用可能でも、今はファイルシステムオブジェクトを使用します。