2009-04-30 10 views
0

Ich habe Daten in der Registrierung unter Aktueller Benutzer, die ich in vordefinierte Lesezeichen in Word-Dokumenten hinzufügen möchte. Nun, die Sache ist, ich will genau das gleiche Makro in jedem einzelnen Word-Dokument und lasse das Makro den Schritt überspringen, wenn es das vordefinierte Lesezeichen nicht finden kann.Einfügen von Daten aus der Registrierung in vordefinierte Lesezeichen

Ich habe diesen Code bereits, wo ich ein Array der gesamten Daten, die ich in der Registrierung habe, vordefinieren muss. Das Makro speichert die Werte jedes Unterschlüssels aus der Registrierung in einer Zeichenfolge. Aber fügt den Wert nicht in das Lesezeichen ein, wenn das Lesezeichen nicht existiert. Nun, das ist sowieso die Idee.

Public Sub TemplateData() 

    Dim objShell 
    Dim strShell 
    Dim strDataArea 
    Dim Values() As String 
    Dim Fields 

    ' Input the exact same key as in registry 
    Fields = Array("DEPARTMENT", "LETTER", "LNAME", "FNAME") 


    Set objShell = CreateObject("Wscript.Shell") 

    strDataArea = "HKCU\Templates\" 
    On Error Resume Next 


    For iTeller = 0 To UBound(Fields) 

     Dim sBookMarkName, sValue 
     sBookMarkName = "Bookmark" & Fields(iTeller) 
     sValue = objShell.RegRead(strDataArea & Fields(iTeller)) 

     Selection.GoTo What:=wdGoToBookmark, Name:=sBookMarkName 
     Selection.Delete Unit:=wdCharacter, Count:=0 
     Selection.InsertAfter sValue  

    Next 
    On Error GoTo 0 

End Sub 

Wenn ich einen Haltepunkt auf dem Boden Weiter setzen, kann ich sehen, dass es in der Tat die Lesezeichen findet, aber irgendwie fügt sie die Werte der einzelnen Registrierungsunterschlüssel, bis er die richtige findet. Und die ursprüngliche Idee ist auch, das Makro zu löschen, was auch immer Wörter in den Bookmkarks sind, wenn ich das Makro erneut ausführe, denn wenn die Daten in der Registrierung Updates erhalten, sollte das Makro es aufheben und es in das Dokument einfügen.

Kann jemand finden, was hier falsch sein könnte?

Antwort

1

Error in a Word VBA macro, trying to insert values into bookmarks hat Antworten. Kenny gelernt, sich (wieder stellen Sie die Lesezeichen):

ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:=sBookMarkName 

und Tom half vor der Verwendung zu überprüfen ...

If ActiveDocument.Bookmarks.Exists(sBookmarkName) Then 
    ... insert using your code 
End If 
Verwandte Themen