和風スパゲティのレシピ

日本語でコーディングするExcelVBA

Fileオブジェクト(FileSystemObject)

FileSystemObjectの参照下で使用できるようになる、
Fileオブジェクトの取得方法とプロパティ・メンバー一覧を記載します。


※ FileSystemObjectについての解説はこちらからどうぞ
www.limecode.jp

Fileオブジェクトの取得方法

Fileオブジェクトを取得する方法は以下の2つです。

FileSystemObject.GetFileメソッド

Dim ファイル As File
Set ファイル = FSO.GetFile(対象ファイルのパス)

Folderオブジェクト.Filesプロパティ(の各Item)

Dim 親フォルダ As Folder
Set 親フォルダ = FSO.GetFolder(対象フォルダのパス)

Dim ファイル As File
For Each ファイル In 親フォルダ.Files

Next

 

Filesコレクションからのファイル取得にはほぼForEach文を使うと思いますが、
ファイル名を指定すればItemプロパティでも取得が可能です。

Dim 親フォルダ As Folder
Set 親フォルダ = FSO.GetFolder(対象フォルダのパス)

Dim ファイル As File
Set ファイル = 親フォルダ.Files.Item(ファイル名)
' または
Set ファイル = 親フォルダ.Files(ファイル名) ' ※Itemは省略可

 
ただし、指定できるのはKey = ファイル名だけであり、
WorksheetsのようにIndexで指定することはできません。

Set ファイル = 親フォルダ.Files(1) ' ⇐ これはエラー

 

Fileオブジェクトのメンバー一覧

メソッド一覧

メソッド 概要
Copy ファイルをコピー
Delete ファイルを削除
Move ファイルを移動
OpenAsTextStream テキストファイルのTextStreamオブジェクトを取得

 

Copy(ファイルをコピー)
ファイル.Copy 行先のパス, [上書きするか_省略時はTrue=する]

行先のパスは

  • 「フォルダパス\」ならそのフォルダへ
  • 「フォルダパス」はエラー(\を最後に付けないとダメ)
  • 「ファイルパス」ならコピーして別名にリネーム

 

Delete(ファイルを削除)
ファイル.Delete [読取専用ファイルも消すか_省略時はFalse=しない]

 

Move(ファイルを移動)
ファイル.Move 行先のパス

行先のパスは

  • 「フォルダパス\」ならそのフォルダへ
  • 「フォルダパス」はエラー(\を最後に付けないとダメ)
  • 「ファイルパス」なら移動して別名にリネーム

※ 同名ファイルの上書きは不可(エラー)
 

OpenAsTextStream(TextStreamを取得)
Dim 編集するテキスト As TextStream
Set 編集するテキスト = ファイル.OpenAsTextStream([iomode], [format])

 

プロパティ一覧

プロパティ 取得 設定
Attributes ファイルの属性 Long ※1
DateCreated 作成日時 Date
DateLastAccessed アクセス日時 Date
DateLastModified 更新日時 Date
Drive 親ドライブ Drive
Name ファイル名 String
ParentFolder 親フォルダ Folder
Path [規定]ファイルパス String
Size サイズ Long ※2
Type ファイルの種類 String
ShortName 8.3形式名(古い) String
ShortPath 8.3形式パス(古い) String

※1 : 正確には列挙型vbFileAttribute。(Dir関数の引数に渡すのと同じもの)
※2 : バイト数を整数値で返す。型はVariantだが事実上Long。


すべて引数はありませんので、

Dim 作成日時 As Date
作成日時 = ファイル.DateCreated

このように各値を取得してください。


既定のプロパティはPathですので、

Dim ファイルパス As String
ファイルパス = ファイル

でパスを取得できますが、見てわかる通りかなり紛らわしいです。
よってプロパティ名の省略はおすすめしません。


設定も行えるプロパティは「名称」と「属性」の2つです。

' ファイル名の変更
ファイル.Name = 変更するファイル名

' ファイルを隠しファイルにする
ファイル.Attributes = Hidden

 
これ以外のプロパティは読み取り専用です。



以上がFileオブジェクトの取得方法とプロパティ・メンバー一覧です。

その他FileSystemObjectの解説ついてはこちらを参照ください。
www.limecode.jp