こんにちは!りゅう(@ryupong_b)です。
今回は、Fileオブジェクトを取得する方法を解説します。
今回は、FileSystemObjectのFileオブジェクトを取得する方法をご紹介します。
Fileオブジェクトは、ファイルを操作するために必要なオブジェクトなので、使用する頻度は多いかと思います。
本記事では、サンプルコードを用いてコピペで使える実践的なコードもご紹介します。
- Fileオブジェクトを取得する 2つのパターンが分かります。
- 取得における注意点、エラーの回避方法についても詳しく理解できます。
前提
FileSystemObjectの参照設定が必要
Fileオブジェクトを利用するには、FileSystemObjectの参照設定が必要です。
以下の記事では、FileSystemObjectの参照設定について解説しています。
関連メソッド
Fileオブジェクトを取得するには、2種類の方法があります。
# | メソッド | 説明 |
---|---|---|
1 | GetFile | ファイルパスを指定し、特定のFileオブジェクトを取得する |
2 | Files | フォルダを指定し、フォルダ内のすべてのFileオブジェクトを取得する |
Fileオブジェクトの主なプロパティ
Fileオブジェクトには、ファイルの情報を取得できる様々なプロパティが用意されています。
その一部をご紹介します。
# | プロパティ | 説明 |
---|---|---|
1 | Attributes | ファイルの属性を取得、設定する |
2 | DateCreated | ファイルの作成日時を取得する |
3 | DateLastAccessed | 最後にアクセスされた日時を取得する |
4 | Drive | ファイルが保存されているドライブ(Driveオブジェクト)を取得する |
5 | Name | ファイル名を取得、設定する |
6 | ParentFolder | ファイルが保存されているフォルダ(Folderオブジェクト)を取得する |
7 | Path | ファイルパスを取得する |
8 | Size | ファイルサイズ(容量)を取得する |
9 | Type | ファイルの種類を取得する |
基本情報
GetFileメソッド
ファイルパス指定で Fileオブジェクト を取得する場合、FileSystemObjectのGetFileメソッドを使用します。
構文
FileSystemObject.GetFile(FilePath)
※緑色は引数です。
引数
# | 引数 | 必須/任意 | 説明 |
---|---|---|---|
1 | FilePath | 必須 | Fileオブジェクトとして取得したいファイルパスを指定 |
指定したファイルが存在しない場合、エラーが発生します。
処理実行前に、ファイルの存在チェックを実施するようにしましょう。
Filesメソッド
フォルダを指定で、指定フォルダ内のすべてのFileオブジェクトを取得する場合、FolderオブジェクトのFilesプロパティを使用します。
FolderObject.Files
サンプルコード
GetFileメソッドやFilesメソッドは、Fileオブジェクトを取得するのみです。
サンプルコードでは、Fileオブジェクトを取得した後ファイルの情報をセルに出力する方法をご紹介します。
Fileオブジェクトの取得箇所をハイライトしていますので、取得箇所より先の処理を、用途により変更してご使用ください。
指定のファイル情報をセルに出力する
Public Sub getFileInfo()
Dim fso As New FileSystemObject ' FSOインスタンス生成
Dim myFile As File ' Fileオブジェクト
' Fileオブジェクトを取得
Set myFile = fso.GetFile("C:\vba-hack\testFile.txt")
' セルにファイル情報を書き出し
Cells(1, 1).Value = myFile.Name ' ファイル名
Cells(1, 2).Value = myFile.DateLastAccessed ' 更新日時
Cells(1, 3).Value = myFile.Size ' ファイルサイズ
End Sub
指定のフォルダ配下のファイル情報を出力する
Public Sub getFileInfoForFolder()
Dim fso As New FileSystemObject ' FSOインスタンス生成
Dim myFolder As Folder ' Folderオブジェクト
Dim myFile As File ' Fileオブジェクト
Dim loopCnt As Integer ' ループカウンタ
' Folderオブジェクトを取得
Set myFolder = fso.GetFolder("C:\vba-hack")
loopCnt = 1
For Each myFile In myFolder.Files
' セルにファイル情報を書き出し
Cells(loopCnt, 1).Value = myFile.Name ' ファイル名
Cells(loopCnt, 2).Value = myFile.DateLastAccessed ' 更新日時
Cells(loopCnt, 3).Value = myFile.Size ' ファイルサイズ
loopCnt = loopCnt + 1
Next myFile
End Sub
最後に
今回は、Fileオブジェクトを取得する方法をご紹介させて頂きました。
この記事が、皆さんのお力になれば幸いです!
コメント