2009-06-03 5 views
1

레지스트리의 현재 사용자 데이터를 문서의 미리 정의 된 책갈피에 삽입하는 Word 매크로를 작성하려고합니다. 각 레지스트리 항목의 이름이 무엇인지 지시하는 ini-file을 얻었고이 값은 Word 매크로의 루프로 가져옵니다. 이 잘 작동합니다 (내 생각),하지만 Word 매크로 문서에 데이터를 삽입해야합니다. 북마크가 있으면 제대로 작동하지만 그렇지 않으면 매크로가 데이터를 삽입하는 것처럼 보입니다. 나는 그것을 원하지 않는다. 이름에 해당하는 책갈피가있는 경우 매크로에 데이터를 삽입하기 만하면됩니다. 각 책갈피를 ""북마크 "& 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

친애하는 하나님 ... 정말 고마워요! :) 나는 단지 바보예요. :) –