VB6 リファレンス お品書き へ戻ります
Visual Basic6 リファレンス


VB6 ファイル操作
FileSystemObjectのファイルやフォルダ操作、WindowsフォルダやSystemフォルダ等の取得、ファイル/フォルダ情報の設定/取得。

[参照設定]
Microsoft Scripting Runtime (scrrun.dll)

[変数宣言]
Dim fs As New Scripting.FileSystemObject
Dim f As File
Dim fo As Folder
Dim d As Drive

お品書き
FileSystemObject
● サンプルファイル移動のサンプル プログラムリスト
● CopyFileファイルのコピー
● DeleteFileファイルの削除
● FileExistsファイルの削除
● MoveFileファイルの移動
● GetSpecialFolder特殊フォルダ(Windows,System,Temp)のパス名を取得
● GetTempName一時ファイル名をランダムに生成
File
● Attributesファイルの属性を設定/取得
● DateLastAccessed最後にアクセスされたときの日付と時刻を取得
● DateLastModified最後に更新されたときの日付と時刻を取得
● Driveドライブの名前を取得
● Nameファイルの名前を設定/取得
● ParentFolderファイルが格納されているフォルダを取得
● Pathファイルのパスを取得
● ShortName従来の8.3形式のファイル名を取得
● ShortPath従来の8.3形式のパス名を取得
● Sizeファイルサイズを取得
● Typeファイルの種類に関する情報を取得
Folder
● Attributesフォルダの属性を設定/取得
● DateLastAccessed最後にアクセスされたときの日付と時刻を取得
● DateLastModified最後に更新されたときの日付と時刻を取得
● IsRootFolderフォルダがルートフォルダかどうか
● Nameフォルダの名前を設定/取得
● ParentFolderフォルダが格納されているフォルダを取得
● Pathフォルダのパスを取得
● ShortName従来の8.3形式のフォルダ名を取得
● ShortPath従来の8.3形式のパス名を取得
● Sizeフォルダ内のすべてのファイル合計サイズを取得
● Typeフォルダの種類に関する情報を取得
Drive
● AvailableSpace使用できるディスク容量を取得
● DriveLetterドライブ名を取得
● DriveTypeドライブの種類を取得
● FileSystemファイルシステムの種類を取得
● FreeSpace使用できるディスクの空き境域を取得
● IsReadyドライブの準備ができているかどうか
● Pathドライブのパスを取得
● RootFolderドライブのルートフォルダを取得
● SerialNumberディスクボリュームを一意に識別するシリアル番号を取得
● ShareNameドライブのネットワーク共有名を取得
● TotalSizeドライブの総容量を取得
● VolumeNameドライブのボリューム名を設定/取得


● ファイル移動のサンプル その1

Private Sub Sample1()

    Dim fs As New Scripting.FileSystemObject

    'ファイルを移動する1
    If (fs.FileExists("c:¥work¥test.txt")) Then         'コピー元ファイルあり
        fs.CopyFile "c:¥work¥test.txt", "c:¥temp¥"    '上書きファイルコピー
        fs.DeleteFile "c:¥work¥test.txt", True           'コピー元ファイル削除
    End If

End Sub

● ファイル移動のサンプル その2

Private Sub Sample2()

    Dim fs As New Scripting.FileSystemObject

    'ファイルを移動する2
    If (fs.FileExists("c:¥work¥test1.txt")) Then        '移動元ファイルあり
        If (fs.FileExists("c:¥temp¥test1.txt")) Then    '移動先ファイルあり
            fs.DeleteFile "c:¥temp¥test1.txt", True      '移動先ファイル削除
        End If
        fs.MoveFile "c:¥work¥test1.txt", "c:¥temp¥"   'ファイル移動
    End If

End Sub


● CopyFile メソッド
【機能】ファイルを別の場所へコピーします。
【書式】fs.CopyFile コピー元 , コピー先 [,上書きモード]
上書きモード説明
True同名ファイルがあれば、上書きする。(デフォルト)
False同名ファイルがあれば、上書きしない。
【 例 】Dim fs As New Scripting.FileSystemObject
fs.CopyFile "c:¥work¥test.txt" , "c:¥temp¥test.txt"
【 例 】Dim fs As New Scripting.FileSystemObject
fs.CopyFile "c:¥work¥test.txt" , "c:¥temp¥"
【 例 】Dim fs As New Scripting.FileSystemObject
fs.CopyFile "c:¥work¥*.txt" , "c:¥temp¥"
【 例 】Dim fs As New Scripting.FileSystemObject
fs.CopyFile "c:¥work¥*.txt" , "c:¥temp"

  ※ コピー元のファイルが存在しなければ、エラーが発生します。
  ※ 上書きしないの指定でコピー先に同名のファイルが存在した場合は、エラーが発生します。
  ※ コピー先に同名の読取専用ファイルが存在した場合は、エラーが発生します。


● DeleteFile メソッド
【機能】指定されたファイルを削除します。
【書式】fs.DeleteFile ファイル名 [,削除モード]
削除モード説明
True読取専用ファイルも削除する。
False読取専用ファイルは削除しない。(デフォルト)
【 例 】Dim fs As New Scripting.FileSystemObject
fs.DeleteFile "c:¥work¥test.txt" , True
【 例 】Dim fs As New Scripting.FileSystemObject
fs.DeleteFile "c:¥work¥test*" , True
【 例 】Dim fs As New Scripting.FileSystemObject
fs.DeleteFile "c:¥work¥*" , True

  ※ 指定ファイルが存在しなければ、エラーが発生します。
  ※ 読取専用ファイルは削除しないの指定で読取専用ファイルを削除しようとした場合は、エラーが発生します。


● FileExists メソッド
【機能】ファイルが存在するかどうかを返します。
【書式】result = fs.FileExists ( ファイル名 )
【戻り値】True
False
存在する。
存在しない。
【 例 】Dim fs As New Scripting.FileSystemObject
result = fs.FileExists ( "test.txt" )
【 例 】Dim fs As New Scripting.FileSystemObject
fs.FileExists ( "c:¥work¥test.txt" )
【 例 】Dim fs As New Scripting.FileSystemObject
fs.FileExists ( "..¥test.txt" )

  ※ パスを指定しなければカレントフォルダを調べます。


● MoveFile メソッド
【機能】ファイルを別の場所へ移動します。
【書式】fs.MoveFile 移動元 , 移動先
【 例 】Dim fs As New Scripting.FileSystemObject
fs.MoveFile "c:¥work¥test.txt" , "c:¥temp¥test.txt"
【 例 】Dim fs As New Scripting.FileSystemObject
fs.MoveFile "c:¥work¥test.txt" , "c:¥temp¥"
【 例 】Dim fs As New Scripting.FileSystemObject
fs.MoveFile "c:¥work¥*.txt" , "c:¥temp¥"
【 例 】Dim fs As New Scripting.FileSystemObject
fs.MoveFile "c:¥work¥*.txt" , "c:¥temp"

  ※ 移動元のファイルが存在しなければ、エラーが発生します。
  ※ 移動先に同名のファイルが存在した場合は、エラーが発生します。


● GetSpecialFolder メソッド
【機能】指定した特殊フォルダ(Windows,System,Temp)を返します。
【書式】result = fs.GetSpecialFolder (特殊フォルダの種類)
特殊フォルダの種類(数値)説明
WindowsFolder0Windowsフォルダが返されます。
SystemFolder1Systemフォルダが返されます。
TemporaryFolder2Tempフォルダが返されます。このパスは、環境変数 TMP より取得します。
【 例 】Dim fs As New Scripting.FileSystemObject
result = fs.GetSpecialFolder(WindowsFolder)
【 例 】Dim fs As New Scripting.FileSystemObject
result = fs.GetSpecialFolder(SystemFolder)
【 例 】Dim fs As New Scripting.FileSystemObject
result = fs.GetSpecialFolder(TemporaryFolder)


● GetTempName メソッド
【機能】一時ファイル名をランダムに生成して返します。
【書式】result = fs.GetTempName
【 例 】Dim fs As New Scripting.FileSystemObject
result = fs.GetTempName
【実行例】rad20591.tmp
rad63202.tmp
radB1C61.tmp


● Attributes プロパティ
【機能】ファイルまたはフォルダの属性を設定します。値の取得も可能です。
【書式】
【書式】
attributes = f.Attributes
f.Attributes = attributes
attributes(数値)説明
Normal0標準ファイル。どの属性も設定されません。
ReadOnly1読み取り専用ファイル。この属性は、値の取得も設定も可能です。
Hidden2隠しファイル。この属性は、値の取得も設定も可能です。
System4システム ファイル。この属性は、値の取得も設定も可能です。
Volume8ディスク ドライブ ボリューム ラベル。この属性は、値の取得のみ可能です。
Directory16フォルダまたはディレクトリ。この属性は、値の取得のみ可能です。
Archive32ファイルが前回のバックアップ以降に変更されているかどうか。この属性は、値の取得も設定も可能です。
Alias64リンクまたはショートカット。この属性は、値の取得のみ可能です。
Compressed128圧縮ファイル。この属性は、値の取得のみ可能です。
※ attributes は 複数の定数を組み合わせて、値の和を指定することもできます。
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim f As File
Set f = fs.GetFile("C:¥TEST¥SAMPLE.TXT")
f.Attributes = f.Attributes - Archive      'ファイル属性の変更
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim fo As Folder
Set fo = fs.GetFolder("C:¥TEST¥")
Debug.Print fo.Attributes      'フォルダ属性


● DateLastAccessed プロパティ
【機能】最後にアクセスされたときの日付と時刻を返します。
【書式】result = f.DateLastAccessed
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim f As File
Set f = fs.GetFile("C:¥TEST¥SAMPLE.TXT")
Debug.Print f.DateLastAccessed      'ファイルの最終アクセス日付
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim fo As Folder
Set fo = fs.GetFolder("C:¥TEST¥")
Debug.Print fo.DateLastAccessed      'フォルダの最終アクセス日付


● DateLastModified プロパティ
【機能】最後に更新されたときの日付と時刻を返します。
【書式】result = f.DateLastModified
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim f As File
Set f = fs.GetFile("C:¥TEST¥SAMPLE.TXT")
Debug.Print f.DateLastModified      'ファイルの最終更新日付
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim fo As Folder
Set fo = fs.GetFolder("C:¥TEST¥")
Debug.Print fo.DateLastModified      'フォルダの最終更新日付


● Drive プロパティ
【機能】指定されたファイルまたはフォルダが格納されているドライブの名前を返します。
【書式】result = f.Drive
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim f As File
Set f = fs.GetFile("C:¥TEST¥SAMPLE.TXT")
Debug.Print f.Drive      'ファイルのドライブの名前(Ex:"C:")
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim fo As Folder
Set fo = fs.GetFolder("C:¥TEST¥")
Debug.Print fo.Drive      'フォルダのドライブの名前(Ex:"C:")


● IsRootFolder プロパティ
【機能】指定されたフォルダがルートフォルダの場合は、true を返します。ルートフォルダでなければ、False を返します。
【書式】result = fo.IsRootFolder
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim fo As Folder
Set fo = fs.GetFolder("C:¥TEST¥")
If (fo.IsRootFolder) Then
    MsgBox "ルートフォルダです。"
End If


● Name プロパティ
【機能】指定されたファイルまたはフォルダの名前を設定します。値の取得も可能です。
【書式】
【書式】
result = f.Name
f.Name = newname
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim f As File
Set f = fs.GetFile("C:¥TEST¥SAMPLE.TXT")
Debug.Print f.Name      'ファイル名(Ex:"SAMPLE.TXT")
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim fo As Folder
Set fo = fs.GetFolder("C:¥TEST¥WORK¥")
Debug.Print fo.Name      'フォルダ名(Ex:"WORK")


● ParentFolder プロパティ
【機能】指定されたファイルまたはフォルダが格納されているフォルダを表す Folder オブジェクトを返します。値の取得のみ可能です。
【書式】result = f.ParentFolder
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim f As File
Set f = fs.GetFile("..¥SAMPLE.TXT")
Debug.Print f.ParentFolder      'ファイルのフォルダ名(Ex:"C:¥TEST¥WORK")
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim fo As Folder
Set fo = fs.GetFolder("C:¥TEST¥WORK¥")
Debug.Print fo.ParentFolder      '親フォルダ名(Ex:"C:¥TEST")


● Path プロパティ
【機能】指定されたファイル、フォルダ、またはドライブのパスを返します。
【書式】result = f.Path
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim f As File
Set f = fs.GetFile("..¥SAMPLE.TXT")
Debug.Print f.Path      'ファイルのパス(Ex:"C:¥TEST¥SAMPLE.TXT")
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim fo As Folder
Set fo = fs.GetFolder("C:¥TEST¥")
Debug.Print fo.Path      'フォルダのパス(Ex:"C:¥TEST")
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim d As Drive
Set d = fs.GetDrive("C:")
Debug.Print d.Path      'ドライブのパス(Ex:"C:")


● ShortName プロパティ
【機能】従来の 8.3 形式のファイル名が必要なプログラムのために、短いファイル名を返します。
【書式】result = f.ShortName
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim f As File
Set f = fs.GetFile("C:¥TEST¥SAMPLESAMPLE.TXT")
Debug.Print f.ShortName      'ファイル名(Ex:"SAMPLE~1.TXT")
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim fo As Folder
Set fo = fs.GetFolder("C:¥Program Files¥Common Files¥")
Debug.Print fo.ShortName      'フォルダ名(Ex:"COMMON~1")


● ShortPath プロパティ
【機能】従来の 8.3 形式のファイル名が必要なプログラムのために、短いパス名を返します。
【書式】result = f.ShortPath
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim f As File
Set f = fs.GetFile("C:¥Program Files¥SAMPLESAMPLE.TXT")
Debug.Print f.ShortPath      'パス名(Ex:"C:¥PROGRA~1¥SAMPLE~1.TXT")
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim fo As Folder
Set fo = fs.GetFolder("C:¥Program Files¥Common Files¥")
Debug.Print fo.ShortPath      'パス名(Ex:"C:¥PROGRA~1¥COMMON~1")


● Size プロパティ
【機能】ファイルの場合、指定されたファイルのバイト単位のサイズを返します。フォルダの場合、指定されたフォルダ内のすべてのファイルおよびフォルダの合計サイズをバイト単位で返します。
【書式】result = f.Size
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim f As File
Set f = fs.GetFile("C:¥TEST¥SAMPLE.TXT")
Debug.Print f.Size      'ファイルサイズ
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim fo As Folder
Set fo = fs.GetFolder("C:¥TEST¥")
Debug.Print fo.Size      'フォルダ内のファイルサイズ合計


● Type プロパティ
【機能】ファイルまたはフォルダの種類に関する情報を返します。たとえば、名前が .TXT の拡張子で終わるファイルの場合なら、"テキスト文書" という文字列が返されます。
【書式】result = f.Type
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim f As File
Set f = fs.GetFile("C:¥TEST¥SAMPLE.TXT")
Debug.Print f.Type      'ファイル情報(Ex:"テキスト ドキュメント")
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim fo As Folder
Set fo = fs.GetFolder("C:¥TEST¥")
Debug.Print fo.Type      'フォルダ情報(Ex:"ファイル フォルダ")


● AvailableSpace プロパティ
【機能】指定されたドライブまたはネットワーク共有でユーザーが使用できるディスク容量を返します。
【書式】result = d.AvailableSpace
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim d As Drive
Set d = fs.GetDrive("C:")
Debug.Print d.AvailableSpace      '空き容量(バイト)


● DriveLetter プロパティ
【機能】物理ローカル ドライブまたはネットワーク共有のドライブ名を返します。
【書式】result = d.DriveLetter
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim d As Drive
Set d = fs.GetDrive("C:")
Debug.Print d.DriveLetter      'ドライブ名(Ex:"C")

  ※ 指定したドライブにドライブ名が関連付けられていなかった場合はヌルストリング("") が返ります。


● DriveType プロパティ
【機能】ドライブの種類を示す値を返します。
【書式】drivetype = d.DriveType
drivetype説明
0不明
1リムーバブル ディスク
2ハード ディスク
3ネットワーク ドライブ
4CD-ROM
5RAM ディスク
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim d As Drive
Set d = fs.GetDrive("C:")
Debug.Print d.DriveType      'ドライブの種類(0〜5)


● FileSystem プロパティ
【機能】ファイル システムの種類を返します。
【書式】result = d.FileSystem
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim d As Drive
Set d = fs.GetDrive("C:")
Debug.Print d.FileSystem      'ドライブの種類("FAT", "NTFS", "CDFS")


● FreeSpace プロパティ
【機能】使用できるディスクの空き境域を返します。
【書式】result = d.FreeSpace
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim d As Drive
Set d = fs.GetDrive("C:")
Debug.Print d.FreeSpace      'ディスクの空き境域
  ※ FreeSpaceプロパティは AvailableSpaceプロパティと同じ値を返します。これらの 2つの値が異なる可能性があるのは、ディスククォータ機能をサポートしている場合です。


● IsReady プロパティ
【機能】ドライブの準備ができている場合は True を返します。準備ができてない場合は False を返します。
【書式】result = d.IsReady
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim d As Drive
Set d = fs.GetDrive("A:")
If (Not d.IsReady) Then
    MsgBox "ドライブの準備ができていません。"
End If


● RootFolder プロパティ
【機能】指定されたドライブのルートフォルダを表す Folder オブジェクトを返します。値の取得のみ可能です。
【書式】result = d.RootFolder
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim d As Drive
Set d = fs.GetDrive("C:")
Debug.Print d.RootFolder      'ルートフォルダ(Ex:"C:¥")


● SerialNumber プロパティ
【機能】ディスクボリュームを一意に識別する小数のシリアル番号を返します。
【書式】result = d.SerialNumber
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim d As Drive
Set d = fs.GetDrive("C:")
Debug.Print d.SerialNumber      'シリアル番号

  ※ SerialNumber プロパティを使用して、リムーバブルメディアのドライブに正しいディスクが挿入されたことを確認できます。


● ShareName プロパティ
【機能】ドライブのネットワーク共有名を返します。
【書式】result = d.ShareName
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim d As Drive
Set d = fs.GetDrive("C:")
Debug.Print d.ShareName      'ネットワーク共有名

  ※ ネットワークドライブでないドライブを指定すると、ヌルストリング("") が返されます。


● TotalSize プロパティ
【機能】ドライブまたはネットワーク共有の総容量をバイト単位で返します。
【書式】result = d.TotalSize
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim d As Drive
Set d = fs.GetDrive("C:")
Debug.Print d.TotalSize      '総容量


● VolumeName プロパティ
【機能】指定されたドライブのボリューム名を設定または返します。値の取得も可能です。
【書式】
【書式】
result = d.VolumeName
d.VolumeName = newname
【 例 】 Dim fs As New Scripting.FileSystemObject
Dim d As Drive
Set d = fs.GetDrive("C:")
Debug.Print d.VolumeName      'ボリューム名