ファイルシステムオブジェクト(FileSystemObject)
FileSystemObject(FSO)を利用するとファイル、フォルダ、ドライブの様々な操作を行うことができます。
FileSystemObject(FSO)を利用するには、Microsoft Scripting Runtime を参照設定するか、CreateObject 関数 を使用します。
なお、FileSystemObject の場合、使用後の解放( Set FSO = Nothing とか)は不要のようです(たぶん)。つけている方もいらっしゃるので、気になる方はつけてください。
FileSystemObject(FSO)を利用する1
Microsoft Scripting Runtime を参照設定します。
- VBE(Visual Basic Editor) を起動し、[ツール] – [参照設定] をクリックします。
- 「参照設定」ダイアログボックスが表示されるので、スクロールバーを動かし、「Microsoft Scripting Runtime」を表示し、チェックマークを付けて、「OK」ボタンをクリックします。
【書式】
<FileSystemObject のインスタンス生成>
Dim fso As New FileSystemObject
引数・戻り値
- fso ・・・ 任意の名前( FileSystemObject オブジェクト の変数名)を指定します。
FileSystemObject(FSO)を利用する2
参照設定を行わず、CreateObject 関数を使って、FileSystemObject(FSO) を利用します。
ただし、この方法の場合、参照設定を行った場合と比べて実行速度が遅くなります。また、VBE(Visual Basic Editor)の入力支援機能を使用することはできません。
【書式】
<FileSystemObject のインスタンス生成>
Dim fso [ As Object ]
Set fso = CreateObject(“Scripting.FileSystemObject”)
引数・戻り値
- fso ・・・ 任意の名前( FileSystemObject オブジェクト の変数名)を指定します。
FSO 使用例
サンプルVBAソース 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub Sample01_FSO() 'ファイルが存在するかどうかを確認する Dim FSO As New FileSystemObject Dim FileName As String FileName = "C:\Documents\memo01.txt" If FSO.FileExists(FileName) Then MsgBox FileName & " は存在します" Else MsgBox FileName & " は存在しません" End If End Sub |
実行結果 1
サンプルVBAソース 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Sub Sample02_FSO() '指定したフォルダー内のすべてのファイルの名前を取得する Dim FSO As Object Dim TargetFolder As Object Dim myFiles As Object Dim myFile As Object Dim strFiles As String Set FSO = CreateObject("Scripting.FileSystemObject") Set TargetFolder = FSO.GetFolder("C:\Documents\data") Set myFiles = TargetFolder.Files If myFiles.Count = 0 Then MsgBox "ファイルは見つかりませんでした" Exit Sub End If For Each myFile In myFiles strFiles = strFiles & myFile.Name & vbCrLf Next MsgBox strFiles End Sub |