Matin Tout le monde, Vous avez joué avec ça pendant quelques jours et vous ne savez où. Je crée une riche zone de texte personnalisée dans vb.net qui soulignera les fautes d'orthographe et offrira des suggestions lorsque le mot mal orthographié sera cliqué (je ne peux pas croire que ce n'est pas par défaut dans les textboxes/richtextboxes ... de toute façon). J'ai le soulignement fonctionnant bien mais je continue à obtenir l'erreur: Cette commande n'est pas disponible parce qu'aucun document n'est ouvert.Word Interop GetSpellingSuggestions pas d'erreur de document ouvert
EDIT
en cours d'exécution sur le bureau, 64 bits, Office 2007 est installé. Voici la classe entière et comment je teste l'appel. IsWordWrong fonctionne très bien. SpellingSuggestions échoue sur wapp.GetSpellingSuggestions (PWord) avec l'erreur « Cette commande n'est pas disponible car aucun document est ouvert » qui, selon MSDN et plusieurs tutoriels que j'ai vu, ne devrait pas se produire:
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
Comment appelle:
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
J'ai essayé les deux wapp.GetSpellingSuggestions et m_range.GetSpellingSuggestions avec les mêmes résultats. J'utilise m_range.SpellingErrors ailleurs et cela fonctionne très bien et la configuration pour obtenir la gamme est exactement la même, donc je ne sais pas ce que je fais mal.
Toute aide est grandement appréciée !!
** adapter ce code à ce que je veux réellement http://www.codeproject.com/Articles/18799/Spell-check-and-underline-the-wrong-word-using-Mic
WPF est-il une option? WPF a une vérification orthographique intégrée à 'RichTextBox'es. –
Je ne crois pas ..? le programme est basé sur des formulaires Windows et massif (10+ ans, des millions de lignes de code). Considéré quelques exemples d'intégration d'un contrôle wpf dans une base de formulaires Windows, mais semblait plus compliqué que cela et voudrait garder tout comme base. – Bulsatar
Je comprends que le code que vous essayez d'émuler fonctionne bien; pourquoi ne pas partir de ceci (= une version de travail) et continuer à supprimer/ajouter des fonctionnalités? Par exemple: pourquoi écrire 'Dim activedoc As Word.Document = wapp.Documents.Add (,,, oFalse)' plutôt que les versions originales? ('m_app.Documents.Add()' ou 'm_app.Documents.Add_ (m_template, m_newTemplate, m_documentType, m_visible)')? 'Documents.Add' peut inclure un document vide ou charger un fichier Word à partir d'un chemin donné; et il semble que votre code ne soit pas complètement défini sur ce front (pas de chemin fourni, bien que quelques arguments) ... – varocarbas