2009-04-30 12 views
0

レジストリに現在のユーザーのデータがあります。これはWord文書の定義済みのブックマークに追加します。さて、問題は、すべての単一のWord文書にまったく同じマクロが必要であり、定義済みのブックマークを見つけることができない場合、マクロがそのステップをスキップするようにすることです。レジストリから定義済みのブックマークにデータを挿入します

私はこのコードを既にレジストリにある合計データの配列を事前定義する必要があります。マクロは、レジストリの各サブキーの値を文字列に格納します。ブックマークが存在しない限り、値をブックマークに挿入しません。とにかく、それはとにかく考えです。

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 

私は下の次にブレークポイントを置いた場合、私はそれが実際にしおりを見つけたが、それは正しいものを見つけるまで何とかそれはすべてのレジストリサブキーの値を挿入していることがわかります。そして、最初のアイデアは、レジストリ内のデータが更新された場合、マクロがそれを取り出して文書に挿入する必要があるため、マクロを再度実行すると、ブックマーク内の単語を削除することです。

ここで間違っていると思われるものは誰でも見つかりますか?

答えて

1

Error in a Word VBA macro, trying to insert values into bookmarks に回答があります。ケニーは(ブックマークを再設定)自分自身のことを学びました:...

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

とトムは、使用前にチェックするために役立った

If ActiveDocument.Bookmarks.Exists(sBookmarkName) Then 
    ... insert using your code 
End If 
関連する問題