[英]Word VBA delete hidden bookmarks before closing
我想設置一個 VBA,以便在文檔關閉之前刪除基於模板的任何文檔的隱藏書簽。 我們在我們的網站上發布文件。 它們以 Word 格式編寫,API 將它們轉換為 html。如果有隱藏書簽,它們將在網站上顯示為鏈接(隱藏書簽將轉換為 html 錨點)。 目前我們刪除了 API 之前的書簽手冊,但這很耗時(我們每年發布 1000 份文檔)並且無效(人們忘記了)。
我發現 VBA 可以刪除有效的隱藏書簽,並嘗試將 DocumentBeforeClose 添加為觸發器。 但它不起作用:
Private Sub DocumentBeforeClose(cancel As Boolean)
Dim nBK As Long
With ActiveDocument
For nBK = .Bookmarks.Count To 1 Step -1
If LCase(Left(.Bookmarks(nBK).Name, 3)) = "_hl" Then
.Bookmarks(nBK).Delete
End If
Next nBK
End With
ActiveDocument.Save
End Sub
我瀏覽了 Visual Basic Window、Normal、Microsoft Word 對象、ThisDocument。
沒有任何反應,如果我關閉並重新打開文檔,隱藏的書簽仍然存在。
我認為你需要添加這一行:
.Bookmarks.ShowHidden = True
像這樣它應該工作:
Private Sub DocumentBeforeClose(cancel As Boolean)
Dim nBK As Long
With ActiveDocument
.Bookmarks.ShowHidden = True
For nBK = .Bookmarks.Count To 1 Step -1
If LCase(Left(.Bookmarks(nBK).Name, 3)) = "_hl" Then
.Bookmarks(nBK).Delete
End If
Next nBK
End With
ActiveDocument.Save
End Sub
這已經解決了:
Sub AutoClose()
On Error Resume Next
Dim nBK As Long
With ActiveDocument
.bookmarks.ShowHidden = True
For nBK = .bookmarks.Count To 1 Step -1
If LCase(Left(.bookmarks(nBK).Name, 3)) = "_hl" Then
.bookmarks(nBK).Delete
End If
Next nBK
End With
ActiveDocument.Save
End Sub
唯一的問題是它會在您打開文檔時嘗試運行並顯示一條錯誤消息,指出沒有活動文檔。 'On error resume next' 是停止該錯誤消息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.