Word VBA Tips Vol.2
前回に続いてWordマクロVBAの第2弾だ。このマクロは前回紹介した選択文字列の両端にカッコを挿入するの進化版。
一番のポイントは選択箇所を決まった文字数分避けて再選択させる部分だ。マイクロソフト公式のTipsを調べて攻略したがかなりわかりにくいので苦労した、もし後続に続く方がいたときのために公開しておきます。
-マクロの目的-
特定の選択した文字列の両端に半角2文字分(トータル4文字)を挿入しそののち挿入した最初と最後の半角1文字分ずつを最初の選択範囲に加え囲み線をいれる。
実行例)
実行前: 筆者が言いたいそのとは何をさしているか?
実行後: 筆者が言いたい
その とは何をさしているか?
※WORDがインストールされていないPCでは正常に表示されない可能性があります。
では、種明かしを注釈付でプログラムを記載しておくのでご参考に・・・
Sub □囲み()
'
' □囲み Macro
' 記録日 2005/XX/XX 記録者 マッキョ
'
' 選択文字列数の格納場所を宣言
Dim X As
Integer
' 選択文字列範囲の一時格納場所を宣言
Dim Wrange1 As Range
' 選択文字列を文字列型として格納する場所を宣言
Dim sentaku As
String
' 囲み線用の選択開始位置の格納場所を宣言
Dim kaisi As
Integer
' 選択文字列の使用を宣言
Set Wrange1 =
ActiveDocument.Range(Start:=Selection.Start, End:=Selection.End)
' 整合を取るため再度格納
sentaku =
Wrange1
' 文字列の長さを取得
X =
CInt(Len(sentaku))
' 囲み線用の選択開始位置を格納
kaisi = X + 3
' 最初の半角空白の挿入場所に移動
Selection.MoveLeft unit:=wdCharacter, Count:=1
' 半角空白2字の挿入を実行
Selection.TypeText Text:="□□ "(本当は□部分は空白です)
' 最後の半角空白の挿入場所に移動
Selection.MoveRight unit:=wdCharacter, Count:=X
' 半角空白2字の挿入を実行
Selection.TypeText Text:="□□"(本当は□部分は空白です)
' 囲み線の選択開始位置に移動
Selection.MoveLeft unit:=wdCharacter, Count:=kaisi
' 囲み線の選択範囲をセット(F8で拡張子最後にESCならマクロでも作れる)
Selection.Extend
Selection.MoveRight unit:=wdCharacter, Count:=X + 2
Selection.EscapeKey
' 囲み線の実行
With
Selection.Font.Borders(1)
If
.LineStyle = wdLineStyleNone Then
.LineStyle = Options.DefaultBorderLineStyle
.LineWidth = Options.DefaultBorderLineWidth
.Color
= Options.DefaultBorderColor
Else
.LineStyle = wdLineStyleNone
End If
End With
End Sub
ヒントとして一つ付け加えるなら、マクロ操作中にF8(拡張)を使用すれば命令として範囲選択はさせることができる。あとはその間隔をCount命令でなく変数によって操作すれば、まあ、CとかVBとか何でもいいから言語をちょっとでもかじったことがある人なら誰でも自由にコントロールできるはずだ。