複数のPNGファイルの中から、アスペクト比(縦横比)がある値以下のものを調べる必要がありました。
そのためのマクロをExcel VBAで作成したので、ご紹介しておきます。
縦横比が一定以下のPNGファイルの一覧を作成するサンプルマクロ
以下のマクロを実行すると、Cドライブtempフォルダー内にあるPNGファイルの中で、長辺÷短辺の値が、1.41以下のものの一覧が新規シートに作成されます。
Const FOL_PATH = "C:\temp\"
Const IMG_TYPE = "PNG"
Const RATIO_OK = 1.41 ' A4サイズ(297÷210)のアスペクト比
Dim f_name As String
f_name = Dir(FOL_PATH & "*." & IMG_TYPE)
If f_name = "" Then
MsgBox FOL_PATH & " フォルダーに " & vbCrLf & IMG_TYPE & " ファイルが見つからないため終了します。"
Exit Sub
End If
Sheets.Add Before:=Sheets(1)
Cells(1, "A").Value = "ファイル名"
Cells(1, "B").Value = "高さ"
Cells(1, "C").Value = "幅"
Cells(1, "D").Value = "縦横比"
Dim ratio As Double
Dim i As Long: i = 2
With CreateObject("WIA.ImageFile")
Do Until f_name = ""
.LoadFile FOL_PATH & f_name
ratio = WorksheetFunction.Max(.Height / .Width, .Width / .Height)
If ratio <= RATIO_OK Then
Cells(i, "A").Value = f_name
Cells(i, "B").Value = .Height
Cells(i, "C").Value = .Width
i = i + 1
End If
f_name = Dir
Loop
End With
Range("D2", Cells(i - 1, "D")).Formula = "=MAX(B2/C2, C2/B2)"
Range("A1").CurrentRegion.Columns.AutoFit
サンプルマクロで行っている処理
基本的な構造は、既にご紹介しているWIA.ImageFileオブジェクトを使って画像のサイズを一覧にするマクロと同じです。
この処理に、縦横比を計算して、定数RATIO_OKに指定した値以下だった場合にのみ、ファイル名・高さ・幅を出力して、
Dim ratio As Double Dim i As Long: i = 2 With CreateObject("WIA.ImageFile") Do Until f_name = "" .LoadFile FOL_PATH & f_name ratio = WorksheetFunction.Max(.Height / .Width, .Width / .Height) If ratio <= RATIO_OK Then Cells(i, "A").Value = f_name Cells(i, "B").Value = .Height Cells(i, "C").Value = .Width i = i + 1 End If
ファイル名・高さ・幅の出力が終わってから、D2セル以下に縦横比を計算する数式を入力する処理を追加しています。
Loop End With Range("D2", Cells(i - 1, "D")).Formula = "=MAX(B2/C2, C2/B2)" Range("A1").CurrentRegion.Columns.AutoFit End Sub
- Newer:最近のExcelで埋め込みオブジェクトの挿入は?
- Older: PhotoshopのCtrl+Alt系のショートカットキー一覧
Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » 縦横比が一定以下のPNGファイルの一覧を作成するExcelマクロ