
VA公用文の使い心地はいかがですか?

マークダウンを使うと、こんなに簡単に構造化された文章が書けるんですね。大満足です。
ただ、見出しや本文の一部をゴシック体にするのが面倒です。

太字に設定すれば良いだけではないですか?

太字にすると文字送りが少しだけ大きくなり、行ごとの文字の並びが乱れてしまうので、ゴシック体にしたいんです。

分かりました。見出しや選択範囲を簡単にゴシック体にできるマクロを作ってみましょう。
それ以外にも、フォントサイズの拡大は、段落前の行間隔、段落の分離や分割に関する設定も同時にできるようにしちゃいます。選択範囲に傍点を追加できるようにもしましょう。
サンプルのダウンロード
インストール方法
操作マニュアル
仕様
1. プロジェクト概要
Word文書の「見出しスタイル」や「標準スタイル」の定義(フォント種別、サイズ、段落間隔など)を、ボタン一つで段階的に「強調表示(ゴシック・拡大・間隔増)」または「標準表示(明朝・標準・間隔なし)」へ切り替えるVBAアドイン。
また、テキスト選択時には、その範囲に対して「太字」や「傍点」のトグル操作を行う機能を併せ持つ。設定値はドキュメントプロパティに保存され、Mac版Wordでも動作する互換性を持つ。
2. ファイル構成
プロジェクトは以下のモジュールで構成すること。
| モジュール名 | 種類 | 役割 |
| basConfigStyle | 標準モジュール | 文書全体のスタイル定義を変更するコアロジック |
| basControl | 標準モジュール | リボンコールバック、処理の振り分け(選択範囲か全体か)、フォーム表示 |
| frmStyleOption | ユーザーフォーム | スタイル変更時の挙動(フォント変更の有無など)を設定するUI |
| Settings | 標準モジュール | フォント名、サイズ、傍点の種類などの定数定義 |
| VariablesManager | クラスモジュール | 設定値のメモリ内管理、設定ファイルとのI/O仲介 |
| SettingsManager | クラスモジュール | 設定値の永続化(カスタムドキュメントプロパティへの保存・読込) |
| ThisDocument | ThisDocument | 更新履歴の保持およびドキュメントのエントリポイント |
3. モジュール詳細仕様
(1) Settings(標準モジュール)
ツール全体で使用する書式の定数を定義する。
- 定数リスト:
strFont: 標準フォント名(例:”MS 明朝”)。sngFont: 標準フォントサイズ(例:12pt)。strBoldFont: 強調用太字フォント名(例:”MS ゴシック”)。sngBoldFont: 強調用フォントサイズ(例:13pt)。strEmphasis: 傍点の種類(”丸” または “点”)。
(2) basConfigStyle(標準モジュール)
プロシージャ: ConfigStyle(lngStep As Long)
- 機能: 文書内の「表題」および「見出し 1」~「見出し 9」スタイルの定義を一括変更する。
- 引数:
lngStep(1: 進む/強調設定へ, -1: 戻る/標準設定へ)。 - 処理ロジック:
- 範囲特定: 文書内で最初に使用されている見出しレベル (
xFirst) を特定する。 - 設定値準備:
VariablesManagerからユーザー設定(フォント変更可否、サイズ変更可否、段落間隔設定など)を読み込む。 - ループ処理: 表題(0)から見出し9までをループし、以下のプロパティを変更する。
- フォント:
lngStep=1ならゴシック(太字用)、-1なら明朝(標準用)へ変更(設定で有効な場合)。 - サイズ:
lngStep=1なら拡大、-1なら標準サイズへ変更。グリッド線に合わせる設定も切り替える。 - 段落書式:
lngStep=1なら「段落前の間隔」を1行あけ、「次の段落と分離しない」「段落を分割しない」をTrueにする。-1ならこれらを解除する。
- フォント:
- 同期処理: 見出しスタイル変更に伴い、アウトライン番号(
ListGalleries(wdOutlineNumberGallery))のフォント設定も同期させる。 - 再適用: 基準となる段落に対して、更新されたリストテンプレートを再適用して表示を更新する。
- 範囲特定: 文書内で最初に使用されている見出しレベル (
(3) basControl(標準モジュール)
プロシージャ: ChangeForward / ChangeBackward (メイン動作)
- 機能: ユーザーの選択状態に応じて処理を分岐する。
- 分岐ロジック:
- テキスト選択時 (
wdSelectionNormal):ChangeForward: 選択範囲のフォントを「標準」⇔「太字(ゴシック)」でトグル切り替え (ToggleSelectionFont)。ChangeBackward: 選択範囲の「傍点」の有無をトグル切り替え (ToggleSelectionEmphasis)。
- 選択なし(カーソルのみ):
ChangeForward:ConfigStyle(1)を呼び出し、文書全体のスタイル定義を「強調」側へ変更。ChangeBackward:ConfigStyle(-1)を呼び出し、文書全体のスタイル定義を「標準」側へ戻す。
- テキスト選択時 (
リボンコールバック:
RxBtnChangeForward,RxBtnChangeBackward,RxBtnShowStyleOptionを実装し、対応するプロシージャを呼び出す。
(4) VariablesManager & SettingsManager(クラスモジュール)
- VariablesManager:
- 各オプション(フォント変更、サイズ変更、段落前1行、段落分離禁止など)のEnable/Disable状態を保持するプロパティを持つ。
- 初期化時に
SettingsManagerを呼び出して設定をロードする。
- SettingsManager:
ThisDocument.CustomDocumentPropertiesを使用して設定値を保存・読み込みする(プレフィックスVA_を使用)。Mac版Wordでの安定性を考慮し、レジストリや外部ファイルは使用しない。
(5) frmStyleOption(ユーザーフォーム)
- 機能: スタイル一括変更時の詳細挙動を設定する。
- コントロール:
- フォントをゴシックにする (CheckBox)
- フォントを拡大する (CheckBox)
- 段落前の行を1行空ける (CheckBox)
- 次の段落と分離しない (CheckBox)
- 段落を分割しない (CheckBox)
- 動作: OKボタンで
VariablesManager->SettingsManagerを通じて設定を保存する。
(6) ThisDocument
- メタデータ:
- ツール名:「VAスタイル」
- 更新履歴:Ver100~250(リボン対応、クラス化、傍点機能追加などの経緯を記載)。
4. 機能要件詳細
- コンテキストに応じた挙動:
- 「進む」ボタン:
- 範囲選択中 → 部分的な強調(フォント変更)。
- 選択なし → 文書構造の強調(見出しスタイルの定義変更)。
- 「戻る」ボタン:
- 範囲選択中 → 強調手段(傍点)の付与/解除(※仕様上、戻るボタンに傍点が割り当てられている)。
- 選択なし → 文書構造の標準化(見出しスタイルの定義リセット)。
- 「進む」ボタン:
- スタイル定義の直接操作:
- 個々の段落の書式を変えるのではなく、
ActiveDocument.Styles("見出し X")自体を書き換えることで、文書全体の一貫性を保つ設計とすること。
- 個々の段落の書式を変えるのではなく、
- エラーハンドリング:
- 見出しスタイルが存在しない場合や、アウトライン設定が不完全な場合でもエラーで停止せず、可能な範囲で処理を行う(または安全に終了する)こと。
On Error GoTo Cleanupパターンを使用。
- 見出しスタイルが存在しない場合や、アウトライン設定が不完全な場合でもエラーで停止せず、可能な範囲で処理を行う(または安全に終了する)こと。
- UI:
- リボンに「進む」「戻る」「設定」のボタンを配置する。
- 処理中はマウスカーソルを砂時計にするなど、ユーザーフィードバックを行う。


コメント
傍点を追加する機能を追加しました。(Ver110)
プロシージャ名を修正しました。(Ver111)
表の中でも右クリックメニューを使えるようにしました。(Ver112)
アドインではなくテンプレートとして使用した場合に右クリックメニューが重複したまま終了するバグを修正しました。ただし、重複して表示されるバグは修正できていません。
セッティングモジュールの定数を変更することで、右クリックメニューを停止できるようにしました。(Ver113)
右クリックメニュー使用の有無を定数で設定できるようにしたうえで、使用停止をデフォルトに設定しました。(Ver120)
自宅の環境ではどうしても右クリックメニューが正常に動作しなくなりました。
(事務所の環境では正常に動作しています。)
原因が判明するまでは、使用を停止したいと思います。
使用する場合は、マクロの「Setting」モジュールの「コンテキスト(右クリック)メニューを使用する」の設定値を「True」に変更してください。
表題のスタイルも変更できるようにしました。
「VA公用文」のインデントがポイント単位で設定するように変更されたため、プログラムを簡潔にしました。(Ver130)
見出しが第1レベルから始まっていない場合にスタイルが変更できないバグを修正しました。
表題がない場合はスキップするように修正しました。(Ver131)
最初の見出しのインデントが解除されるバグを修正しました。(Ver132)
動作が安定しないため、右クリックメニュー設定機能を削除しました。(Ver140)
選択範囲のフォントの操作をショートカットキーからクイックアクセスツールバーに変更しました。(Ver150)
次の変更を行いました。(Ver200)
・フォントサイズの拡大機能を追加
・見出し番号のフォント変更機能を追加
・オプション設定メニューの初期値設定機能を削除
・オプションの設定値をテンプレートではなく設定ファイルに保存
段落前の間隔を1行空ける機能を追加しました。(Ver210)
変数オブジェクトの生成および解放コードを追加しました。(Ver211)
見出しスタイル復元時、オプションの設定にかかわらず標準状態に復元するように変更しました。(Ver220)
エラー処理を追加しました。(Ver221)
設定値の保存先を設定ファイルからカスタムドキュメントプロパティに変更しました。(Macで動作するようにするため)
EnableCancelKeyの設定オプションを削除しました。(Mac用Wordの不安定が改善されたため)(Ver230)
Ver200~Ver221がスタートアップフォルダに自動作成していた「VAスタイル.ini」ファイルは、不要となりましたので削除してください。
設定用モジュールの処理を高速化しました。
モジュールの構成を見直しました。
プロジェクト名をTemplateProjectからVA_Styleに変更しました。(Ver240)
basConfigStyle モジュールのロジックを共通化しました。
標準フォント(MS 明朝)と異なる場合は解除を実行するように条件を緩和しました。
コードの細部記述要領の見直しました。(Ver241)