• ベストアンサー

エクセルVBAで、画像の倍率を知るには、どのようにすればいいのでしょう

エクセルVBAで、画像の倍率を知るには、どのようにすればいいのでしょうか? あるボタンを押したら選択されている画像の倍率を読み込みたいのですが、どのように書けばいいのかわかりません。selection.??? ではわからないのでしょうか? すみませんがどなたか教えて下さい!

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.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

bluemetalic
質問者

お礼

返事が遅くなりスミマセンでした。 教えていただいた方法ですとトリムしたときに 倍率が上手く出ないような感じですが 大変貴重なご回答で解決しました ありがとうございました。

その他の回答 (1)

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

手動で倍率を変えてみて、それを「マクロの記録」してみましたか? それで解るはずです。

bluemetalic
質問者

お礼

返事が遅くなりスミマセンでした。 私の説明不足が原因で、ご回答いただいた内容は 求めていたものと少し違っていましたが マクロの記録が出来るとは知りませんでした。 今後の作業では役立てていこうと思います。 ありがとうございました。

関連するQ&A