2009-06-03 67 views
1

我试图编写一个Word宏,它将当前用户在注册表中的数据插入到文档中的预定义书签中。我有一个ini文件,它指定每个注册表项的名称,然后将该值导入到Word宏中的循环中。这工作正常(我认为),但Word宏也需要将数据插入到文档中。如果书签存在,这可以正常工作,但如果它们不存在,宏就会插入数据。我不想那样。我只想让宏插入数据,如果有书签与此名称相关。我已经做到这样,每个书签都需要被称为“”Bookmark“& sBookMarkname”。Word VBA宏中的错误,试图将值插入到书签中

而这里的代码..

Sub MalData() 
    '' 
    ''// MalData Macro 
    '' 

    Dim objShell 
    Dim strShell 
    Dim strDataArea 
    Dim Verdier() As String 
    Dim regPath 
    Dim regString 
    Dim Felter 
    Dim WScript 

    Dim sFileName As String 
    Dim iFileNum As Integer 
    Dim sBuf As String 


    sFileName = "C:\felter.ini" 
    If Len(Dir$(sFileName)) = 0 Then 
     MsgBox ("Can't find " & sFileName) 
    End If 

    ''//Load values from ini-file which is later used to query the registry 

    Set objShell = CreateObject("Wscript.Shell") 

    With New Scripting.FileSystemObject 
    With .OpenTextFile(sFileName, ForReading) 

     If Not .AtEndOfStream Then regPath = .ReadLine 
     If Not .AtEndOfStream Then regString = .ReadLine 

     Do Until .AtEndOfStream 
      Felter = .ReadLine 

      On Error Resume Next 
      Dim sBookMarkName, sVerdi 
      sBookMarkNametemp = "Bookmark" & Felter 
      MsgBox (sBookMarkNametemp) 
      sVerdi = objShell.RegRead(regPath & "\" & Felter) ''" 

      sBookMarkName = "" 
      sBookMarkName = (sBookMarkNametemp) 

      If sVerdi <> Felter Then 
       Selection.GoTo What:=wdGoToBookmark, Name:=sBookMarkName 
       Selection.Delete Unit:=wdCharacter, Count:=0 
       Selection.InsertAfter sVerdi 
       ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:=sBookMarkName 
      End If 
     Loop 

     On Error GoTo 0 
    End With 
    End With 

End Sub 

现在,错误发生在大约这里:

sVerdi = objShell.RegRead(regPath & "\" & Felter) ''" 

sBookMarkName = "" 
sBookMarkName = (sBookMarkNametemp) 

If sVerdi <> Felter Then 

即使注册表中只包含三个按键,宏经历从得到每名该文本文件并多次插入最后一个注册表项。

回答

1

为什么不在插入名称之前检查书签是否存在?

If ActiveDocument.Bookmarks.Exists(sBookmarkName) Then 
    ... insert using your code 
End If 
+0

亲爱的上帝......非常感谢你! :)我只是一个白痴:) – 2009-06-03 07:48:57