ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

お勉強コミュの画像の大きさの取得

  • mixiチェック
  • このエントリーをはてなブックマークに追加
画像の大きさを取得する

--------------------------------------------------------------------------------
ユーザーが選択した画像をワークシートに挿入するには次のようにします。

Sub Sample1()
Dim PicFile As String
PicFile = Application.GetOpenFilename()
If PicFile = "False" Then Exit Sub
ActiveSheet.Pictures.Insert PicFile
End Sub

GetOpenFilenameメソッドで画像ファイルを指定して、PicturesコレクションのInsertメソッドで挿入します。簡単ですね。では、選択された画像の大きさを、挿入する前に取得するにはどうしたらいいでしょう。何となくVBAだけでは無理っぽい予感がしますので、ここはひとつ発想を変えて「とりあえず挿入してみて、挿入した画像の大きさを調べる」という手を検討してみます。挿入する画像(Sample.jpg)の大きさは、上のように「W283 × H212」です。

Sub Sample2()
Dim PicFile As String
PicFile = Application.GetOpenFilename()
If PicFile = "False" Then Exit Sub
ActiveSheet.Pictures.Insert PicFile
With ActiveSheet.Pictures(1)
MsgBox .Width & " × " & .Height
End With
End Sub

なんか微妙に違いますね。

実は、画像を挿入する前に、画像の大きさを取得するのは、けっこう簡単にできます。それもVBAの機能だけで。

Sub Sample3()
Dim PicFile As String, P
PicFile = Application.GetOpenFilename()
If PicFile = "False" Then Exit Sub
''選択した画像ファイルをバリアント型変数に格納する
Set P = LoadPicture(PicFile)
With ActiveSheet.Pictures(1)
MsgBox CLng(P.Width * 0.0378) & " × " & CLng(P.Height * 0.0378)
End With
End Sub

LoadPicture関数は、引数に指定した画像ファイルをImageコントロールのPictureプロパティに設定するときなどに使います。LoadPicture関数はPicture型のオブジェクトを返しますが、このPicture型オブジェクトにはWidthプロパティとHeightプロパティが実装されています。

画像の大きさはピクセルですので、単位を変換するために0.0378を乗じています。これを応用すると、次のように画像を管理するUserFormなども作成できそうですね。

http://officetanaka.net/excel/vba/tips/tips87.htm

コメント(0)

mixiユーザー
ログインしてコメントしよう!

お勉強 更新情報

お勉強のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング