2010-10-21 32 views
0

Dans MS Word, il est possible d'ajouter des mots à un dictionnaire personnel afin qu'ils soient reconnus. Si un mot n'est pas reconnu, Word place automatiquement une ligne ondulée rouge en dessous. Si vous ajoutez ce mot au dictionnaire personnel, cette ligne disparaît. Ce que je voudrais faire est d'effectuer ce processus automatiquement via une macro. Il semble que l'on doive ouvrir manuellement le fichier du dictionnaire et écrire le nouveau mot, car il n'y a pas de méthode sur l'objet Dictionnaire Word pour ajouter des mots à un dictionnaire donné. Ce n'est pas un problème, sauf que Word ne prend pas automatiquement le nouveau mot et supprime les lignes rouges ondulées sous le mot nouvellement ajouté. J'ai même essayé d'effacer les dictionnaires personnalisés et de les ajouter à nouveau, mais cela ne semble pas recharger le dictionnaire tant que vous n'avez pas vérifié manuellement l'orthographe. Exemple de code pour ce qui suit:Effectuez les modifications automatiques du dictionnaire de correction orthographique de Word

Dim x As Dictionary 
Dim fname As String 

fname = "C:\Users\me\AppData\Roaming\Microsoft\UProof\md.dic" 

' code to add word to dictionary goes here 

With CustomDictionaries 
    .ClearAll 
    .Add fname 
    .ActiveCustomDictionary = CustomDictionaries.Item(fname) 

End With 

Est-il possible de faire reconnaître le mot Parole vient d'être ajouté (s) dans un dictionnaire personnalisé sans effectuer la vérification orthographique interactive? Il le fait silencieusement si vous ajoutez manuellement des mots, mais je n'arrive pas à répliquer ce comportement dans VBA. Je voudrais que les lignes rouges disparaissent automatiquement, comme elles le font lorsque vous ajoutez manuellement des mots.

+3

Voir ce sujet: http://stackoverflow.com/questions/3389314/recheck-document-for-spellings-not-same-as-vba-code –

Répondre

1

Je n'ai pas vraiment résolu le problème, mais je pense que j'ai trouvé un travail. Vous pouvez obtenir une collection d'objets Range qui représentent des fautes d'orthographe en utilisant ActiveDocument.SpellingErrors. Je vais rechercher dans cette collection le texte correspondant au mot que j'ai ajouté au dictionnaire, puis définir .NoProofing = True sur l'objet. Cela semble faire disparaître les lignes rouges, et avoir ajouté le nouveau mot au dictionnaire les empêchera de revenir la prochaine fois que j'ouvrirai le document. Je n'ai pas entièrement testé cette approche, mais cela semble prometteur.

EDIT Cette approche est erronée, que d'autres instances du mot qui sont inscrits au cours de la même session aura les squigglies rouges en dessous parce qu'ils ne sont pas explicitement ignorés et la vérification orthographique n'utilise pas encore le dictionnaire mis à jour. Si vous ouvrez manuellement la boîte de dialogue du dictionnaire personnalisé et cliquez sur OK, il se passe quelque chose en arrière-plan pour relire le dictionnaire. Je ne peux pas comprendre comment faire cela dans le code.