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アプリケーションのバージョン情報ダイアログから情報を取得するVBScript

    自分の手間を減らすためのスクリプトシリーズ、今回はWordやExcel…

  2. Excel

    [Excel]別インスタンスからの貼り付け時のダイアログを非表示にする方法

    Msdn フォーラムに「excel 2010 貼り付けで警告メッセージ…

  3. アイコン一覧

    Office 365アイコン(imageMso)一覧(V)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  4. Office関連

    Office 2013 カスタマープレビュー版の「Spy Utility」

    たまたま見つけたWebページ「Office2013のデバッグ用ツールが…

  5. Office関連

    Officeのヘルプを単独で開く。

    Officeアプリケーションのヘルプが見たいとき、いちいちアプリケーシ…

  6. Office関連

    セルの行数をカウントするWordマクロ

    「ソースコードを番号行付きのテーブルに変換するWordマクロ」を実行し…

コメント

    • 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