【Excel VBA】Fileオブジェクトを取得する(GetFile/Files)

りゅう

こんにちは!りゅう(@ryupong_b)です。
今回は、Fileオブジェクトを取得する方法を解説します。

はじめに

今回は、FileSystemObjectのFileオブジェクトを取得する方法をご紹介します。
Fileオブジェクトは、ファイルを操作するために必要なオブジェクトなので、使用する頻度は多いかと思います。
本記事では、サンプルコードを用いてコピペで使える実践的なコードもご紹介します。

この記事を読むメリット
  • Fileオブジェクトを取得する 2つのパターンが分かります。
  • 取得における注意点、エラーの回避方法についても詳しく理解できます。

前提

FileSystemObjectの参照設定が必要

Fileオブジェクトを利用するには、FileSystemObjectの参照設定が必要です。

以下の記事では、FileSystemObjectの参照設定について解説しています。

関連メソッド

Fileオブジェクトを取得するには、2種類の方法があります。

#メソッド説明
1GetFileファイルパスを指定し、特定のFileオブジェクトを取得する
2Filesフォルダを指定し、フォルダ内のすべてのFileオブジェクトを取得する
Fileオブジェクト取得 – 関連メソッド

Fileオブジェクトの主なプロパティ

Fileオブジェクトには、ファイルの情報を取得できる様々なプロパティが用意されています。
その一部をご紹介します。

#プロパティ説明
1Attributesファイルの属性を取得、設定する
2DateCreatedファイルの作成日時を取得する
3DateLastAccessed最後にアクセスされた日時を取得する
4Driveファイルが保存されているドライブ(Driveオブジェクト)を取得する
5Nameファイル名を取得、設定する
6ParentFolderファイルが保存されているフォルダ(Folderオブジェクト)を取得する
7Pathファイルパスを取得する
8Sizeファイルサイズ(容量)を取得する
9Typeファイルの種類を取得する
Fileオブジェクトの主なプロパティ

基本情報

GetFileメソッド

ファイルパス指定で Fileオブジェクト を取得する場合、FileSystemObjectのGetFileメソッドを使用します。

構文

構文

FileSystemObject.GetFile(FilePath)

緑色は引数です。

引数

#引数必須/任意説明
1FilePath必須Fileオブジェクトとして取得したいファイルパスを指定
GetFileメソッド – 引数

FilePathは、ファイル名のみの指定も可能です。
ファイル名のみ指定した場合、カレントフォルダのファイルが対象となります。

指定したファイルが存在しない場合、エラーが発生します。
処理実行前に、ファイルの存在チェックを実施するようにしましょう。

Filesメソッド

フォルダを指定で、指定フォルダ内のすべてのFileオブジェクトを取得する場合、FolderオブジェクトのFilesプロパティを使用します。

構文

FolderObject.Files

Folderオブジェクトは、取得したいファイルを含むオブジェクトを指定してください。

サンプルコード

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オブジェクトを取得する方法をご紹介させて頂きました。

この記事が、皆さんのお力になれば幸いです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA