★★ 如何批量设置书签,以及给书签统一设置目录
我一开始想到的居然就是批量生成。其实批量生成书签很容易。网上找个宏,设置快捷键运行就可以:
“哗”的一下就生成一百个一千个书签,视觉效果上看着挺爽,但实际上生成了这么多的书签,还是得一个一个复制,再粘贴到标签需求处。无形中其实又多了一道工序。
所以欲速则不达。思想还是不能太惯性化。
还是一步一个脚印,像上次的脚本一样。一个一个复制比较好。
可惜WPS是不支持书签复制的。
或者可以复制,但复制后它是没有书签功能的。
不管是复制还是剪切,永远粘贴的只能是同一个书签。不会给你多第二个。
这就有点不是很亲切友好了。
这一点我建议WPS可以更改一下。就像脚注一样,复制一个以后,可以粘贴很多个,而且每粘贴一次就自动增加一个序号。这样就超方便。科技的宗旨不就是应该让人可以变得更懒吗?当然这么说好像也有点别扭。
设想如果书签也是像脚注一样,只要复制一个,再粘贴就是第二个,第三个……序号依次递增,这样就会省事很多。
可惜没有。
只能自己动手,丰衣足食了。用宏来解决这个问题。
Sub 插入书签()
Dim rng As Range
Dim bookmarkName As String
Set rng = Selection.Range
' 带时间戳
bookmarkName = "书签_" & Format(Now, "yyyymmdd_hh_nn_ss")
ActiveDocument.Bookmarks.Add name:=bookmarkName, Range:=rng
End Sub
再在自定义键盘里给他设置一个快捷键(比如:ALT+V)。
那么你直接按键盘的ALT+V,就会自动生成一个标签。
这样就很方便。以后再疯狂输出书签时效率会很高。
那么,高效便捷的插入书签问题,就算解决了。
第二个。
如何将文档中所有书签集中起来,做成表格。方便检索和点击。
这个也可以找个宏来解决:
Sub 标签集中成表格()
Dim doc As Document
Dim bmk As Bookmark
Dim tbl As Table
Dim i As Long
Dim cellRange As Range
On Error GoTo ErrorHandler
Set doc = ActiveDocument
If doc.Path = "" Then
MsgBox "请先保存文档,以便创建有效超链接!", vbExclamation
doc.Save
End If
If doc.Bookmarks.Count = 0 Then
MsgBox "文档中没有书签!", vbExclamation
Exit Sub
End If
Set tbl = doc.Tables.Add(Range:=doc.Range(0, 0), _
NumRows:=doc.Bookmarks.Count + 1, _
NumColumns:=2)
With tbl
.Style = "网格型"
.AllowAutoFit = True
' 设置表头
.Cell(1, 1).Range.Text = "书签名称"
.Cell(1, 2).Range.Text = "书签链接"
.Rows(1).Range.Font.Bold = True
.Rows(1).Range.Shading.BackgroundPatternColor = wdColorGray20
i = 2
For Each bmk In doc.Bookmarks
.Cell(i, 1).Range.Text = bmk.Name
Set cellRange = .Cell(i, 2).Range
cellRange.Text = bmk.Name
doc.Hyperlinks.Add _
Anchor:=cellRange, _
Address:="", _
SubAddress:=bmk.Name, _
TextToDisplay:=bmk.Name
i = i + 1
Next bmk
.AutoFitBehavior wdAutoFitContent
End With
tbl.Select
MsgBox "书签已成功导出到文档表格中!", vbInformation
Exit Sub
ErrorHandler:
MsgBox "发生错误: " & Err.Description, vbCritical
Set tbl = Nothing
Set doc = Nothing
End Sub
这样就可以了。
如果你运行以后是代码,选中表格 shift+f9 切换一下即可。
或者全局按 alt+f9 。就可以了。
总之书签做的不是那么智能。有诸多不便:不能多选,不能批量复制,也不能批量删除,最多全部删除。
希望后续版本能够在这些细节之处略微的改进。