0

おはよう皆さん、これで数日間遊んでいて、どこにも行きません。vb.net でカスタムのリッチテキスト ボックスを作成しています。これは、スペル ミスに下線を付け、スペル ミスの単語を右クリックしたときに提案を提供します (これがテキスト ボックス/リッチテキスト ボックスのデフォルトでないとは信じられません...とにかく)。下線はうまく機能していますが、エラーが発生し続けます: ドキュメントが開かれていないため、このコマンドは使用できません。

編集

デスクトップで実行され、64 ビット、office 2007 がインストールされています。クラス全体と、呼び出しをテストする方法を次に示します。IsWordWrong はうまく機能します。SpellingSuggestions が wapp.GetSpellingSuggestions(pWord) で失敗し、「ドキュメントが開いていないため、このコマンドは使用できません」というエラーが表示されます。これは、MSDN と私が見た複数のチュートリアルによると、発生しないはずです。

Public Class SpellCheckUtility

Private Shared wapp As Word.Application
Private Shared missing As Object = Reflection.Missing.Value

Public Shared Sub StartApp()
    If IsNothing(wapp) Then
        wapp = New Word.Application
        wapp.Visible = False
        wapp.WindowState = 0

    End If
End Sub

Public Shared Function IsWrongWord(ByVal pWord As String) As Boolean
    StartApp()
    Dim oFalse As Object = False
    Dim activedoc As Word.Document = wapp.Documents.Add(, , , oFalse)

    Dim m_range As Word.Range
    m_range = activedoc.Range
    m_range.InsertAfter(pWord)

    Dim SpellErrors As Word.ProofreadingErrors = m_range.SpellingErrors

    Return SpellErrors.Count > 0
End Function

Public Shared Function SpellingSuggestions(ByVal pWord As String) As Generic.List(Of String)
    Dim rtnlist As New Generic.List(Of String)

    If pWord.Length > 0 Then
        StartApp()

        Dim SpellErrors As Word.SpellingSuggestions = wapp.GetSpellingSuggestions(pWord)

        For m_word As Integer = 1 To SpellErrors.Count
            rtnlist.Add(SpellErrors.Item(m_word).Name)
        Next
    End If

    Return rtnlist
End Function
Public Shared Sub dispose()
    If Not (wapp Is Nothing) Then
        Dim m_saveChanges As Object = False
        wapp.Quit(m_saveChanges)
        wapp = Nothing
    End If
End Sub
End Class

呼び方:

Private Sub btnclick1_Click(sender As Object, e As EventArgs) Handles btnclick1.Click
    Dim wordlist As Generic.List(Of String) = SpellCheckUtility.SpellingSuggestions("thingz")
End Sub

wapp.GetSpellingSuggestions と m_range.GetSpellingSuggestions の両方を試しましたが、どちらも同じ結果でした。私は m_range.SpellingErrors を別の場所で使用していますが、それは問題なく機能し、範囲を取得するための設定はまったく同じであるため、何が間違っているのかわかりません。

どんな助けでも大歓迎です!!

**私が実際に欲しいものにこのコードを適応http://www.codeproject.com/Articles/18799/Spell-check-and-underline-the-wrong-word-using-Mic

4

2 に答える 2