2009-06-03 7 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 

レジストリが唯一の3つのキーが含まれている場合でも、マクロから得て、すべての名前を通過テキストファイルを開き、最後のレジストリキーを複数回挿入します。

答えて

1

名前を挿入する前にブックマークが存在するのはなぜですか。

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

親愛なる神様...ありがとうございました! :)私はちょうど馬鹿です:) –

関連する問題