2008-11-17 7 views
1

Je dois vérifier différents codes dans un document Word.Word VBA accéder au contenu du dictionnaire personnalisé

Ces codes sont généralement une lettre suivie d'un tiret et de 5 chiffres, par exemple M-81406.

Nous devons vérifier que ces codes prédéfinis ont été saisis correctement (il existe une liste pré-déterminée de plusieurs milliers de codes). Nous ne pouvons pas utiliser la vérification orthographique normale de Word, car vous ne pouvez pas écrire un nombre erroné (vous avez besoin d'au moins 2 lettres). J'ai pensé que je pourrais écrire du code VBA qui trouve tout ce qui peut être invalide. Je peux utiliser des expressions régulières pour les vérifier. Puis-je accéder au contenu d'un dictionnaire personnel à partir de VBA?

J'ai besoin d'une solution qui soit facilement mise à jour par le client. Le point de bonus à n'importe qui qui suggère une manière intelligente de mettre en évidence les codes incorrects.

Répondre

1

Un dictionnaire personnalisé, comme vous le savez probablement, est juste un fichier texte contenant les mots, référence le Microsoft Scripting Runtime et utilisation:

Dim FSO As New FileSystemObject, FS As TextStream 
Dim Code As String, Codes As New Scripting.Dictionary 
Dim Paragraph As Paragraph, Word As Range 

Set FS = FSO.OpenTextFile("c:\...\cust.dic") 

Do Until FS.AtEndOfStream 
    Code = FS.ReadLine 
    If Not Codes.Exists(Code) Then Codes.Add Key:=Code, Item:=Nothing 
Loop 

' Use your own method for enumerating words 
For Each Paragraph In ActiveDocument.Paragraphs 
    Set Word = Paragraph.Range 
    Word.MoveEnd WdUnits.wdCharacter, -1 

    If Not Codes.Exists(Word.Text) Then 
     Word.Font.Underline = wdUnderlineWavy 
     Word.Font.UnderlineColor = wdColorBlue 
    Else 
     Word.Font.Underline = wdUnderlineNone 
     Word.Font.UnderlineColor = wdColorAutomatic 
    End If 
Next 

Pas idéal, car il aplatit en soulignant la mise en forme, et doesn Ne fournissez pas un mécanisme pour les suggestions (bien qu'une petite forme construite autour d'une liste suffise).

La meilleure solution consisterait à étendre le moteur d'orthographe, malheureusement.

Questions connexes