t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

Word VBA マニュアル等で多用する赤枠 ~ 背景画像を掴んでしまう失敗をなくす裏ワザ

今回はWord VBAネタ。

Wordで業務マニュアル等を作っていると、スクリーンショットの一部を赤枠で囲うことがよくある。
通常はオートシェイプで塗りつぶし無しで作るが、この赤枠は枠の部分しかマウスで掴むことが出来ず、移動させるつもりがリサイズしてしまったり、背景にある画像をつかんでずらしてしまったり、なかなか扱いにくい。
(慎重にやれば良いのだが、細かいところに神経を使うのが面倒くさい。もっとザクっとおおざっぱに操作したい。)

そこで、VBAで真ん中を掴める赤枠を作ってみた。下図のようにマウスカーソルを重ねてみると違いが分かる。
f:id:t-hom:20150217224907p:plain

コードは以下のとおり。

Sub AddSpecialRedFrame(ByVal w As Integer, ByVal h As Integer)
    '真ん中をつかめる赤枠
    Application.ScreenUpdating = False
    On Error GoTo Final
    Dim x As Double, y As Double
    'カーソルの位置から座標を割り出す。+5は微調整
    x = Selection.Information(wdHorizontalPositionRelativeToPage) + 5
    y = Selection.Information(wdVerticalPositionRelativeToPage) + 5
    With ActiveDocument.Shapes.AddShape(msoShapeRectangle, x, y, w, h)
        With .Fill
            .Transparency = 1
            .ForeColor.RGB = vbRed
        End With
        With .Line
            .Weight = 2.25
            .ForeColor.RGB = vbRed
        End With
    End With
Final:
    Application.ScreenUpdating = True
End Sub

'AddSpecialRedFrameを使って100×30の囲み枠を追加するサンプルコード
Sub test()
    Call AddSpecialRedFrame(100, 30)
End Sub

上記のコードをWord VBAに貼り付けてtestマクロを実行すれば、カーソル付近に赤枠が追加される。

これは単に、オートシェイプの塗りつぶしを無くすんじゃなくて、透明度を100%にしているだけなのでVBAでなくても出来る。

ただマクロに登録しておくとわざわざ手作業で透明度100%にする必要が無いので便利だと思う。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。