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関連

    「いちばんやさしいPowerPoint VBAの教本」レビュー

    「インストラクターのネタ帳」で有名な伊藤さんが執筆された書籍第二弾、「…

  2. Office関連

    Wordのテンプレートをインストールするスクリプト

    Wordマクロをテンプレートにして使用する場合、通常そのテンプレートフ…

  3. Office アドイン

    Office用アプリではalertやconfirmが使えない?

    JavaScriptでメッセージや確認ダイアログを表示する際には「al…

  4. Office関連

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

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

  5. Office関連

    Outlookの連絡先をvcf形式で一括保存する方法

    Outlookの連絡先をvcf形式で保存する場合、通常は「連絡先を v…

  6. Office関連

    Office 2019のインストール方法

    下記ニュースサイトにある通り、永続ライセンス版のOffice 2019…

コメント

    • km
    • 2014年 6月 25日

    参考になりましたので、ブログを応援したいと思いますが、記事下の「ブログランキング」に貼ってある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

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP