動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2409(ビルド18015.20000クイック実行)ベータチャネル
WIA.ImageFileオブジェクトを使えばPNGファイルのサイズをVBAで取得できることをご紹介しました。
もちろん、指定したフォルダーに含まれる全PNGファイルのサイズを取得するExcelマクロも作れます。
[スポンサードリンク]
指定フォルダー内のPNGファイルのサイズを取得するサンプルマクロ
以下のExcelマクロを実行すると、Cドライブのtempフォルダー内にあるPNGファイルの、ファイル名・高さ・幅が、アクティブシートのA:C列に出力されます。
Sub 指定フォルダーの画像ファイルのサイズを取得する()
Const FOL_PATH = "C:\temp\"
Const IMG_TYPE = "png"
Dim f_name As String
f_name = Dir(FOL_PATH & "*." & IMG_TYPE)
If f_name = "" Then
MsgBox FOL_PATH & " フォルダーに " & IMG_TYPE & " ファイルが見つかりません。"
Exit Sub
End If
Range("A1").CurrentRegion.ClearContents
Range("A1").Value = "ファイル名"
Range("B1").Value = "高さ"
Range("C1").Value = "幅"
Dim img As Object
Set img = CreateObject("WIA.ImageFile")
Dim i As Long: i = 1
Do
i = i + 1
img.LoadFile FOL_PATH & f_name
Cells(i, "A").Value = f_name
Cells(i, "B").Value = img.Height
Cells(i, "C").Value = img.Width
f_name = Dir
Loop Until f_name = ""
Set img = Nothing
Range("A1").CurrentRegion.Columns.AutoFit
End Sub
Const FOL_PATH = "C:\temp\"
Const IMG_TYPE = "png"
Dim f_name As String
f_name = Dir(FOL_PATH & "*." & IMG_TYPE)
If f_name = "" Then
MsgBox FOL_PATH & " フォルダーに " & IMG_TYPE & " ファイルが見つかりません。"
Exit Sub
End If
Range("A1").CurrentRegion.ClearContents
Range("A1").Value = "ファイル名"
Range("B1").Value = "高さ"
Range("C1").Value = "幅"
Dim img As Object
Set img = CreateObject("WIA.ImageFile")
Dim i As Long: i = 1
Do
i = i + 1
img.LoadFile FOL_PATH & f_name
Cells(i, "A").Value = f_name
Cells(i, "B").Value = img.Height
Cells(i, "C").Value = img.Width
f_name = Dir
Loop Until f_name = ""
Set img = Nothing
Range("A1").CurrentRegion.Columns.AutoFit
End Sub
サンプルマクロで行っている処理
VBAのDir関数を使った、以下のコードを実行すると、Cドライブのtempフォルダー内に含まれるPNGファイル名がA2セルから下方向に出力されます。
Const FOL_PATH = "C:\temp\" Const IMG_TYPE = "png" Dim f_name As String f_name = Dir(FOL_PATH & "*." & IMG_TYPE) If f_name = "" Then MsgBox FOL_PATH & " フォルダーに " & IMG_TYPE & " ファイルが見つかりません。" Exit Sub End If Dim i As Long: i = 1 Do i = i + 1 Cells(i, "A").Value = f_name f_name = Dir Loop Until f_name = ""
このコードに、WIA.ImageFileオブジェクト関連の処理や、
Const FOL_PATH = "C:\temp\" Const IMG_TYPE = "png" Dim f_name As String f_name = Dir(FOL_PATH & "*." & IMG_TYPE) If f_name = "" Then MsgBox FOL_PATH & " フォルダーに " & IMG_TYPE & " ファイルが見つかりません。" Exit Sub End If Range("A1").CurrentRegion.ClearContents Range("A1").Value = "ファイル名" Range("B1").Value = "高さ" Range("C1").Value = "幅" Dim img As Object Set img = CreateObject("WIA.ImageFile") Dim i As Long: i = 1 Do i = i + 1 img.LoadFile FOL_PATH & f_name Cells(i, "A").Value = f_name Cells(i, "B").Value = img.Height Cells(i, "C").Value = img.Width f_name = Dir Loop Until f_name = "" Set img = Nothing Range("A1").CurrentRegion.Columns.AutoFit
見た目を整える処理を追加したのが先ほどのサンプルマクロです。
[スポンサードリンク]
- Newer:DAOのOpenRecordsetメソッドの引数Optionに指定できるRecordsetOptionEnumの定数一覧
- Older:ADOとDAOのConnectionオブジェクトのメソッドを比較する一覧
Home » エクセルマクロ・Excel VBAの使い方 » 指定フォルダー内のPNGファイルのサイズを取得するExcelマクロ