wrote :: 2005.01.18

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


Fileオブジェクト

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

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



・Attributesプロパティ - 書式:File.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 test56()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Work\Book1.xlsに「読み取り専用」属性が設定されていた場合は解除します
    If FSO.GetFile("C:\Work\Book1.xls").Attributes And 1 Then
        FSO.GetFile("C:\Work\Book1.xls").Attributes = 0
    End If
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

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

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

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

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

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

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

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

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

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

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

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

ファイルが存在するフォルダを返します。
1つ上のフォルダではなく、ファイルが保存されているフォルダ名です。
Sub test62()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「C:\Work」を表示します
    MsgBox FSO.GetFile("C:\Work\Book1.xls").ParentFolder
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

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

ファイルのパスを返します。
パスにはファイル名も含まれます。
Sub test63()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「C:\Work\Book1.xls」を表示します
    MsgBox FSO.GetFile("C:\Work\Book1.xls").Path
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

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

8.3形式のファイル名を返します。
8.3形式のファイル名では空白が使用できず、半角で8文字までしか使用できません。
Sub test64()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「WINDOW~1.WMZ」を表示します
    MsgBox FSO.GetFile("C:\Program Files\Windows Media Player\Skins\Windows Classic.wmz").ShortName
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

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

8.3形式のパスを返します。
8.3形式のパスでは空白が使用できず、半角で8文字までしか使用できません。
Sub test65()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「C:\PROGRA~1\WINDOW~2\Skins\WINDOW~1.WMZ」を表示します
    MsgBox FSO.GetFile("C:\Program Files\Windows Media Player\Skins\Windows Classic.wmz").ShortPath
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

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

ファイルのサイズを返します。
Sub test66()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Work\Book1.xlsのサイズを表示します
    MsgBox FSO.GetFile("C:\Work\Book1.xls").Size
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

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

ファイルの種類を返します。
Sub test67()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''「Microsoft Office Excelワークシート」を表示します
    MsgBox FSO.GetFile("C:\Work\Book1.xls").Type
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

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

ファイルをコピーします。
引数destinationにはコピー先のパスまたはファイル名を指定します。
引数overwriteは省略可能です。Trueを指定すると既存のファイルを上書きします。Falseを指定すると上書きせずにエラーになります。省略するとTrueが指定されたとみなされます。
FileオブジェクトのCopyメソッドは、FileSystemObjectオブジェクトのCopyFileメソッドと同じ働きをします。
Sub test68()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Work\Book1.xlsをC:\Tmpフォルダにコピーします
    FSO.GetFile("C:\Work\Book1.xls").Copy "C:\Tmp\"
    ''C:\Work\Book1.xlsをC:\TmpフォルダにReport.xlsという名前でコピーします
    FSO.GetFile("C:\Work\Book1.xls").Copy "C:\Tmp\Report.xls"
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

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

指定したファイルを削除します。
引数folderspecには削除するファイルの名前を指定します。存在しないファイル名を指定するとエラーになります。ファイルが存在するかどうか調べるには、FileSystemObjectオブジェクトのFileExistsメソッドを使います。
引数forceは省略可能です。Trueを指定すると読み取り専用ファイルも削除されます。省略するとFalseとみなされます。引数forceにFalseを指定した場合、読み取り専用ファイルを削除しようとするとエラーになります。ファイルの属性を調べるには、FileオブジェクトのAttributesプロパティを使います。
FileオブジェクトのDeleteメソッドは、FileSystemObjectオブジェクトのDeleteFileメソッドと同じ働きをします。
Sub test69()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Tmp\Report.xlsを削除します
    FSO.GetFile("C:\Tmp\Report.xls").Delete
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)

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

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

・OpenAsTextStreamメソッド - 書式:File.OpenAsTextStream([iomode, [format]])

テキストファイルを開き、開いたTextStreamオブジェクトを返します。
引数filenameには開くファイル名を指定します。OpenAsTextStreamメソッドは既存のファイルを開くメソッドです。新しいファイルを作るのではありません。引数filenameに存在しないファイル名を指定するとエラーになります。ファイルが存在するかどうか調べるには、FileSystemObjectオブジェクトのFileExistsメソッドを使います。
引数iomodeは省略可能です。読み込みまたは書き込みを表す次の値を指定します。省略すると読み込みの1が指定されたとみなされます。

モード
1読み込み専用で開きます
2上書き書き込み用で開きます
8追加書き込み用で開きます

引数formatは省略可能です。開くファイルの形式を指定します。指定できるのは次の値です。省略するとASCIIファイルとして開かれます。

形式
-2システムの既定値で開きます
-1ASCIIファイルとして開きます
0Unicodeとして開きます

FileオブジェクトのOpenAsTextStreamメソッドは、FileSystemObjectのOpenTextFileメソッドと同じ機能を提供しますが、OpenTextFileメソッドと違って、ファイルへの追加モードではない書き込みにも使用できます。
Sub test71()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Work\Sample.txtの末尾に現在の日時を書き込みます
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream(8)
        .WriteLine Now
    End With
    Set FSO = Nothing
End Sub
(ページの先頭へ戻る)


[Folderオブジェクト]戻る← | →進む[TextStreamオブジェクト]