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

    Office 365 APIをVBAから呼び出す(3)

    前々回の記事でOffice 365とAzure ADの紐づけを、前回の…

  2. Office アドイン

    【2019年6月版】Excel カスタム関数(Excel Custom functions)の紹介

    1年半ほど前、Excel カスタム関数について記事を書きました。…

  3. Office関連

    IEサポート終了でVBAマクロはどうなるの?

    ※下記情報は2021年5月時点の情報で、今後状況が変わっていく可能性が…

  4. Office関連

    Presentation Translatorが公開されました。

    下記記事で紹介している「Microsoft Translator アド…

  5. Office関連

    [リボン・カスタマイズ]グループの表示・非表示をトグルボタンで切り替える。

    数年前に書いた記事に下記コメントをいただきました。Excelに…

  6. Office関連

    PhpSpreadsheetを使ってPHPからExcelファイルを出力してみる。

    一年半ほど前、「PHPWord」を使ってPHPからWordファイルを出…

コメント

    • 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