はじめに
FileSystemObject (FSO) は、MicrosoftのスクリプトエンジンであるWindows Script Host (WSH) や、 Active Server Pages (ASP) などで使用される外部オブジェクトで、ファイルやフォルダの操作を簡単に行うための機能を提供しています。 FSOを使用することで、ファイルの作成、読み取り、書き込み、削除、フォルダの作成、プロパティの取得などが可能です。
FSOの基本的な使い方や、よく使用するメソッドについて解説します。
使用方法
FSOは外部オブジェクトのため、利用にはひと手間が必要です。 使用方法については、CreateObject関数を使う方法と、参照設定を行う方法の2種類があります。
CreateObject関数を使用する方法
CreateObject関数は、プログラム内で外部のオブジェクトを作成し、 そのオブジェクトを操作するために使われる関数です。
CreateObject関数の使い方はとても簡単です!
Dim fso As Object:Set fso = CreateObject("Scripting.FileSystemObject")
これでインスタンスを簡単に作成できます。
しかし、CreateObject関数を使用する際の注意点が1点あります!
インテリセンス(自動補完機能)が効かなくなる点です。
インテリセンスが効かなくなると、コーディング速度の低下、タイポやシンタックスエラーの増加、
ドキュメント参照の増加といった多くのデメリットが発生します。
この注意点を理解して、CreateObject関数を使う際には、 特に慎重にコーディングを行い、適切なドキュメントを参照しながら進めることが重要です。
参照設定を行う手順
参照設定を行う方法は、いくつか手順を踏む必要があります。
① 開発タブを押下 → VBAを開く
② ツールタブを押下 → 参照設定を押下
③ 「Microsoft Scripting Runtime」を探し出し、チェックを入れてOKを押下
これで参照設定ができました。 参照設定を行うことで、FSOを直接定義できるようになります。
Dim fso As New Scripting.FileSystemObject
使用例
では、実際にどういった処理に使用できるのかコード例とともに見ていきましょう! 今回は、CreateObject関数を使用したコードをご紹介いたします。
フォルダの作成
使用するメソッド:CreateFolderメソッド
フォルダを作成するパスを引数に指定します。
Dim fso As Object:Set fso = CreateObject("Scripting.FileSystemObject") fso.CreateFolder ("C:\Users\○○\Desktop\Test"
ファイル・フォルダの存在確認
使用するメソッド:FileExistsメソッド
存在を確認したいファイル・フォルダのパスを引数に指定します。
Dim fso As Object:Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists("C:\Users\○○\Desktop\Test\test.txt") Then MsgBox "指定のファイルは存在します。"
ファイル・フォルダのコピー
使用するメソッド:CopyFileメソッド
コピー元のファイル・フォルダのパスを第一引数に
コピー後のファイル・フォルダのパスを第二引数に
上書き可否の真偽値を第3引数(省略可、デフォルトはTrue)に指定します。
※第3引数はコピー先に同名のファイルが存在していた場合に上書きするかを決めるオプション
Dim fso As Object:Set fso = CreateObject("Scripting.FileSystemObject") fso.CopyFolder( "C:\Users\○○\Desktop\対象フォルダ" , "C:\Users\○○\Desktop\対象フォルダのコピー")
ファイル・フォルダの移動
使用するメソッド:MoveFileメソッド
移動元のファイル・フォルダのパスを第一引数に
移動後のファイル・フォルダのパスを第二引数に
Dim fso As Object:Set fso = CreateObject("Scripting.FileSystemObject") fso. MoveFile("C:\Users\○○\Desktop\対象フォルダ","C:\Users\○○\Documents\対象フォルダ")
ファイル・フォルダの削除
使用するメソッド:DeleteFileメソッド
削除したいファイルパスを第一引数に
読み取り専用ファイルの削除可否の真偽値を第二引数(省略可、デフォルトはFalse)に指定します。
Dim fso As Object:Set fso = CreateObject("Scripting.FileSystemObject") fso.DeleteFile("C:\Users\○○\Desktop\Test")
最後に
今回は、ファイルやフォルダを操作する専用のオブジェクトFileSystemObjectについて解説しました。
FileSystemObjectは、VBA開発において頻繁に使われる重要なオブジェクトです。
複雑なファイル操作を自動化する際には欠かせないツールです。
ぜひ、VBA開発の際にはFileSystemObjectを活用してみてください。