秀丸マクロ, Word VBA, or the like -47ページ目

秀丸の弱点(文字書式)-補足

以前、この記事でWord文書内のボールド体や、下線付きの文字列を秀丸で編集するために、
タグで挟むという方法を紹介し、そのためのWordマクロを紹介しましたが、
ここでは秀丸側の処理を説明します。

例えば、下線の付いた文字列を&ltU>下線部</U>というようにタグで挟むとします。
これを、秀丸で実際に貼り付けて編集していくのですが、途中でタグの一部をうっかり消してしまったりすることが有ります。

例えば、こんな感じです。
&ltU>下線部</U
とか、
U>下線部</U>
などなど。

このまま気づかずにWordに戻して、書式を復元するマクロを使ってもこの部分には書式が適用されません。
結果として、意味不明の文字が残ったまま納品という可能性もあります。

なので、秀丸に貼りつけた場合には、以前この記事で紹介した強調表示の機能をつかって、
タグの付いた文字列を強調表示します。

例えばこんな感じです。
↓↓

$秀丸マクロ、ワードマクロ、翻訳ネタ、or the like-強調状態



この状態で、編集中にタグの一部を消してしまうとします。
すると、こんな感じで即座に強調表示が自動で無効になってしまいます。
↓↓

$秀丸マクロ、ワードマクロ、翻訳ネタ、or the like-強調表示無効

編集中に文字列の表示状態が変わるので、タグの一部が消えたということがよくわかります。
これで、かなりうっかり、タグを取ってしまうということを防ぐ事が出来ます。

設定の仕方は、この記事で紹介しているのでご参照ください。

強調表示の設定は、以下のように設定します。



全体的には、こんな感じです。
↓↓

$秀丸マクロ、ワードマクロ、翻訳ネタ、or the like-強調文字の設定



















強調表示の表示パターンです。
↓↓
$秀丸マクロ、ワードマクロ、翻訳ネタ、or the like-表示デザインの設定





















強調文字の設定は以下のとおりです。
↓↓

$秀丸マクロ、ワードマクロ、翻訳ネタ、or the like-強調文字列























&ltB>と、</B>との間に『.*?』という正規表現パターンを入力します。

大文字・小文字の区別はどちらでもいいですが、
ここでは正規表現にチェックを入れないとダメです。
.*?』は、改行を含まない不特定の文字列で、最も短いパターンという意味です

つまり、&ltB>から直近の</B>までという意味です。

この正規表現『.*?』は便利なので、このままで覚えておくとよいです。

上の例では、Wordの書式に近い強調表示設定をしています。

但し取り消し線については、同様のものがなかったので背景と同じ色にして見えなくしています。
選択して色を反転させれば見ることが出来ます。

このような設定にする必要はなく、
もっと目に見えて分かりやすい強調表示にしてもいいです。
蛍光ペンを使ったり、文字の色を変えたり・・

逆にタグ付きの文字って結構タグが増えると読みにくいので、
背景と同化させて目立たなくすると、ぐっと読みやすさが増します。
例えば、上付き/下付きの文字って、単位や化学式の場合が多いので、
僕は、背景の色に近いものにして目立たなくしています。

最後に、テキストファイルの文字列に書式タグを付けるための秀丸マクロのコードを載せておきます。
(登録方法についてはもう少しお待ちください。)
//文字が選択されていなければ終了
if (!selecting) endmacro;

//元のカーソル位置を記憶
#x1 = seltopx;
#y1 = seltopy;
#x2 = selendx;
#y2 = selendy;

//メニューの表示
menu "&U 下線", "&B ボールド", "&I イタリック", "&S 取り消し", "上付き", "下付き";

if (result == 0) endmacro;
else if (result == 1)
{
$opentag = "&ltU>";
$closetag = "</U>";
}
else if (result == 2)
{
$opentag = "&ltB>";
$closetag = "</B>";
}
else if (result == 3)
{
$opentag = "&ltI>";
$closetag = "</I>";
}
else if (result == 4)
{
$opentag = "&ltS>";
$closetag = "</S>";
}
else if (result == 5)
{
$opentag = "↑";
$closetag = "↑";
}
else if (result == 6)
{
$opentag = "↓";
$closetag = "↓";
}

$str = gettext (seltopx, seltopy, selendx, selendy);
begingroupundo;
disabledraw;
moveto #x1, #y1;
beginsel;
while (selendx != #x2 || selendy != #y2) right;
endsel;
delete;

insert $opentag + $str + $closetag;
endgroupundo;



文字を選択した状態で、このマクロを実行すると書式メニューが表示されます。
↓↓
$秀丸マクロ、ワードマクロ、翻訳ネタ、or the like-書式マクロ実行1










書式を選択すると、選択されている文字列を選択された書式のタグで挟みます。
↓↓
$秀丸マクロ、ワードマクロ、翻訳ネタ、or the like-書式マクロ実行2