ブックの情報の取得
VBAで現在のブックの情報を知りたいことがあります。
作成日だったり更新日だったり、ファイルが格納されているフォルダだったりファイル名だったり。
ファイル名やフォルダであればVBAで用意されているActiveWorkbookのプロパティからわかるのですが、Excelブックに限らないWindows全般のファイル情報を取得する場合はFileSystemObjectを利用して取得します。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
Private Sub GetExcelFileInfo() On Error GoTo ERR Dim oFso As FileSystemObject Dim s '// ▼ActiveWorkbookのプロパティを利用 '// アクティブブックパス s = ActiveWorkbook.FullName Debug.Print "アクティブブックパス=[" & s & "]" '// ファイル名 s = ActiveWorkbook.Name Debug.Print "ファイル名=[" & s & "]" '// ▼FileSystemObjectを利用 Set oFso = CreateObject("Scripting.FileSystemObject") '// 作成日 s = oFso.GetFile(ActiveWorkbook.FullName).DateCreated Debug.Print "作成日=[" & s & "]" '// 最終アクセス日 s = oFso.GetFile(ActiveWorkbook.FullName).DateLastAccessed Debug.Print "最終アクセス日=[" & s & "]" '// 更新日 s = oFso.GetFile(ActiveWorkbook.FullName).DateLastModified Debug.Print "更新日=[" & s & "]" '// ドライブ名 s = oFso.GetFile(ActiveWorkbook.FullName).Drive Debug.Print "ドライブ名=[" & s & "]" '// ファイル名 s = oFso.GetFile(ActiveWorkbook.FullName).Name Debug.Print "ファイル名=[" & s & "]" '// ファイルパス s = oFso.GetFile(ActiveWorkbook.FullName).Path Debug.Print "ファイル名=[" & s & "]" '// ファイルの種類 s = oFso.GetFile(ActiveWorkbook.FullName).Type Debug.Print "ファイルの種類=[" & s & "]" '// ファイル属性 s = oFso.GetFile(ActiveWorkbook.FullName).Attributes Debug.Print "ファイル属性=[" & s & "]" '// ファイルサイズ s = oFso.GetFile(ActiveWorkbook.FullName).Size Debug.Print "ファイルサイズ=[" & s & "]" '// フォルダパス s = oFso.GetFile(ActiveWorkbook.FullName).ParentFolder Debug.Print "フォルダパス=[" & s & "]" '// 従来の 8.3 命名規則を必要とするプログラムで使用する短い名前 s = oFso.GetFile(ActiveWorkbook.FullName).ShortName Debug.Print "短縮ファイル名=[" & s & "]" '// 従来の 8.3 命名規則を必要とするプログラムで使用する短いパス s = oFso.GetFile(ActiveWorkbook.FullName).ShortPath Debug.Print "短縮フォルダパス=[" & s & "]" Set oFso = Nothing ERR: End Sub |
ソースコードの説明
ファイルの情報を取得する方法が2通りに分かれています。
前半がActiveWorkbookのプロパティを利用する方法で、後半がFileSystemObjectを利用する方法です。
FileSystemObjectのプロパティは一通り記載しています。
FileSystemObjectは存在するブックであることが前提になるため、未保存のブックのBook1などの場合はエラーになります。
上のソースでは13行目までは実行されますが、それ以降はエラーのため実行されません。
それにしても、短縮ファイル名とか使ったことないんですけど、どういう場面で使うんでしょうね。