大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、ファイルパスからフォルダパスや、ファイル名、拡張子、更新日時、ファイルサイズを取得するには、「FileSystemObject」を使うと、簡単に取得することができます。VBAを使って、ファイルやフォルダの解析を自動化していきましょう。

はじめに

この記事では、ファイルパスからフォルダパスや、ファイル名、拡張子、更新日時、ファイルサイズを取得する方法について、ご紹介します。

ファイルパスがわかれば、「FileSystemObject」を使って、次のような値を取得することができます。

  • ファイル名
  • 拡張子を除いたファイル名
  • フォルダパス
  • 拡張子
  • ファイルサイズ
  • 作成日時
  • 更新日時
  • アクセス日時

といった感じです。

「フォルダパス」からは、次のような値を取得することができます。

  • フォルダ名
  • フォルダサイズ
  • 作成日時
  • 更新日時
  • アクセス日時

VBAの「FileSystemObject」を使って、フォルダやファイルの解析を自動化していきましょう。

では、ファイルパスからフォルダパスや、ファイル名、拡張子、更新日時、ファイルサイズを取得する方法について、解説していきます。

この記事を読むメリット

  • ファイルパスからフォルダパスや、ファイル名、拡張子などの値を取得する方法がわかります
  • フォルダパスからフォルダ名や、フォルダサイズ、作成日時などの値を取得する方法がわかります

本記事の内容を動画でまとめています

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードまとめ

ファイルパスやフォルダパスから値を取得するVBAコードについて、まとめています。

VBAコードだけを確認したい場合に、ご活用ください。

Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")

'ファイルパス
Dim A
A = "C:\Users\User\Desktop\TEST\TEST.xlsm"

Debug.Print FSO.GetFileName(A) 'ファイル名
Debug.Print FSO.GetBaseName(A) '拡張子を除くファイル名
Debug.Print FSO.GetParentFolderName(A) 'ファイルのフォルダパス
Debug.Print FSO.GetExtensionName(A) '拡張子
Debug.Print FSO.GetFile(A).Size 'ファイルのサイズ
Debug.Print FSO.GetFile(A).DateCreated 'ファイルの作成日時
Debug.Print FSO.GetFile(A).DateLastModified 'ファイルの更新日時
Debug.Print FSO.GetFile(A).DateLastAccessed 'ファイルのアクセス日時

'フォルダパス
Dim A
A = "C:\Users\User\Desktop\TEST"

Debug.Print FSO.GetFolder(A).Name 'フォルダ名
Debug.Print FSO.GetFolder(A).Size 'フォルダのサイズ
Debug.Print FSO.GetFolder(A).DateCreated 'フォルダの作成日時
Debug.Print FSO.GetFolder(A).DateLastModified 'フォルダの更新日時
Debug.Print FSO.GetFolder(A).DateLastAccessed 'フォルダのアクセス日時

では、解説していきます。

ファイルパスからデータを取得する

「ファイルパス」から次のデータを取得してみます。

  • ファイル名
  • 拡張子を除いたファイル名
  • フォルダパス
  • 拡張子
  • ファイルサイズ
  • 作成日時
  • 更新日時
  • アクセス日時

では、やってみます。

「ファイル名」を取得

「ファイル名」を取得するには、「GetFileName」を使います。

Sub TEST1()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST\TEST.xlsm"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'ファイル名
    Debug.Print FSO.GetFileName(A)
    
End Sub

ファイルパスから「ファイル名」を取得できます。

「ファイル名」を取得できた

ファイルパスから「ファイル名」を取得できました

ファイルパスから「ファイル名」を取得できました。

「拡張子を除いたファイル名」を取得

「拡張子を除いたファイル名」を取得するには、「GetBaseName」を使うとできます。

Sub TEST2()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST\TEST.xlsm"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    '拡張子を除くファイル名
    Debug.Print FSO.GetBaseName(A)
    
End Sub

ファイルパスから「拡張子を除いたファイル名」を取得できます。

「拡張子を除いたファイル名」を取得できた

ファイルパスから「拡張子を除いたファイル名」を取得できました

ファイルパスから「拡張子を除いたファイル名」を取得できました。

「フォルダパス」を取得

「フォルダパス」を取得するには、「GetParentFolderName」を使うとできます。

Sub TEST3()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST\TEST.xlsm"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'ファイルのフォルダパス
    Debug.Print FSO.GetParentFolderName(A)
    
End Sub

ファイルパスから「フォルダパス」を取得できます。

「フォルダパス」を取得できた

ファイルパスから「フォルダパス」を取得できました

ファイルパスから「フォルダパス」を取得できました。

「拡張子」を取得

「拡張子」を取得するには、「GetExtensionName」を使います。

Sub TEST4()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST\TEST.xlsm"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    '拡張子
    Debug.Print FSO.GetExtensionName(A)
    
End Sub

ファイルパスから「拡張子」を取得できます。

「拡張子」を取得できた

ファイルパスから「拡張子」を取得できました

ファイルパスから「拡張子」を取得できました。

「ファイルサイズ」を取得

「ファイルサイズ」を取得するには、「GetFile」を使って、「.Size」を使います。

Sub TEST5()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST\TEST.xlsm"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'ファイルのサイズ
    Debug.Print FSO.GetFile(A).Size
    
End Sub

ファイルパスから「ファイルサイズ」を取得できます。

「ファイルサイズ」を取得できた

ファイルパスから「ファイルサイズ」を取得できました

ファイルパスから「ファイルサイズ」を取得できました。

「作成日時」を取得

「作成日時」を取得するには、「GetFile」を使って、「DateCreated」を使います。

Sub TEST6()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST\TEST.xlsm"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'ファイルの作成日時
    Debug.Print FSO.GetFile(A).DateCreated
    
End Sub

ファイルパスから「ファイルの作成日時」を取得できます。

「ファイルの作成日時」を取得できた

ファイルパスから「ファイルの作成日時」を取得できました

ファイルパスから「ファイルの作成日時」を取得できました。

「更新日時」を取得

「更新日時」を取得するには、「GetFile」を使って、「DateLastModified」を使います。

Sub TEST7()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST\TEST.xlsm"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'ファイルの更新日時
    Debug.Print FSO.GetFile(A).DateLastModified
    
End Sub

ファイルパスから「ファイルの更新日時」を取得できます。

「ファイルの更新日時」を取得できた

ファイルパスから「ファイルの更新日時」を取得できました

ファイルパスから「ファイルの更新日時」を取得できました。

「アクセス日時」を取得

「アクセス日時」を取得するには、「GetFile」を使って、「DateLastAccessed」を使います。

Sub TEST8()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST\TEST.xlsm"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'ファイルのアクセス日時
    Debug.Print FSO.GetFile(A).DateLastAccessed
    
End Sub

ファイルパスから「ファイルのアクセス日時」を取得できます。

「ファイルのアクセス日時」を取得できた

ファイルパスから「ファイルのアクセス日時」を取得できました

ファイルパスから「ファイルのアクセス日時」を取得できました。

フォルダパスからデータを取得する

「フォルダパス」から次のデータを取得してみます。

  • フォルダ名
  • フォルダサイズ
  • 作成日時
  • 更新日時
  • アクセス日時

では、取得してみます。

「フォルダ名」を取得する

「フォルダ名」を取得するには、「GetFolder」を使って、「Name」を使います。

Sub TEST9()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'フォルダ名
    Debug.Print FSO.GetFolder(A).Name
    
End Sub

フォルダパスから「フォルダ名」を取得できます。

「フォルダ名」を取得できた

フォルダパスから「フォルダ名」を取得できました

フォルダパスから「フォルダ名」を取得できました。

「フォルダサイズ」を取得する

「フォルダサイズ」を取得するには、「GetFolder」を使って、「Size」を使います。

Sub TEST10()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'フォルダのサイズ
    Debug.Print FSO.GetFolder(A).Size
    
End Sub

フォルダパスから「フォルダサイズ」を取得できます。

「フォルダサイズ」を取得できた

フォルダパスから「フォルダサイズ」を取得できました

フォルダパスから「フォルダサイズ」を取得できました。

「作成日時」を取得する

「作成日時」を取得するには、「GetFolder」を使って、「DateCreated」を使います。

Sub TEST11()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'フォルダの作成日時
    Debug.Print FSO.GetFolder(A).DateCreated
    
End Sub

フォルダパスから「フォルダの作成日時」を取得できます。

「フォルダの作成日時」を取得できた

フォルダパスから「フォルダの作成日時」を取得できました

フォルダパスから「フォルダの作成日時」を取得できました。

「更新日時」を取得する

「更新日時」を取得するには、「GetFolder」を使って、「DateLastModified」を使います。

Sub TEST12()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'フォルダの更新日時
    Debug.Print FSO.GetFolder(A).DateLastModified
    
End Sub

フォルダパスから「フォルダの更新日時」を取得できます。

「フォルダの更新日時」を取得できた

フォルダパスから「フォルダの更新日時」を取得できました

フォルダパスから「フォルダの更新日時」を取得できました。

「アクセス日時」を取得する

「アクセス日時」を取得するには、「GetFolder」を使って、「DateLastAccessed」を使います。

Sub TEST13()
    
    Dim A
    A = "C:\Users\User\Desktop\TEST"
    
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'フォルダのアクセス日時
    Debug.Print FSO.GetFolder(A).DateLastAccessed
    
End Sub

フォルダパスから「フォルダのアクセス日時」を取得できます。

「フォルダのアクセス日時」を取得できた

フォルダパスから「フォルダのアクセス日時」を取得できました

フォルダパスから「フォルダのアクセス日時」を取得できました。

おわりに

この記事では、ファイルパスからフォルダパスや、ファイル名、拡張子、更新日時、ファイルサイズを取得する方法について、ご紹介しました。

ファイルパスがわかれば、「FileSystemObject」を使って、次のような値を取得することができます。

  • ファイル名
  • 拡張子を除いたファイル名
  • フォルダパス
  • 拡張子
  • ファイルサイズ
  • 作成日時
  • 更新日時
  • アクセス日時

といった感じです。

「フォルダパス」からは、次のような値を取得することができます。

  • フォルダ名
  • フォルダサイズ
  • 作成日時
  • 更新日時
  • アクセス日時

VBAの「FileSystemObject」を使って、フォルダやファイルの解析を自動化していきましょう。

といった値を取得できます。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す