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. Word

    GoogleとYahoo!で同時に翻訳するWordマクロ

    「Google翻訳で文字列を翻訳するマクロ」と「Yahoo!翻訳で文字…

  2. Office関連

    PowerPointのマクロを共有化して使う方法

    記事のタイトルだけ見るとちょっと分かりづらいですが、要するにWordの…

  3. Office関連

    UI Automationの参考資料

    VBAからUI Automationを扱う際に参考になりそうな資料への…

  4. Office関連

    VBAを学ぶときの参考資料

    知人から「Excelのマクロを勉強したいんだけど、どうやって勉強したら…

  5. Office アドイン

    [Office用アプリ]マニフェストファイルで多言語対応させる。

    Office用アプリの各種設定を定義するXMLマニフェストファイルです…

  6. Office関連

    [Excel Services ECMAScript]ActiveWorkbookのシート数を取得す…

    埋め込んだExcelワークブックのシート数を取得するコードです。 …

コメント

    • 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