文書内に挿入した画像に枠を付ける

Wordの文書内に挿入した画像に枠囲いを付けるのは、結構めんどくさいので、枠で囲うマクロを作った。
こんなことができます
Wordの文書内に挿入した画像に、ワンクリックで囲みを付ける。ただ、それだけ。
目次
画像に枠囲みを施すのはめんどくさい
Wordで文書中に画像を挿入し、枠囲みを施すのは実にめんどくさい。
このことをまず示す。
画像の挿入

まず、「挿入」タブをクリックする。

次は、「画像」をクリック。

画像ファイルのある場所をクリックする。

ファイルを選び、[挿入]をクリック。

やっと画像が挿入された。デカっ!

テキトーなサイズに調整しよう。不愉快きわまりない画像なので小さくしてやれ。
たかが画像を挿入するだけで、こんなに手間がかかるのである。(ちなみに、このとき「段落」設定で「行間」を「固定値」にしていると、ちょっとビックリするような状態になる。)
画像に枠線を施す
次は、牛だ。

いや、違った。枠線だ。

挿入した画像を右クリックし、コンテキストメニューの「図の書式設定」をクリック。

「塗りつぶしと線」アイコンをクリック。

線の種類とか色をテキトーに設定。

画像に枠線が施された。
どうだろう。めちゃくちゃめんどくさくないか?
こういうときのための、マクロですよ!
画像に枠囲みを施すマクロ
まずはコードをお目にかけよう。
リスト1 標準モジュール
Public Sub SetBordersForFigureMain() '……(1)'
Call setBordersForFigure
End Sub
Private Sub setBordersForFigure( _
Optional ByVal LineStyle As WdLineStyle _
= wdLineStyleSingle, _
Optional ByVal LineWidth As WdLineWidth _
= wdLineWidth100pt) '……(2)'
Dim ilShp As InlineShape
If Selection.Type = wdSelectionInlineShape Then '……(3)'
If Selection.InlineShapes.Count = 0 Then Exit Sub '……(4)'
Set ilShp = Selection.InlineShapes(1)
Else
Exit Sub
End If
With ilShp.Borders '……(5)'
.OutsideLineStyle = LineStyle
.OutsideLineWidth = LineWidth
End With
End Sub
(1)の
Public Sub SetBordersForFigureMain() Call setBordersForFigure End Sub
は、下のsetBordersForFigureメソッドを呼び出しているだけ。メインの処理はそっちに書いてある。
で、setBordersForFigureメソッド。
(2)の
Private Sub setBordersForFigure( _
Optional ByVal LineStyle As WdLineStyle _
= wdLineStyleSingle, _
Optional ByVal LineWidth As WdLineWidth _
= wdLineWidth100pt)
で引数の設定。
LineStyleは線の種類で、LineWidthは線の太さ。
両方ともOptionalにして、デフォルト値は一番よく使うっぽいやつにしてある。
(3)の
If Selection.Type = wdSelectionInlineShape Then If Selection.InlineShapes.Count = 0 Then Exit Sub '……(4)' Set ilShp = Selection.InlineShapes(1) Else Exit Sub End If
は、選択範囲のチェック。
Selectionオブジェクトの状態を確認して、実行するかどうかを判定。
今回は、〝選択している画像に枠線を施す〟というマクロにする。
Selection.Typeの値がwdSelectionInlineShapeだったら、挿入された画像だという判定にする。
ところが、困ったことに、選択中のオブジェクトが行内に挿入した〝図形〟であっても「Selection.Type = wdSelectionInlineShape」がTrueになってしまう。
で、そのときには、なぜかInlineShapesのCountプロパティが0なので、
Set ilShp = Selection.InlineShapes(1)
で実行時エラーになってしまう。
わけがわからないが、仕方がないので(4)の
If Selection.InlineShapes.Count = 0 Then Exit Sub
で、Selection.InlineShapes.Countが0のときは何もせずに抜けることにした。うーむ、わけわからん。
ともかく、ここまで来ると、
Set ilShp = Selection.InlineShapes(1)
により、変数ilShpには選択中の画像がぶち込まれているので、あとは(5)の
With ilShp.Borders .OutsideLineStyle = LineStyle .OutsideLineWidth = LineWidth End With
で線の種類と線の太さを設定しておしまい。
使ってみる
クイック アクセス ツール バーにマクロを登録して使ってみる。

Yes! 超便利、なう。
おわりに
逆に、画像に施した枠線を除去するマクロの書き方がわからない。
誰か知っている人がいたら教えろ教えてください。
追記
枠線を消すマクロ、できました。