批量保存书签

问题描述 投票:0回答:1

我将接管一份 275 页的 Word 文档的所有权,该文档一旦转换为 PDF,就会被一个十几人的团队用来浏览分类方案中的信息,包括图表和解释。其中许多解释是文档本身的交叉引用。我的前任一直在慢慢地手动完成此操作,对于每个交叉引用,首先在目的地创建书签,然后转到源并创建指向同一书签的超链接。

我正在考虑至少自动添加书签部分,因为所有目的地都已在文档中以粗体显示。这些格式例如是 1/02 07,我的前任已将其关联到书签名称 B1_0207,我想保留此格式(这样做是为了克服 Word 的限制)。所以我需要在开头添加一个 B,将 / 替换为 _,并删除所有空格

我也考虑过自动创建超链接,因为在同一个示例中,对超链接的引用将写为 1/02 07 但不是粗体,因此可能很容易找到和匹配(尽管有些解释直接针对其他内容)方案,例如 A47G 1/02 07,必须排除)。

我发现了以下我已经改编的宏

Sub ScratchMacro()
'A basic Word macro coded by Greg Maxey
Dim oRng As Range, oRngDup As Range, oBookName As Range
  Set oRng = Selection.Range
  Set oRngDup = oRng.Duplicate
  Set oBookName = oRng
  With oRng.Find
    .ClearFormatting
    .Font.Bold = True
    Do While .Execute
    oBookName = Replace(oBookName.Text, "/", "_")
    oBookName = Replace(oBookName.Text, " ", "")
    oBookName = ("B" & (oBookName))
      If oRng.InRange(oRngDup) Then
        ActiveDocument.Bookmarks.Add oBookName.Text, oRng
        oRng.Collapse wdCollapseEnd
      Else
        Exit Do
      End If
    Loop
End With
lbl_Exit:
  Exit Sub
End Sub

我无法让它执行我想要的操作,因为我立即收到书签名称错误,而且我什至看到它更改了文档本身中的原始文本,这是我绝对不希望发生的。

我还没有尝试过自动化超链接,但喜欢对此的一些投入。非常感谢任何想要帮助初学者的人:)

vba ms-word hyperlink
1个回答
0
投票

将找到的文本重新格式化为可用书签名称的代码正在替换该文本:

oBookName = Replace(oBookName.Text, "/", "_")

...实际上替换了找到的范围内的文本。

试试这个:

Sub ScratchMacro()
    Dim oRng As Range, BookName As String, doc As Document
    
    Set doc = ActiveDocument
    Set oRng = doc.Range 'or use current Selection...
    With oRng.Find
        .ClearFormatting
        .Font.Bold = True
        .Wrap = wdFindStop 'stop when the end of the content is reached
        Do While .Execute
            'oRng.Select
            'read range to string and replace / and spaces
            BookName = Replace(oRng.Text, "/", "_")     
            BookName = "B" & Replace(BookName, " ", "") 
            doc.Bookmarks.Add BookName, oRng
        Loop
    End With
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.