No.3ベストアンサー
- 回答日時:
#2です。
EnhancedMetaFileのお勉強をしていました。ワークシートに貼り付けた画像を選択した状態で、下記のコードを実行すると、オリジナルのピクセル数が取得できると思います。
・APIの定数、関数等の入手先-必要なものをセットしないと動きません。長いので割愛します。
http://homepage2.nifty.com/nonnon/Win32Api/
・最もキーとなった、参考URL
http://nienie.com/~masapico/api_GetEnhMetaFileBi …
Sub getPixelCount()
Dim SrcData() As Byte
Dim hSrcMetaFile As Long
Dim BufSize As Long
Dim SrcIdx As Long
Dim RecordHeader As emr
Dim strechDibRecord As EMRSTRETCHDIBITS
Selection.Copy
If OpenClipboard(0) Then
hSrcMetaFile = GetClipboardData(CF_ENHMETAFILE)
hSrcMetaFile = CopyEnhMetaFile(hSrcMetaFile, vbNullString)
CloseClipboard
End If
If hSrcMetaFile = 0 Then Exit Sub
BufSize = GetEnhMetaFileBits(hSrcMetaFile, ByVal 0, ByVal 0)
ReDim SrcData(BufSize)
BufSize = GetEnhMetaFileBits(hSrcMetaFile, BufSize, SrcData(0))
If BufSize = 0 Then Exit Sub
SrcIdx = 0
While SrcIdx < BufSize
MoveMemory RecordHeader, SrcData(SrcIdx), Len(RecordHeader)
If RecordHeader.iType = EMR_STRETCHDIBITS Then
MoveMemory strechDibRecord, SrcData(SrcIdx), Len(strechDibRecord)
End If
SrcIdx = SrcIdx + RecordHeader.nSize
Wend
DeleteEnhMetaFile hSrcMetaFile
With strechDibRecord
Debug.Print ".cxSrc - ", .cxSrc
Debug.Print ".cySrc - ", .cySrc
End With
End Sub
Public Function EnumFunc( _
ByVal hdc As Long, _
ByVal pHandles As Long, _
ByVal pRecord As Long, _
ByVal HandleNum As Long, _
ByVal pData As Long) As Long
Dim eh As ENHMETARECORD
RtlMoveMemory VarPtr(eh), pRecord, Len(eh)
EnumFunc = 1
End Function
No.2
- 回答日時:
シートに貼り付けた画像は、元画像のサイズや、解像度dpiの情報を保持している様ですが、
ローカルウィンドウを表示させてメンバーを眺めていても、それらしい物が見つかりません。
ご存じの方がいたら、自分も是非知りたいです。
ベタな方法ですが、解像度96dpi決め打ちで、下記により画像のサイズ(ピクセル数)が取得できるかも。
(クリップボードから貼り付けたり、解像度情報の無いファイルだと、96dpiと見なされる様です)
なお、VBAによる画像のリサイズについては、下記に回答した例があります。
http://okwave.jp/qa/q5647625.html
xl2000のコードです。他の環境で動かない場合はあしからず。
Type shapeSize
Width As Long
Height As Long
End Type
Sub test()
Dim shp As Shape
Dim shpSize As shapeSize
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shpSize = test2(shp)
Debug.Print shpSize.Width, shpSize.Height
End If
Next shp
End Sub
Function test2(shp As Shape) As shapeSize
Dim originalSize As shapeSize
Application.ScreenUpdating = False
originalSize.Width = shp.Width
originalSize.Height = shp.Height
shp.ScaleWidth 1, msoTrue
shp.ScaleHeight 1, msoTrue
test2.Width = shp.Width * 96 / 72
test2.Height = shp.Height * 96 / 72
shp.Width = originalSize.Width
shp.Height = originalSize.Height
Application.ScreenUpdating = True
End Function
No.1
- 回答日時:
やりたいのは分りますが
>VBAはほんの少しだけ触れた事のある初心者です。
では・・・
十分理解してからでないと難しいと思いますよ
まずは、この辺から
Sub Macro1()
Dim ws As Worksheet
Dim i
For Each ws In Worksheets
With ws
For i = 1 To .Shapes.Count
With .Shapes(i)
MsgBox "SheetName = " & ActiveSheet.Name & vbCrLf & _
"ShapeName = " & .Name & vbCrLf & _
"ShapeHeight = " & .Height & vbCrLf & _
"ShapeWidth = " & .Width
End With
Next i
End With
Next ws
End Sub
参考まで
この回答への補足
ご回答ありがとうございます。
この程度でしたら理解できます。
すみません、言い方が悪かったです。
画像の縦横のサイズではなく、画像自体のファイルサイズを取得して警告を出したいなと考えています。
メッセージボックスの出し方やループに関しては参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- フリーソフト 倍率自動調整して全画面表示できるフリーの画像ビューアー 1 2023/08/24 10:55
- Visual Basic(VBA) VBAマクロ 決まっていない行を選択して別シートへ貼付け 4 2023/02/16 16:08
- Visual Basic(VBA) PowerPoint VBA で画像の鮮明度を変更する方法がわかりません 2 2023/03/24 13:34
- デジタルカメラ 画像ファイルのサイズを理解する方法についてお教えください。 3 2022/09/18 12:54
- その他(AV機器・カメラ) 【大至急】写真加工に強い方、お願いします。 現在、自作のブックカバーをプリンパさんに依頼しています。 2 2023/06/07 21:30
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- その他(プログラミング・Web制作) 「問題も答えも画像」のクイズを簡単に作れるもの何かありませんでしょうか? 1 2022/05/30 17:29
- Excel(エクセル) エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法 1 2023/04/19 00:19
- Excel(エクセル) EXCELマクロでandroidタブレットから取りんだJPEGファイルをうまくセルに貼り付けられない 2 2022/07/31 15:03
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
【お題】 ・ありそうだけど、絶対に無いことわざを教えてください。
-
何歳が一番楽しかった?
自分の人生を振り返ったとき、何歳のころが一番楽しかったですか? 子供の頃でしょうか、それとも大人になってからでしょうか。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
Excel VBA シェイプの原型のサイズ取得方法
その他(プログラミング・Web制作)
-
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
-
エクセルのVBAでクリップボードにコピーした画像をpng(or jpg or bmp)保存したい
Visual Basic(VBA)
-
-
4
VBAエクセルに貼り付けた画像をセルにあった大きさにしたい(等倍)
Excel(エクセル)
-
5
エクセルVBAで画像を貼り付ける座標設定方法は?
PowerPoint(パワーポイント)
-
6
【エクセルのマクロ】クリップボードのbitmapをフォームに表示させたい
Visual Basic(VBA)
-
7
エクセル ユーザーフォームにオートシェープ(図形)を貼り付けるこは可能なのでしょうか?
Excel(エクセル)
-
8
エクセルVBAで、画像の倍率を知るには、どのようにすればいいのでしょう
Visual Basic(VBA)
-
9
Excelマクロ 選択画像の大きさを100%に
その他(Microsoft Office)
-
10
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
11
エクセル(2013)VBA-図の縦横比を変えずにセルにおさまる最大限の大きさにする
Excel(エクセル)
-
12
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
13
エクセルに貼付けた写真の容量(何バイトなのか)を確認する方法はありますか?
その他(パソコン・スマホ・電化製品)
-
14
エクセルVBAで縦向きの画像の挿入・回転
Excel(エクセル)
-
15
ExcelVBAで挿入画像の縦横サイズをゲットしたいです
Visual Basic(VBA)
-
16
【VBA】写真の貼り付けコードがうまく機能しません。
Visual Basic(VBA)
-
17
【VBA】 Alt+PrintScreenにてアクティブウィンドウのスクショを貼付する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メールの添付ファイルを印刷す...
-
エクセルへ画像挿入、元サイズ...
-
ワードの挿入画像が拡大する原因
-
「画像サイズが○○KBあって、350...
-
ExcelVBAで画像のサイズを調べ...
-
同じ解像度でもサイズが違う画...
-
PowerPointでのjpeg保存
-
天地700×左右150ピクセルって?
-
2つのjpegを1つのjpegにまと...
-
Excel2016 まとめてのコピ...
-
作成したオブジェクト(長方形な...
-
イラストレーターでテキストボ...
-
イラストレータの「パスの変形...
-
イラストレーター 複数の色が混...
-
イラレ10で四角い写真の角を丸...
-
Illustratorで四角形の底辺だけ...
-
Adobe Acrobat 9で挿入したテキ...
-
VBA横に並んでいるデータを縦に...
-
PDF-XChange Viewerで、データ...
-
エクセルで作成→GIMPにはりつけ?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルへ画像挿入、元サイズ...
-
「画像サイズが○○KBあって、350...
-
メールの添付ファイルを印刷す...
-
同じ解像度でもサイズが違う画...
-
ワードの挿入画像が拡大する原因
-
重たい画像を軽くする方法
-
ExcelVBAで画像のサイズを調べ...
-
【急募】webの顔写真編集について
-
解像度を理解できてませんdpiと...
-
PowerPointでのjpeg保存
-
天地700×左右150ピクセルって?
-
Photoshopでイラレの画質を鮮明...
-
画像サイズ(ピクセル)の変更
-
航空業界を志望してるものです...
-
JPEG 画像サイズと解像度について
-
web用の画像へ小さくする方法
-
Excel2016 まとめてのコピ...
-
2つのjpegを1つのjpegにまと...
-
PDF-XChange Viewerで、データ...
-
Adobe Acrobat 9で挿入したテキ...
おすすめ情報