Home » エクセルマクロ・Excel VBAの使い方 » VBAでPNGファイルのサイズを取得する

動作検証バージョン:Windows 11 Home + Microsoft Windows Image Acquisition Library v2.0
+ 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で読み込むにはいくつかの方法があるようですが、以下のようなコードがシンプルで済みます。

Sub PNGファイルのサイズを取得する()
 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ファイルのサイズを取得する

「エクセルマクロ・Excel VBAの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.
.