[英]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.