文書内に挿入した画像に枠を付ける(Word)
文書内に挿入した画像に枠を付ける
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! 超便利、なう。
おわりに
逆に、画像に施した枠線を除去するマクロの書き方がわからない。
誰か知っている人がいたら教えろ教えてください。
追記
枠線を消すマクロ、できました。