画像の大きさをドラッグで調整していると、縦と横の倍率が異なった不自然な形になっていることがあります。横サイズをレイアウトに収まるように調整した後から、縦サイズを適当に合わせるような作業をした場合に起こりがちです。このマクロは、そうした縦横比の違いを解消するものです。
なお、ここで扱う画像は InlineShape
(行内)であることを前提にしています。
すべてのInlineShapeの縦横比をそろえるマクロ
文書内のInlineShapeについて、縦の倍率(ScaleHeight
プロパティ)に横の倍率(ScaleWidth
プロパティ)の値を設定します。
Sub 画像縦横比の一括補正()
Dim aIShp As InlineShape
For Each aIShp In ActiveDocument.InlineShapes
With aIShp
If .ScaleHeight <> .ScaleWidth Then
.ScaleHeight = .ScaleWidth
End If
End With
Next aIShp
Set aIShp = Nothing
End Sub
必要に応じて種別判定も
InlineShapeをすべて処理してしまうことに支障がある場合は、Typeプロパティで種別判定などを加えるとよいでしょう。
例 : If aIShp.Type = wdInlineShapePicture Then
~
Shapeオブジェクトの ScaleHeight、ScaleWidthについて
行内の画像(InlineShapeオブジェクト)のScaleHeight、ScaleWidthはプロパティです。
行内以外の画像(Shapeオブジェクト)のScaleHeight、ScaleWidthはメソッドなのです。つまり、値を設定できますが、現在の値の取得はできません。ややこしいですね。ダイアログボックスでは[倍率]に表示されますが、VBAから取り出せないのです。