Office関連

日本語の文法上の誤りを列挙して修正候補をコメントとして追加するWordマクロ

前回の記事の関連で、今度は日本語の文法上の誤りを列挙して修正候補をコメントとして追加するマクロを考えてみました。

Option Explicit

Public Sub ChkGrammaticalErrors()
'日本語の文法上の誤りを列挙して修正候補をコメントとして追加するWordマクロ
  Dim rngGrammaticalError As Word.Range
  Dim rngTmp As Word.Range
  Dim ctl As Office.CommandBarControl
  Dim i As Long, cnt As Long
  Dim s As String
  
  Set rngTmp = Selection.Range
  '文法上の誤りを列挙
  For Each rngGrammaticalError In ActiveDocument.GrammaticalErrors
    Select Case rngGrammaticalError.LanguageID
      '日本語のみ処理
      Case wdJapanese
        For i = 1 To Len(rngGrammaticalError.Text)
          cnt = 0 '初期化
          rngGrammaticalError.Characters(i).Select
          '修正候補をCommandBarControlから取得
          For Each ctl In Application.CommandBars("Grammar").Controls
            '[IDが「0」のもの = 修正候補]として取得
            If ctl.ID = 0 Then
              If cnt < 1 Then
                s = ctl.Caption
              Else
                s = s & "," & ctl.Caption
              End If
              cnt = cnt + 1
            End If
          Next
          If cnt > 0 Then Exit For
        Next
    End Select
    'エラー箇所に修正候補をコメントとして追加
    ActiveDocument.Range.Comments.Add rngGrammaticalError, s
  Next
  rngTmp.Select
End Sub

WordGrammaticalErrors_01

■ 関連Webページ

・GetSpellingSuggestionsメソッドで文法上の誤りの修正候補は取得できない?
//www.ka-net.org/blog/?p=4517
・WordやOutlookで使用できる「スペルチェックと文章校正」の文法チェック結果をVBAから取得する方法はありますか
http://social.msdn.microsoft.com/Forums/ja-JP/vbajp/thread/74ea256d-8843-4596-b6ef-6c2f829d24f2
・文法とスタイルの規則のオプションを選択する (日本語)
http://office.microsoft.com/ja-jp/HA010203200.aspx

英語のスペルミスを列挙して修正候補をコメントとして追加するWordマクロ前のページ

GetSpellingSuggestionsメソッドで文法上の誤りの修正候補は取得できない?次のページ

関連記事

  1. Office関連

    [Word VBA]引数の型がVariantになっているのはなぜ?

    インストラクターのネタ帳でお馴染みの伊藤さんが先日下記の記事をアップさ…

  2. Office関連

    指定したセル範囲をUTF-8やEUC-JP等のテキストファイルとして出力するExcelマクロ

    ExcelファイルをUTF-8のテキストファイルで出力する必要があった…

  3. Office関連

    「ちゃうちゃう!」で2つの文書を比較するWordマクロ

    2014/08/10 追記:ちゃうちゃう!がバージョンアップされま…

  4. Office関連

    「DQNネーム辞書」を更新しました。

    前のブログで公開していたIME 2010用の「DQNネーム辞書」を更新…

  5. Office関連

    「Office 2003 のコマンドに対応する Office 2010 のリファレンス ブック」のダ…

    クリックさんのブログ記事「旧メニュー対応表を使いたい: パソコンのツボ…

コメント

    • km
    • 2014年 6月 25日 3:06pm

    参考になりましたので、ブログを応援したいと思いますが、記事下の「ブログランキング」に貼ってある2つのバナーをクリックすれば、応援できるのでしょうか?

  1. > km様

    ブログ管理者のきぬあさです。
    コメントいただき、ありがとうございます。

    > 参考になりましたので、ブログを応援したいと思いますが、記事下の「ブログランキング」に貼ってある2つのバナーをクリックすれば、応援できるのでしょうか?

    はい!
    バナーをクリックいただくとランキングに反映され、当ブログの順位が上がると記事更新のモチベーションが上がります(^^)

  2. Word2016では、仕様の変更によりこちらのVBAはうまく動作しません。
    試行錯誤したのですがまだ解決に至っていません。
    Word2016で日本語の文法上の誤りを取得する方法をもしご存じでしたらお教えいただけませんでしょうか。

    • > toowaki様

      当ブログの管理者です。
      お問い合わせいただいたWord 2016で文法上の誤りが取得できない件につきまして、私の方でも確認したところ、たしかに2016では当マクロが動作しませんでした。
      恐らくWordの仕様が変更されたためだと思われます。

      別案として、UI AutomationやIAccessibleを使って、

      1.誤りの指摘箇所を右クリックした際に表示される「表現の推敲」メニューから無理やり取得する。
      2.「文章校正」を実行した際に表示される「エディター」作業ウィンドウから無理やり取得する。

      といった方法が考えられますが、どちらも処理が複雑かつ不安定になるでしょう。

      「表現の推敲」メニューがCommandBarControlとして取得できるのであれば道も見えてきますが、古いオブジェクトモデルであるためこちらも難しそうです。

  3. OfficeのUpdateによりいつの間にか直っていました。
    報告のみですみませんが、以上です。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP