+ 64bit Excel バージョン 2409(ビルド18015.20000クイック実行)ベータチャネル
VBAでPNGファイルのサイズを取得したかったので簡単なマクロを作ってみました。
LoadPicture関数ではPNGを読み込めない
JPEGファイルなどの場合は、LoadPicture関数を使った以下のようなコードを使えば、画像ファイルを読み込むことができます。
Dim img As Object Set img = LoadPicture("C:\temp\sample.jpg")
ですが、PNGファイルの場合には
実行時エラー '481': ピクチャが不正です。
エラーが発生してしまいます。
PNGファイルのサイズを取得するサンプルマクロ
PNGファイルをVBAで読み込むにはいくつかの方法があるようですが、以下のようなコードがシンプルで済みます。
Dim img As Object
Set img = CreateObject("WIA.ImageFile")
img.LoadFile "C:\temp\sample.png"
MsgBox img.Height & "px × " & img.Width & "px"
End Sub
Cドライブtempフォルダーにsample.pngファイルがある状態で実行すると
「1024px × 768px」
といったメッセージボックスが表示されます。
上記のSubプロシージャにはExcel VBAというべき箇所は皆無ですから、VBAの使える環境であれば、Access VBAでもWord VBAでも動くはずです。
サンプルマクロで行っている処理
VBAのCreateObject関数の引数に、文字列「"WIA.ImageFile"」を指定することで、WIA.ImageFileオブジェクトへの参照が取得できます。
Set img = CreateObject("WIA.ImageFile")
参照を取得したImageFileオブジェクトのLoarFileメソッドの引数に、PNGファイルのパスを指定することでImageFileオブジェクトを使ってPNGファイルを扱えるようになります。
img.LoadFile "C:\temp\sample.png"
ImageFile.LoadFileメソッドでPNGファイルを読み込んでから、ImageFile.Heightプロパティで高さ、ImageFile.Widthプロパティで幅をそれぞれ取得してVBAのMsgBox関数の引数に指定しているのが上記のマクロです。
MsgBox img.Height & "px × " & img.Width & "px"
最終更新日時:2024-09-12 13:56
Home » エクセルマクロ・Excel VBAの使い方 » VBAでPNGファイルのサイズを取得する