|
Abebobo さん、こんにちわ。
>その写真の原型の Weight / Width の値を ローカルで探しましたが 取得の仕方がわかりませんでした。
シート上にある写真の情報をログにしてみました。
Sub test()
Dim ws(1 To 2) As Worksheet, sh As Shape
'
Set ws(1) = Application.ActiveSheet '表示しているシート
Set ws(2) = Application.Workbooks.Add.Worksheets(1) 'ログ取りシート
'
ws(2).Range("A1:F1").Value = Array("名前", "位置", "幅", "高", "元幅", "元高")
NN = 1
For Each sh In ws(1).Shapes
If sh.Type = msoPicture Then
NN = NN + 1
ws(2).Cells(NN, 1).Value = sh.Name
ws(2).Cells(NN, 2).Value = sh.TopLeftCell.Address & ":" & sh.BottomRightCell.Address
ws(2).Cells(NN, 3).Value = sh.Width
ws(2).Cells(NN, 4).Value = sh.Height
'元の大きさ(100%)でサイズ取得
sh.ScaleHeight 1, msoTrue
sh.ScaleWidth 1, msoTrue
ws(2).Cells(NN, 5).Value = sh.Width
ws(2).Cells(NN, 6).Value = sh.Height
'縮小後のサイズに戻す
sh.Width = ws(2).Cells(NN, 3).Value
sh.Height = ws(2).Cells(NN, 4).Value
End If
Next
'おわる
Erase ws
End Sub
こんな感じです(動作確認 XL2003およびXL2007 & WinXP)。
縮小率に関連するプロパティを見つけられなかったので、縮小を解除してサイズを取得しています。
「元のサイズを基準にする」にチェックがついていない状態で加工されていれば偽装されちゃいますけどね(ダイアログでは原型のサイズで確認できます)。
|
|