Office関連

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

前回前々回の記事でスペルチェック、文章校正に関するWordマクロを扱いました。
元々はMsdn フォーラムにあった質問「WordやOutlookで使用できる「スペルチェックと文章校正」の文法チェック結果をVBAから取得する方法はありますか」が切っ掛けで、その質問は“日本語文字列の文章校正結果を取得したいけどGetSpellingSuggestionsメソッドではエラーになる”というようなものでした。

試しに簡単な単語でテストしたところ、たしかにGetSpellingSuggestionsメソッドを実行した時点で[実行時エラー ‘4625’:辞書を開くことができません。]が発生し、修正候補を取得することができませんでした。
(辞書の指定を色々試してみましたが、どれも同様のエラーが発生しました。)

Public Sub Sample()
  Dim dic As Word.Dictionary
  
  With Selection.Range '文字列「人事移動」を選択
    '※ 下記すべて[実行時エラー '4625':辞書を開くことができません。]
    
    Debug.Print .GetSpellingSuggestions.Count
    'Debug.Print .GetSpellingSuggestions(MainDictionary:="Nihongo").Count
    'Debug.Print .GetSpellingSuggestions(MainDictionary:="日本語").Count
    'Debug.Print .GetSpellingSuggestions(MainDictionary:="Japanese").Count
    'Debug.Print .GetSpellingSuggestions(MainDictionary:=wdJapanese).Count
    'Debug.Print .GetSpellingSuggestions(CustomDictionary:="Nihongo").Count
    'Debug.Print .GetSpellingSuggestions(CustomDictionary:="日本語").Count
    'Debug.Print .GetSpellingSuggestions(CustomDictionary:="Japanese").Count
    'Debug.Print .GetSpellingSuggestions(CustomDictionary:=wdJapanese).Count
    'Set dic = Application.Languages(.LanguageID).ActiveGrammarDictionary
    'Debug.Print .GetSpellingSuggestions(MainDictionary:=dic).Count
    'Debug.Print .GetSpellingSuggestions(CustomDictionary:=dic).Count
    'Debug.Print .GetSpellingSuggestions(MainDictionary:=dic.Path & Application.PathSeparator & dic.Name).Count
    'Debug.Print .GetSpellingSuggestions(CustomDictionary:=dic.Path & Application.PathSeparator & dic.Name).Count
  End With
End Sub

ここで気になるのは「GetSpellingSuggestions」メソッドであるということ。

Wordの開発者用リファレンスには“指定範囲内の最初の単語の修正候補を表す SpellingSuggestions コレクションを返します。”とありますが、DocumentオブジェクトにSpellingErrorsプロパティ(指定した文書または範囲内にある、スペル ミスとして識別される単語を表す ProofreadingErrors コレクションを取得します。)とGrammaticalErrorsプロパティ(指定された文書で文法上の誤りが見つかった文を表す ProofreadingErrors コレクションを取得します。)、CheckSpellingメソッド(指定された文書または範囲のスペル チェックを行います。)とCheckGrammarメソッド(指定された文書または範囲の文章校正を行います。)が用意されていることを考えると、本来であれば文法上の誤りの修正候補を取得するには「GetGrammaticalSuggestions」なんてメソッドを使う必要があったのではないかと推測します。

といっても、GetGrammaticalSuggestionsメソッドなんてものは用意されていないので、それ以外の何らかの方法を用いる必要があったため、前回の記事では苦肉の策として、CommandBars(“Grammar”)にあるコントロールの中からIDが「0」のものを抜き出す方法を使ったのでした。

何故GetGrammaticalSuggestionsメソッドが無いのか?こういった細かいところが微妙に中途半端だなー、と感じるのですが、無いものは無いのでしょうがないですね・・・。

■ 関連Webページ

・英語のスペルミスを列挙して修正候補をコメントとして追加するWordマクロ
//www.ka-net.org/blog/?p=4508
・日本語の文法上の誤りを列挙して修正候補をコメントとして追加するWordマクロ
//www.ka-net.org/blog/?p=4510
・Range.GetSpellingSuggestions メソッド (Word)(機械翻訳)
http://msdn.microsoft.com/ja-jp/library/ff196525.aspx
・GetSpellingSuggestions メソッドでは、 Word での英語以外の言語提案の一覧が表示されません。
http://support.microsoft.com/kb/292108/ja
・テキストが正しくフラグ付きプログラムを使用して、スペルをチェックして、言語の辞書を指定するとスペル ミスとして
http://support.microsoft.com/kb/832124/ja
・Word で文章校正の対象についてのよく寄せられる質問
http://support.microsoft.com/kb/290943/ja
・GetGrammaticalSuggestions?
http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/019f262a-9936-461f-ac2a-c9eb3c4ad738

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

受信メールに対して自動的に返信するOutlookマクロ次のページ

関連記事

  1. アイコン一覧

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

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

  2. Office関連

    [Excel Services ECMAScript]アクティブなシート名を取得する。

    埋め込んだExcelワークブックのアクティブなシート名を取得するコード…

  3. Office関連

    プロダクトIDを取得するWordマクロ

    下記質問用に書いたコードです。「バージョン情報」で表示されるプロダ…

  4. Office関連

    Office クリップボードをマクロで操作する(MSAA)

    MSDNフォーラムに質問がありましたが、Office クリップボードを…

  5. Office関連

    [Outlook]仕分けルールでスクリプト(マクロ)を実行する。

    Msdn フォーラムにあった質問関連でメモを残しておきます。…

  6. Excel

    Evernote Cloud SDKを使ったVBAマクロ

    3年ほど前にEvernote for Windowsを操作するVBAマ…

コメント

  1. この記事へのコメントはありません。

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP