- ベストアンサー
エクセルVBAで、画像の倍率を知るには、どのようにすればいいのでしょう
エクセルVBAで、画像の倍率を知るには、どのようにすればいいのでしょうか? あるボタンを押したら選択されている画像の倍率を読み込みたいのですが、どのように書けばいいのかわかりません。selection.??? ではわからないのでしょうか? すみませんがどなたか教えて下さい!
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
記録できましたっけ? ScaleWidth|Heightメソッドを使って元の大きさから計算して求めるのが近道だと思ってました。 Sub test() Dim ret If TypeName(Selection) = "Picture" Then ret = fGetPicScale(Selection) If IsArray(ret) Then MsgBox "x:= " & ret(0) & vbLf & "y:=" & ret(1) End If End If End Sub Function fGetPicScale(ByRef pic As Picture) Dim xy(0 To 1) As Single Dim W As Single Dim H As Single Dim LC As Long On Error GoTo errExit With pic.ShapeRange W = .Width H = .Height LC = .LockAspectRatio .LockAspectRatio = msoFalse .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue xy(0) = W / .Width xy(1) = H / .Height .Width = W .Height = H .LockAspectRatio = LC End With fGetPicScale = xy errExit: End Function
その他の回答 (1)
- nattocurry
- ベストアンサー率31% (587/1853)
手動で倍率を変えてみて、それを「マクロの記録」してみましたか? それで解るはずです。
お礼
返事が遅くなりスミマセンでした。 私の説明不足が原因で、ご回答いただいた内容は 求めていたものと少し違っていましたが マクロの記録が出来るとは知りませんでした。 今後の作業では役立てていこうと思います。 ありがとうございました。
お礼
返事が遅くなりスミマセンでした。 教えていただいた方法ですとトリムしたときに 倍率が上手く出ないような感じですが 大変貴重なご回答で解決しました ありがとうございました。