MsWord VBA按名称在标题上跳转
在Word VBA(ActiveDocument.Hyperlinks.Add)中添加内部链接时MsWord VBA按名称在标题上跳转,vba,ms-word,Vba,Ms Word,在Word VBA(ActiveDocument.Hyperlinks.Add)中添加内部链接时 我可以将标题称为子地址:=“\u MyHeadingName” 如果你点击链接,它会跳到那里。 这是一个证明,在Word中,标题是准书签 然而: 如果我想跳转到VBA中的某个特定标题,我想不出该如何跳转。 (不使用Find+.style参数) 我会期待类似 Selection.GoTo what:=wdGoToHeading, Name:="_MyHeadingName" 'OR "MyHeadin
我可以将标题称为子地址:=“\u MyHeadingName” 如果你点击链接,它会跳到那里。 这是一个证明,在Word中,标题是准书签 然而: 如果我想跳转到VBA中的某个特定标题,我想不出该如何跳转。 (不使用Find+.style参数) 我会期待类似
Selection.GoTo what:=wdGoToHeading, Name:="_MyHeadingName" 'OR "MyHeadingName"
或
工作并在特定标题上进行选择。... 但它不。。。
有什么想法吗?(为什么不,如何是,什么是更好的方法)
编辑(到目前为止的结论摘要):
可以使用以下命令跳到标题名上:
ActiveDocument.Bookmarks(\u HeadingName)。选择
,但前提是在此之前至少创建了指向该标题的超链接或隐藏书签(请参阅讨论中的示例)Word仅在引用标题后向标题添加(隐藏)书签(例如,对于交叉引用或目录),并为每种引用添加不同的书签(例如,对于交叉引用和相同标题的目录条目,分别添加了_Ref510330670和_Toc467495364)
如果要转到某个特定标题,可以使用“查找”,指定标题文本和/或标题样式。在任何情况下,都不需要使用“选择”,您几乎可以直接寻址范围
如果您坚持使用Selection.Goto,则需要使用Word支持的内容。除非您知道标题已被添加书签,以及该书签的名称,否则,如VBA帮助文件中所述,您可以使用以下任一选项:
Selection.GoTo What:=wdGoToHeading, Which:=wdGoToFirst
Selection.GoTo What:=wdGoToHeading, Which:=wdGoToAbsolute, Count:=1
如果您知道标题的书签名称,可以使用:
Selection.GoTo What:=wdGoToBookmark, Name:="bookmarkname"
With ActiveDocument.Range.Find
.ClearFormatting: .Style = wdStyleHeading1: .Execute FindText:="MyHeadingName", Format:=True
End With
提供书签名称代替“bookmarkname”的地方。Word仅在标题被引用后(例如,对于交叉引用或目录)向标题添加一个(隐藏的)书签,并为每种引用添加不同的书签(例如,交叉引用参考文献510330670,同一标题的目录条目参考文献467495364)
如果要转到某个特定标题,可以使用“查找”,指定标题文本和/或标题样式。在任何情况下,都不需要使用“选择”,您几乎可以直接寻址范围
如果您坚持使用Selection.Goto,则需要使用Word支持的内容。除非您知道标题已被添加书签,以及该书签的名称,否则,如VBA帮助文件中所述,您可以使用以下任一选项:
Selection.GoTo What:=wdGoToHeading, Which:=wdGoToFirst
Selection.GoTo What:=wdGoToHeading, Which:=wdGoToAbsolute, Count:=1
如果您知道标题的书签名称,可以使用:
Selection.GoTo What:=wdGoToBookmark, Name:="bookmarkname"
With ActiveDocument.Range.Find
.ClearFormatting: .Style = wdStyleHeading1: .Execute FindText:="MyHeadingName", Format:=True
End With
在这里,您可以提供书签的名称来代替“bookmarkname”。Quick'n'easy
将此功能添加到模块:
Sub jumpToBookmark(bmName As String)
ActiveDocument.Bookmarks(bmName).Select
Application.Selection.Collapse
End Sub
那么就这样称呼它:
jumpToBookmark "myBookmark"
更多信息:
- MSDN:
- MSDN:
Sub jumpToBookmark(bmName As String)
ActiveDocument.Bookmarks(bmName).Select
Application.Selection.Collapse
End Sub
那么就这样称呼它:
jumpToBookmark "myBookmark"
更多信息:
- MSDN:
- MSDN:
Selection.GoTo What:=wdGoToBookmark, Name:="bookmarkname"
With ActiveDocument.Range.Find
.ClearFormatting: .Style = wdStyleHeading1: .Execute FindText:="MyHeadingName", Format:=True
End With
如果要使查找代码更紧凑,可以使用:
Selection.GoTo What:=wdGoToBookmark, Name:="bookmarkname"
With ActiveDocument.Range.Find
.ClearFormatting: .Style = wdStyleHeading1: .Execute FindText:="MyHeadingName", Format:=True
End With
你能描述一个你想这样做的场景吗?在一些细节中,比如你如何通知VBA它应该去哪个标题,以及这样一个宏将以何种方式有用。我很难想象导航窗格、交叉引用或ToC是如何不够的……这个宏自动化了将关键字集合添加到列表的过程文档,在特定标题名称下。标题的位置是动态的,因此我不能按数字,只能按名称引用。我可以使用“查找+样式”跳转到它,只是想知道是否也可以通过GotoCan之类的方式描述您希望这样做的场景?详细说明,如如何通知VBA它应该转到哪个标题nd这样一个宏在什么方面有用。我很难想象导航窗格、交叉引用或ToC是如何不够的……这个宏自动将关键字集合添加到文档中的过程,在特定标题名称下。标题的位置是动态的,因此我不能按数字引用,只能按名称引用。我可以p关于Find+样式,只是想知道是否也可以通过Gototh之类的方式。这听起来很有希望,我希望它对标题名称也能像预期的那样起作用。我现在正在短途旅行,星期一我会回来报告。“标题名称”的格式为
标题样式
?(或者,标题也被标记为书签,它将通过书签名称找到它)正如其他注释中所述:当您创建链接时,您可以看到,HeadingStyles是独立于书签自动引用的。因此mydoc.doc#MyHeadingName是开箱即用的。我想在VBA代码中将该功能用于其他目的,在不创建书签的情况下跳转到特定标题上!这似乎是合乎逻辑的可能,但还不知道工作方法。我非常激动,在旅行时借了一台笔记本电脑,只是为了测试一下。它可以工作!!我确认,没有创建任何以前的书签,Activedocument.Bookmarks(“\u MyHeadingName”).select正在跳转到指定的标题名。抱歉,我需要删除绿色标记,因为正如#macropod在其评论中指出的,只有在之前创建了隐藏书签时,此引用才有效-在某个地方创建了指向该书签的链接。这听起来很有希望,我希望它对标题名也能起到预期的作用。我现在正在进行一次短途旅行,星期一我会回来报告。“标题名称”的格式为标题样式
?(或者,标题也被标记为书签,它会通过书签名称找到它)正如在另一条评论中所描述的:当您创建链接时,您可以看到HeadingStyles是独立于书签自动引用的