wrote :: 2005.01.18

トップページ > Excel > VBA > FileSystemObject > Folderオブジェクト


Folderオブジェクト

Folderオブジェクトはフォルダを表します。Folderオブジェクトの集合はFoldersコレクションです。FoldersコレクションのプロパティはCountプロパティとItemプロパティだけで、メソッドはありません。Folderオブジェクトには次のプロパティとメソッドが用意されています。

プロパティ
Attributesフォルダの属性を設定します
DateCreatedフォルダが作成された日付と時刻を返します
DateLastAccessedフォルダが最後にアクセスされたときの日付と時刻を返します
DateLastModifiedフォルダが最後に更新されたときの日付と時刻を返します
Driveフォルダが存在するドライブの名前を返します
Filesフォルダ内の全てのファイルを返します
IsRootFolderフォルダがルートフォルダかどうかを返します
Nameフォルダの名前を設定します
ParentFolderフォルダの親フォルダを返します
Pathフォルダのパスを返します
ShortNameフォルダの8.3形式の名前を返します
ShortPathフォルダの8.3形式のパスを返します
Sizeフォルダ内の全てのファイルサイズ合計を返します
SubFoldersフォルダ内の全てのサブフォルダを返します
Typeフォルダの種類を返します
メソッド
Copyフォルダをコピーします
CreateTextFile新しいテキストファイルを作成します
Deleteフォルダを削除します
Moveフォルダを移動します



・Attributesプロパティ - 書式:Folder.Attributes

フォルダの属性を設定/取得します。
属性を操作するときは次の値を使います。

属性
0標準ファイル
1読み取り専用ファイル
2隠しファイル
4システムファイル
8ディスクドライブボリュームラベル(取得のみ可能)
16フォルダまたはディレクトリ(取得のみ可能)
32アーカイブファイル
64リンクまたはショートカット(取得のみ可能)
128圧縮ファイル(取得のみ可能)

属性を設定するときは、設定したい属性を表す値の合計をAttributesプロパティに設定します。たとえば「読み取り専用」と「隠しフォルダ」の属性を設定するときは、Attributes = 1 + 2 または Attributes = 3とします。
取得した属性の種類を判定するときは、返り値の数値と、属性を表す値の論理和をAnd演算子でとります。たとえば「読み取り専用」の「フォルダ」かどうかをは、Attributes And 1 + 2 または Attributes And 3がTrueかどうかを調べます。
Sub test38()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Workフォルダに「読み取り専用」「隠しフォルダ」の属性を設定します
    If Not FSO.GetFolder("C:\Work").Attributes And (1 + 2) Then
        FSO.GetFolder("C:\Work").Attributes = 1 + 2
    End If
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・DateCreatedプロパティ - 書式:Folder.DateCreated

フォルダが作成された日付と時刻を返します。
返り値は文字列です。
Sub test39()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Workフォルダが作成された日時を表示します
    MsgBox FSO.GetFolder("C:\Work").DateCreated
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・DateLastAccessedプロパティ - 書式:Folder.DateLastAccessed

フォルダが最後にアクセスされたときの日付と時刻を返します。
返り値は文字列です。
Sub test40()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Workフォルダに最後にアクセスした日時を表示します
    MsgBox FSO.GetFolder("C:\Work").DateLastAccessed
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・DateLastModifiedプロパティ - 書式:Folder.DateLastModified

フォルダが最後に更新されたときの日付と時刻を返します。
返り値は文字列です。
Sub test41()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Workフォルダが最後に更新された日時を表示します
    MsgBox FSO.GetFolder("C:\Work").DateLastModified
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Driveプロパティ - 書式:Folder.Drive

フォルダが存在するドライブの名前を返します。
Sub test42()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「C:」を表示します
    MsgBox FSO.GetFolder("C:\Work").Drive
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Filesプロパティ - 書式:Folder.Files

フォルダ内に存在する全てのファイルを返します。
返り値は全てのFileオブジェクトを含むFilesコレクションです。
Sub test43()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Workフォルダ内に保存されているファイルの個数を表示します
    MsgBox FSO.GetFolder("C:\Work").Files.Count
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・IsRootFolderプロパティ - 書式:Folder.IsRootFolder

フォルダがルートフォルダかどうかをTrueまたはFalseで返します。
Sub test44()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''ルートフォルがどうかを表示します
    If FSO.GetFolder("C:\Work").IsRootFolder Then
        MsgBox "ルートフォルダです"
    Else
        MsgBox "ルートフォルダではありません"
    End If
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Nameプロパティ - 書式:Folder.Name

フォルダの名前を設定/取得します。
すでに存在する同じ名前に設定しようとするとエラーになります。
Sub test45()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Workフォルダの名前をWork2に変更します
    FSO.GetFolder("C:\Work").Name = "Work2"
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・ParentFolderプロパティ - 書式:Folder.ParentFolder

フォルダの親フォルダ名を返します。
Sub test46()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「C:\Work」を表示します
    MsgBox FSO.GetFolder("C:\Work\Sub").ParentFolder
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Pathプロパティ - 書式:Folder.Path

フォルダのパスを返します。
Sub test47()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「C:\Work」を表示します
    MsgBox FSO.GetFolder("C:\Work").Path
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・ShortNameプロパティ - 書式:Folder.ShortName

8.3形式のフォルダ名を返します。
8.3形式のフォルダ名では空白が使用できず、半角で8文字までしか使用できません。
Sub test48()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「MICROS~2」と表示されます
    MsgBox FSO.GetFolder("C:\Program Files\Microsoft Office").ShortName
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・ShortPathプロパティ - 書式:Folder.ShortPath

8.3形式のパスを返します。
8.3形式のフォルダ名では空白が使用できず、半角で8文字までしか使用できません。
Sub test49()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「C:\PROGRA~1\MICROS~2」と表示されます
    MsgBox FSO.GetFolder("C:\Program Files\Microsoft Office").ShortPath
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Sizeプロパティ - 書式:Folder.Size

フォルダ内に存在する全てのファイルの合計サイズを返します。
Sub test50()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Workフォルダ内の全ファイルの合計サイズを表示します
    MsgBox FSO.GetFolder("C:\Work").Size
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・SubFoldersプロパティ - 書式:Folder.SubFolders

フォルダ内に存在する全てのサブフォルダを返します。
返り値は全てのFolderオブジェクトを含むFoldersコレクションです。
Sub test51()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Workフォルダ内に存在するサブフォルダの個数を表示します
    MsgBox FSO.GetFolder("C:\Work").SubFolders.Count
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Typeプロパティ - 書式:Folder.Type

フォルダの種類を返します。
Sub test52()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「ファイル フォルダ」と表示されます
    MsgBox FSO.GetFolder("C:\Work").Type
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Copyメソッド - 書式:Folder.Copy destination[, overwrite]

フォルダまたはフォルダ内の全ファイルをコピーします。
引数destinationにはコピー先のパスを指定します。引数destinationの最後に\がないときは、コピー元フォルダ内存在する全ファイルを引数destinationで指定したフォルダにコピーします。引数destinationの最後が\で終わるときは、コピー元フォルダを引数destinationで指定したフォルダのサブフォルダとしてコピーします。
引数overwriteは省略可能です。Trueを指定すると既存のフォルダやファイルを上書きします。Falseを指定すると上書きせずにエラーになります。省略するとTrueが指定されたとみなされます。
FolderオブジェクトのCopyメソッドは、FileSystemObjectオブジェクトのCopyFolderメソッドと同じ働きをします。
Sub test53()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Workフォルダ内の全ファイルをC:\Tmpフォルダにコピーします
    FSO.GetFolder("C:\Work").Copy "C:\Tmp"
    ''C:\WorkフォルダをC:\Tmpフォルダのサブフォルダとしてコピーします
    FSO.GetFolder("C:\Work").Copy "C:\Tmp\"
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・CreateTextFileメソッド - 書式:Folder.CreateTextFile(filename[, overwrite[, unicode]])

指定したファイル名を作成し、TextStreamオブジェクトを返します。
引数filenameには作成するファイル名を指定します。
引数overwriteは省略可能です。すでに同名ファイルが存在した場合に上書きするときはTrueを指定します。省略するとTrueとみなされます。
引数unicodeは省略可能です。Trueを指定するとUnicodeで作成します。Falseを指定するとASCIIファイルを作成します。省略するとFalseとみなされます。
引数overwriteにFalseを指定した場合、引数filenameに存在するファイル名を指定するとエラーになります。
CreateTextFileメソッドを実行すると、サイズ0のテキストファイルがただちに作成されます。
FolderオブジェクトのCreateTextFileメソッドは、FileSystemObjectオブジェクトのCreateTextFileメソッドと同じ働きをします。
Sub test54()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\WorkフォルダにSample.txtを作成して現在の日時を書き込みます
    With FSO.GetFolder("C:\Work").CreateTextFile("Sample.txt")
        .WriteLine Now
    End With
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Deleteメソッド - 書式:Folder.Delete force

指定したフォルダと、そのフォルダ内の全てのファイルを削除します。
引数folderspecには削除するフォルダの名前を指定します。存在しないフォルダ名を指定するとエラーになります。フォルダが存在するかどうか調べるには、FileSystemObjectオブジェクトのFolderExistsメソッドを使います。
引数forceは省略可能です。Trueを指定すると読み取り専用ファイルも削除されます。省略するとFalseとみなされます。
Deleteメソッドは、まずフォルダ内の全てのファイルを削除してからフォルダを削除しようとします。フォルダ内に読み取り専用ファイルが存在し、引数forceにFalseを指定した場合、読み取り専用ファイルを削除しようとした時点でエラーが発生します。エラーが発生する前に、読み取り専用でないファイルが削除されることもあります。ちなみに、存在しないフォルダ名を指定したときのエラーコードは76で、読み取り専用ファイルを削除できなかったときのエラーコードは70です。ファイルの属性を調べるには、FileオブジェクトのAttributesプロパティを使います。
FolderオブジェクトのDeleteメソッドは、FileSystemObjectオブジェクトのDeleteFolderメソッドと同じ働きをします。
Sub test55()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Workフォルダを削除します
    FSO.GetFolder("C:\Work").Delete
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

・Moveメソッド - 書式:Folder.Move destination

フォルダを、引数destinationに移動します。
FolderオブジェクトのMoveメソッドは、FileSystemObjectオブジェクトのMoveFolderメソッドと同じ働きをします。
Sub test56()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\WorkフォルダをC:Tmpフォルダに移動します
    FSO.GetFolder("C:\Work").Move "C:\Tmp\"
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)



[Driveオブジェクト]戻る← | →進む[Fileオブジェクト]