トップページ >
Excel >
VBA >
FileSystemObject >
Fileオブジェクト
Fileオブジェクト
Fileオブジェクトはファイルを表します。Fileオブジェクトの集合はFilesコレクションです。FilesコレクションのプロパティはCountプロパティとItemプロパティだけで、メソッドはありません。Fileオブジェクトには次のプロパティとメソッドが用意されています。
・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 | システムの既定値で開きます |
| -1 | ASCIIファイルとして開きます |
| 0 | Unicodeとして開きます |
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オブジェクト]