2013-06-24 27 views
5

Il mio codice deve abilitare il controllo ortografico in MS Word 2010 in modo che l'utente possa vedere le sottolineature rosse sotto errori ortografici.Automazione MS Word: impossibile abilitare le sottolineature rosse per il controllo ortografico

Nella versione corrente cerco di fare questo per abilitare il controllo ortografico:

wordApplication.Options.CheckSpellingAsYouType = true; 
wordApplication.Options.SuggestSpellingCorrections = true; 
wordApplication.ActiveDocument.ShowSpellingErrors = true; 
wordApplication.ActiveDocument.CheckSpelling(); 

apro Word e digitare "stringa texxt Test". Dopo questo eseguo il mio codice ma non succede nulla: No underlines under texxt word

Non vedo alcuna sottolineatura in "texxt". Se vado alle opzioni vedo che "il controllo ortografico durante la digitazione" opzione è stata abilitata: enter image description here

Ora se controllo quest'affare:

wordApplication.ActiveDocument.SpellingErrors[0].Text 

Conterrà "texxt", che significa che l'ortografia era effettivamente controllato.

Anche se ho semplicemente riavviare MS Word e digitare lo stesso testo - sottolineature rosse diventano visibili: enter image description here

Ho anche provato a chiamare Application.ScreenRefresh e impostare le proprietà ScreenUpdating ma questo non hanno dato alcun effetto.

Nota: Eseguo questo codice/macro all'inizio, quando non c'è testo in un documento. Se c'è del testo - funziona.

Nota 2: passaggi precisi per riprodurre:

  1. Avviare MS Word. Vai alle opzioni e disabilita "controlla l'ortografia mentre scrivi". Riavvia Word.

  2. Avviare Word ed eseguire macro seguente:

    Options.CheckSpellingAsYouType = true 
    Options.SuggestSpellingCorrections = true 
    ActiveDocument.ShowSpellingErrors = true 
    
  3. Digitare il seguente testo: "stringa di prova texxt". Premere Invio.

  4. Esegui macro seguente

    MsgBox ActiveDocument.SpellingErrors (1) .Text

Si vedrà "texxt" in MessageBox ma non sottolineature rosse

+0

È questo VBA? VBA non utilizza il punto e virgola alla fine delle righe e l'ultima riga non includerà le parentesi. Quando apporto queste modifiche ed eseguo quelle linee di codice, texxt è sottolineato e compare una finestra di dialogo Spelling che mi chiede di cambiarlo. Quando esegui il tuo codice non ricevi errori? – Christina

+0

Questo è C#. Ma ho gli stessi problemi con VBA. Funziona solo se il documento contiene del testo ma se è vuoto e questa macro viene eseguita all'inizio quando comincio a digitare soemthing - non vedo nessuna sottolineatura rossa. – Oleg

+0

Non voglio postare questa risposta come risposta perché non riesco a riprodurre realmente quello che stai ricevendo. Tuttavia, ho trovato che dopo aver eseguito la tua macro Word sarebbe comunque correggere errori semplici. Ho aggiunto la riga Application.AutoCorrect.ReplaceTextFromSpellingChecker = False che ha causato la visualizzazione delle linee rosse. – Christina

risposta

2

Per caso trovato seguente soluzione: se dopo che l'utente ha digitato un testo che chiamo i seguenti sottotitoli di codice sono mostrati:

int iDummy = wordDocument.wordApp.ActiveDocument.SpellingErrors.Count; 
+0

Il problema con questa soluzione è che è necessario eseguire questo codice ogni volta che viene aggiunto un nuovo testo. – Oleg

0

Non posso lasciare un commento sulla risposta di Oleg a causa della bassa ripetizione, ma vale la pena notare che, con Word 2013, il metodo Application.ActiveDocument.SpellingErrors.Count sembra rimuovere la selezione corrente per qualche motivo insondabile, che potrebbe essere problematico.

Un trucco per nascondere questo effetto controllando solo lo Count quando nessun testo è attualmente selezionato; per esempio.:

// "document" is a Microsoft.Office.Tools.Word.Document 
var selected = document.Application.Selection.Range; 
if(Math.Abs(selected.End - selected.Start) == 0) 
{ 
    var count = document.Application.ActiveDocument.SpellingErrors.Count; 
}