Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MsWord VBA按名称在标题上跳转_Vba_Ms Word - Fatal编程技术网

MsWord VBA按名称在标题上跳转

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

在Word VBA(ActiveDocument.Hyperlinks.Add)中添加内部链接时
我可以将标题称为子地址:=“\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是独立于书签自动引用的