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
即使註冊表中只包含三個按鍵,宏經歷從得到每名該文本文件並多次插入最後一個註冊表項。
親愛的上帝......非常感謝你! :)我只是一個白癡:) – 2009-06-03 07:48:57