Wordで画像並べてみたけど、、、
うまく収まらない!
サイズ一括で変更できなくて手間!!!
なんですよね、、、
例えばWordで論文なり何なり文書を作成しているときに、画像サイズを揃えて並べるじゃないですか。
そんなときに、画像を一括で処理するVBAがありえん便利なのです。
ある程度パッケージ化されていた方がパクリ学びやすいし、アレンジもしやすいと思うので、
今回はWordの文書内の画像を一括で指定サイズの正方形にするスクリプトを紹介しようと思います!!!
-
一括で指定倍率に拡大する
は今後作成します
Wordの文書内の画像を一括で指定サイズの正方形にする
なぜ正方形?なぁぜなぁぜ?と思う方いると思います。
、、、仕事で必要だったからです!!!
こんな使い道の狭すぎるマクロを書くの、自分だって不本意なんですよ。
ただ、備忘録的に残しておくと何かの役に立つのではないかと思ってます。
今回の要件は、
- もとは長方形の画像
- 縦横の短いほうに合わせて正方形にする
- 縦横の長いほうは中央で切り取る
- サイズを指定する
です
申し訳ないのですが、今回のスクリプトはかなり簡便なので、行内図すべて含みます。画像以外に図形がある場合はそれも対象になります。
では早速コードです
コピペしてください。
word内での図形設定にあるサイズ(mm)と、バックグラウンド処理で使われるサイズ(point)が違うみたいで、補正してます。
Sub size_square()
'
' 1 mm = 2.85 ポイント
'
Dim Image As Object
Dim size As Double
'画像のサイズを入力
size = InputBox("size (mm) : ") * 2.85
For Each Image In ActiveDocument.InlineShapes
If Image.Type = wdInlineShapePicture Then
'縦横の大小で場合分け
If Image.Width = Image.Height Then
'縦横の長さを揃えるために両端をcropする
ElseIf Image.Width > Image.Height Then
With Image.PictureFormat
.CropLeft = (Image.Width - Image.Height) / 2
.CropRight = (Image.Width - Image.Height) / 2
End With
'こちらも同じく
Else
With Image.PictureFormat
.CropTop = (Image.Height - Image.Width) / 2
.CropBottom = (Image.Height - Image.Width) / 2
End With
End If
'縦横比を固定
Image.LockAspectRatio = msoTrue
'サイズを変更
Image.Width = size
End If
Next Image
End Sub
今回は私の都合で敢えて正方形にした上でサイズを変更しましたが、そのままの縦横比を固定してサイズを変更したい場合は下のようにすればいいです!!
Sub size()
'
' 1 mm = 2.85 ポイント
'
Dim Image As Object
Dim size As Double
'画像のサイズを入力
size = InputBox("size (mm) : ") * 2.85
For Each Image In ActiveDocument.InlineShapes
'縦横比を固定
Image.LockAspectRatio = msoTrue
'サイズを変更
Image.Width = size
Next Image
End Sub
おわり
簡単でしたね!
次回はサイズはそのままでzoomするスクリプトをご紹介します。