Wordの変更履歴でアポストロフィ置換だけを一括承認する方法|標準機能の限界とVBA回避策

Wordの変更履歴に、アポストロフィ(’)が別のアポストロフィ(’ など)へ置き換わる修正が数千件混ざると、「他の修正は残したまま、この置換だけを一括で承認したい」と感じます。結論として標準機能だけで“文字内容を条件にした一括承認”はできないため、現場で使える回避策を手順付きでまとめます。

目次

Wordの変更履歴で「特定の置換だけ」を一括承認できるのか

まず前提として押さえておきたいのは、Wordの変更履歴(トラック変更)の承認(反映)機能は「変更の内容(どの文字が何に変わったか)」を条件にして絞り込む設計ではない、という点です。

できることは、主に次の範囲に限られます。

  • 変更を1件ずつ確認して承認/却下する
  • 文書内のすべての変更を一括承認する
  • (レビューアーや表示条件でフィルターして)表示されている変更をすべて承認する

一方で、今回のような「アポストロフィ置換だけ」「この文字→この文字だけ」といった文字内容ベースの条件で、変更履歴をまとめて承認する機能は、標準では用意されていません。

やりたいこと標準機能だけで可能?現実的なやり方
アポストロフィ置換だけを一括承認不可VBAで対象の変更だけAccept、または運用で回避
特定のレビューアーの変更だけ一括承認条件付きで可表示をレビューアーで絞り、「表示されている変更をすべて反映」
表示中(フィルター中)の変更をすべて承認可校閲タブの承認メニューから実行
全部承認してから記号を統一する可別コピーで全反映→変更履歴オフ→検索置換で正規化

なぜ「アポストロフィが別のアポストロフィに置換」されまくるのか

同じ“アポストロフィっぽい記号”でも、実は見た目が似ている別文字が複数あります。Wordや入力環境、コピー元によって混在しやすく、結果として「置換」や「自動変換」が大量発生します。

見た目名称(代表例)Unicodeよくある混在原因よく使われる場面
‘アポストロフィ / 直線シングルクォートU+0027英数入力、プログラム、機械的な置換コード、ID、簡易表記
’右シングルクォーテーションU+2019スマートクォート、自動書式、Webコピー英語組版、引用符、タイポグラフィ
‘左シングルクォーテーションU+2018スマートクォート、自動書式英語の開き引用符
ʼ修飾文字アポストロフィU+02BC辞書/学術系データ、外部システムからの貼り付け言語学表記など
'全角アポストロフィU+FF07全角変換、古いシステム、文字幅統一全角環境のデータ

特に多いのが、Wordのスマートクォート(直線の引用符を曲がった引用符に置換)です。入力時・貼り付け時・自動書式のタイミングで、‘ → ’のような置換が起き、変更履歴がオンだとその差分が大量に記録されます。

最初にやるべき「被害確認」:どの文字が混ざっているか把握する

「何が何に置換されているか」を把握しておくと、対処が一気に楽になります。おすすめは次の2つです。

方法:Wordの検索で“見た目が同じ記号”を個別に探す

  • 対象の記号(例:’)をどこかからコピーして、Wordの検索ボックスに貼り付けて検索する
  • 同様に、‘、‘、ʼ、'もそれぞれ検索して、混在状況を確認する

見た目だけでは判別が難しいため、「検索に貼り付けてヒットするか」で実務上は十分な確認になります。

方法:再発防止のため、スマートクォートの設定を確認する

大量置換の原因がスマートクォートなら、まずは設定を把握しましょう(あとで再発防止で詳しく扱います)。

回避策:レビューアーで絞って「表示されている変更をすべて反映」

もしアポストロフィ置換が特定の編集者(レビューアー)に偏っているなら、標準機能だけでもかなり近い運用ができます。

手順(例)

  1. [校閲]タブを開く
  2. [変更履歴の表示](または「表示」系のメニュー)で、レビューアーを特定のユーザーに絞る
  3. [承認▼]から[表示されている変更をすべて反映]を実行
  4. 表示条件を「すべてのレビューアー」に戻し、残りの変更を個別に確認

この方法の注意点は明確です。レビューアーで絞ると、その人のアポストロフィ以外の修正も一緒に反映されてしまう可能性があります。「同一編集者の修正ならまとめて反映してよい」という状況に限定して使うのが安全です。

向いているケース向いていないケース
アポストロフィ置換が特定のレビューアー由来 そのレビューアーの修正はある程度まとめて承認してよい VBAが使えない(社内ルールなど)アポストロフィ置換が複数人に混在 同じレビューアーが他の重要修正も大量に含む アポストロフィ置換だけを厳密に選別したい

回避策:VBAマクロで「アポストロフィ系の置換だけ」を承認する

最も目的に近いのが、変更履歴(Revision)を走査してアポストロフィ系文字だけの挿入/削除/置換を検出し、その変更だけをAccept(承認)するVBAマクロです。

標準機能が「レビューアー」や「変更の種類」までしか絞れないのに対し、VBAなら変更の中身(文字)で条件分岐できます。数千件でも機械的に処理できるので、実務ではこのルートが一番“作業時間の削減効果”が大きくなりがちです。

実行前に必ず押さえるポイント

  • 必ずコピーを作って、コピー側で試す(元ファイルを守る)
  • マクロ実行は原則として自己責任。社内規定がある場合は遵守する
  • 実行後の確認のために、変更履歴の表示を「すべて」に戻して、残りの修正が意図通り残っているか見る

作業の流れ(迷わないための手順)

手順操作目的
1対象ファイルをコピーして作業用にする事故防止
2拡張子を.docmで保存(マクロ有効文書)VBAを保存する
3Alt + F11でVBAエディターを開くマクロ編集
4[挿入]→[標準モジュール]を追加し、コードを貼り付けマクロ登録
5Alt + F8でマクロ一覧から実行アポストロフィ変更のみ承認

サンプル:アポストロフィ系文字だけの変更を承認するVBA

以下は、「変更履歴のうち、変更対象テキストがアポストロフィ系文字だけで構成されるもの」を承認する例です。許容する文字セットは状況に合わせて調整してください。

Option Explicit

' アポストロフィ系の変更だけを承認(反映)する
Public Sub AcceptApostropheOnlyRevisions()
    Dim doc As Document
    Set doc = ActiveDocument

    Dim i As Long
    Dim rev As Revision
    Dim txt As String
    Dim accepted As Long

    ' 画面更新を止めて高速化
    Application.ScreenUpdating = False

    ' Revisionsは承認するとコレクションが変わるため、後ろから回すのが安全
    For i = doc.Revisions.Count To 1 Step -1
        Set rev = doc.Revisions(i)

        ' 主に扱いたい変更種別(挿入/削除/置換)
        If rev.Type = wdRevisionInsert _
            Or rev.Type = wdRevisionDelete _
            Or rev.Type = wdRevisionReplace Then

            txt = CleanRevisionText(rev.Range.Text)

            ' 変更テキストがアポストロフィ類だけなら承認
            If IsApostropheOnly(txt) Then
                rev.Accept
                accepted = accepted + 1
            End If
        End If
    Next i

    Application.ScreenUpdating = True

    MsgBox "アポストロフィ関連の変更を " & accepted & " 件、反映しました。", vbInformation
End Sub

' Revision.Range.Text に紛れやすい制御文字などを除去
Private Function CleanRevisionText(ByVal s As String) As String
    s = Replace(s, Chr(13), "")   ' 段落記号
    s = Replace(s, Chr(7), "")    ' セル末尾などで出ることがある
    s = Replace(s, vbTab, "")     ' タブ
    s = Replace(s, " ", "")       ' 半角スペース
    CleanRevisionText = s
End Function

' 文字列が「指定したアポストロフィ類だけ」で構成されるか判定
Private Function IsApostropheOnly(ByVal s As String) As Boolean
    Dim allowed As String
    allowed = "'’‘ʼ'" ' 必要に応じて追加・削除する

    Dim n As Long
    n = Len(s)
    If n = 0 Then
        IsApostropheOnly = False
        Exit Function
    End If

    Dim i As Long, ch As String
    For i = 1 To n
        ch = Mid$(s, i, 1)
        If InStr(allowed, ch) = 0 Then
            IsApostropheOnly = False
            Exit Function
        End If
    Next i

    IsApostropheOnly = True
End Function

このマクロで“どこまで”拾えるか(現場での考え方)

Wordの変更履歴では、置換が「削除」+「挿入」として別々に記録されることがあります。上のマクロは、削除側も挿入側も「アポストロフィ系文字だけ」であれば承認するため、結果として置換だけが片付く動きになります。

ただし、次のようなケースでは条件調整が必要です。

  • アポストロフィ以外の記号(例:プライム記号「′」やアクセント「´」)も混ざる
  • アポストロフィが2連続(例:”)など、パターンをもっと厳密に絞りたい
  • アポストロフィ単体の挿入/削除は承認したくない(“置換ペア”だけ承認したい)

より厳密にしたい場合:許容文字セットを絞る

例えば「直線の ‘ を、右シングルクォート ’ に統一したい」など、混在パターンがほぼ決まっているなら、許容する文字を最小限にすると誤承認の確率が下がります。

  • allowed = “‘’” のように、必要な2種類だけにする
  • 「全角'は別物なので除外する」など、運用に合わせて調整する

社内ルールでVBAが使えない場合の代替

マクロが禁止の環境では、次のいずれかの“割り切り”が現実解になりやすいです。

  • レビューアーで絞って「表示されている変更をすべて反映」
  • 別コピーを作り、全反映→検索置換で正規化(最終成果物を優先)

回避策:いったん全反映してから、検索・置換でアポストロフィを正規化する

「他の変更も含めて全部OK」「別コピーで履歴管理できる」「最終版の統一が目的」という条件なら、作業速度が最も速いのはこのルートです。

手順の例

  1. 念のため、作業用にコピーを作る
  2. [校閲]→[承認]→[すべての変更を反映]で全承認
  3. 必要に応じて、変更履歴をオフにする(この後の置換を履歴に残さないため)
  4. 検索・置換で統一(例:‘ → ’)

この方法はとにかく速い一方、「他の修正も全部承認される」ことが最大のデメリットです。レビューの意義(どこがどう変わったかの検証)を残したい案件では、慎重に判断してください。

メリットデメリット向いている場面
最短で統一できる 操作が単純で属人化しにくい他の変更もすべて承認される 置換自体は履歴に残らない(履歴をオフにした場合)最終成果物の表記統一が最優先 履歴は別手段(版管理など)で担保できる

結局どれを選ぶ?おすすめの判断基準(実務フロー)

「正確さ」と「スピード」のバランスで選ぶと失敗が減ります。

状況おすすめ理由
アポストロフィ置換が特定レビューアーに偏っているレビューアーで絞って「表示中のみ全反映」標準機能だけで最短。運用で吸収しやすい
他の修正は残しつつ、置換だけを選別して片付けたいVBAで該当変更のみ承認文字内容で条件分岐でき、数千件でも現実的
最終版を整えるのが目的で、他の修正も承認してよい全反映→検索・置換で正規化最速で表記統一。版管理があると強い

再発防止:スマートクォート設定を見直す

「勝手に ‘ が ’ に変わる」系の大量置換は、スマートクォートが原因のことが多いです。英語組版としては便利ですが、案件によっては表記統一の敵になります。

チェックポイント

  • 入力時に直線クォートを曲線クォートへ置換していないか
  • 既存文書を開いたときに自動で変換が走っていないか
  • 複数人編集で、各人の設定がバラバラになっていないか

Wordの設定は環境や表示名が多少異なることがありますが、概ね以下の流れで確認できます。

項目探し方(目安)やること
自動書式(入力時)[ファイル]→[オプション]→[文章校正]→[オートコレクト]直線の引用符をスマート引用符に置換する設定を見直す
自動書式(実行時)同じくオートフォーマット/自動書式系の項目文書全体に勝手な置換が走らないようにする

運用面では、プロジェクト開始時に「アポストロフィは ‘ に統一」「引用符は ’ を使う」などルールを決め、編集者へ共有するだけでも、後工程の“数千件承認”が激減します。

よくあるつまずき(FAQ)

変更履歴のフィルターで「置換」だけ表示できないの?

変更の種類として「挿入/削除」「書式」「コメント」などに絞ることはできますが、“文字の置換だけ”を厳密に抜き出す、ましてや「この記号→この記号」だけといった内容条件での抽出は標準機能では難しいのが実情です。

マクロが動かない/ボタンが押せない

  • ファイルが.docxのままだと保存できません。.docmにしてください。
  • セキュリティでマクロが無効化されている場合があります(組織ポリシーの場合は運用で回避が必要です)。
  • 共同編集(OneDrive上で同時編集など)中は挙動が変わることがあるため、可能ならローカルコピーで処理してから戻すのが安全です。

アポストロフィが2つ連続する(”)みたいなパターンだけを扱いたい

今回のVBA例は「アポストロフィ類だけで構成される変更」を拾う方針なので、連続パターンも対象になり得ます。逆に言うと、もっとピンポイントにしたい場合は、許容文字セットを絞る、または「連続数」など条件を追加して判定関数を強化するのが近道です。

一番ミスが少ない運用は?

ミスを減らす観点では、次の順に安全度が上がります。

  • VBAで対象文字だけ承認(条件が明確で、他の修正に触れにくい)
  • レビューアーで絞って表示中の変更を全反映(他修正が混ざると危険)
  • 全反映→検索置換(最速だが、レビュー工程の意味が薄れる)

「どれを選ぶべきか迷う」場合は、まずはコピー文書でVBAを試して承認件数と残りの変更が想定通りかを確認し、問題なければ本番手順として採用するのが堅実です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次