VBA:Word 2013展开/折叠特定标题

VBA:Word 2013展开/折叠特定标题,vba,ms-word,Vba,Ms Word,我需要帮助,如果您了解VBA,我认为这很容易: 我想要一个按钮或下拉菜单来展开/折叠特定的菜单标题 下面是文档布局的概要(部门级别中也有菜单和数据,但我不需要折叠/扩展这些级别): -日常过程 A系 B系 C系 D系 -每周流程 A系 B系 C系 D系 -月度流程 A系 B系 C系 D系 -年度流程 A系 B系 C系 D系 -附录 我希望每个部门都有按钮,隐藏所有其他部门。例如,如果我单击部门A,所有部门B、C、D菜单都将折叠,只显示部门A 我想这些是我需要的按钮: 膨胀球 Sh

我需要帮助,如果您了解VBA,我认为这很容易:

我想要一个按钮或下拉菜单来展开/折叠特定的菜单标题

下面是文档布局的概要(部门级别中也有菜单和数据,但我不需要折叠/扩展这些级别):

-日常过程
  • A系
  • B系
  • C系
  • D系
-每周流程
  • A系
  • B系
  • C系
  • D系
-月度流程
  • A系
  • B系
  • C系
  • D系
-年度流程
  • A系
  • B系
  • C系
  • D系
-附录 我希望每个部门都有按钮,隐藏所有其他部门。例如,如果我单击部门A,所有部门B、C、D菜单都将折叠,只显示部门A

我想这些是我需要的按钮:

  • 膨胀球
  • ShowDeptA
  • ShowDeptB
  • ShowDeptC
  • ShowDeptD
  • 这是一个我认为可行的部门的伪代码:

  • 膨胀球
  • 从文档顶部开始
  • 搜索格式=标题2
  • 如果标题2=部门A:展开标题, 其他:折叠标题
  • 到目前为止我所拥有的:(我所需要的全部是折叠标题的命令)


    我没有Word 2013,因此无法提供完整的答案。但我可以从两个方面帮助你

  • 比较文本。现在您只比较单词“Dept A”,但实际选择可能也包含换行符。你可以试试

    Selection.Text = "DeptA" & vbCR
    

    这在一定程度上取决于这些标题的控制有多严格

  • 折叠内容。我假设您已经将文档放入大纲视图。如果是,则命令为

    ActiveWindow.View.CollapsOutline Selection.Range

    不过,关于塌陷线的问题是,它只塌陷一层。所以,如果你的标题2下有一个标题3,它会被折叠,但标题2不会被折叠。据我所知,多次运行CollapseOutline没有坏处,因此我会提前计算出文档中的级别深度,然后运行该方法足够多的时间来适应这一点。 好的,在我面前拿着一份Word 2013的复印件再看一遍。似乎没有折叠文本的方法;相反,您将其折叠状态设置为true。而且,它适用于段落,而不是范围或选择。下面是代码的最后一部分,包括折叠代码:

    Do Until Selection.Find.Found = False
        If Selection.Text Like "Department A*" Then
            Selection.Find.Style = ActiveDocument.Styles("Heading 2")
            Selection.Find.Execute
        Else: Selection.Paragraphs(1).CollapsedState = True
            Selection.Find.Style = ActiveDocument.Styles("Heading 2")
            Selection.Find.Execute
        End If
    Loop
    
  • 关于您在宏列表中看到的Word命令,您可以运行这些命令,但它们真正的功能在于能够将它们重新编码以执行您喜欢的操作。在这种情况下,您需要做的是由对象模型支持的,所以我不必为它们操心

    最后,如果您打算进行大量VBA编码,我建议您熟悉对象浏览器(VB编辑器中的F2)。你可以在那里寻找你认为可能存在的东西;例如,在研究这个问题时,我搜索了“Collapseheading”。在这种情况下,这本身并不富有成效,但它确实让我处于崩溃状态


    希望这能有所帮助。

    问题是我们在这里不是免费编写代码的。如果您已经自己尝试过,我们将提供支持。是吗?你可以随时重新编辑你的问题,而不是添加难以阅读的评论。@KazJaw,谢谢。我更新了我原来的帖子。有人能帮我吗?问题是,你在问题的第一句话中写错了:
    如果你知道VBA,我想这很容易。事实上,这并不容易……谢谢,@Christina。比较文本现在起作用了。我没有使用大纲视图,是否有命令在默认视图中折叠标题,还是应该使用大纲模式?在宏下,我看到一个列在“word命令”下,叫做“CollapseHeading”,这是我要找的吗?如果是,如何调用此内置宏?默认键盘快捷键为Alt+Shift+-或Alt+Shift+Num-。我试图录制此快捷方式的宏,但VBA编辑器中没有显示任何内容。我只需要在我的代码中调用它,我想我已经完成了。我不确定是否使用CollapseHeading,这可能是Word 2013命令,因为我没有它。我确实有OutlineCollapse,它是Word Command中相当于CollapsOutline的命令。不过,我不确定在大纲视图之外折叠标题意味着什么。再说一次,我并不是每天都使用Word 2013,但根据我的使用经验,您仍然需要在大纲视图中才能实际执行任何操作。明天我将尝试用一个简短的子程序来编辑我的文章,该子程序将演示如何在大纲视图中工作。这是Word 2013中的一个新功能。有没有一种方法可以简单地对所选内容调用内置word命令?我试着把它录下来,但在VBE中什么也没有显示。看看这个新功能:所以,我在没有正确版本的Word的情况下试图回答一个问题,这是对的。编辑了我的答案,以解决2013年对象模型的问题。忽略我所说的大纲视图。
    
    Selection.Text Like "DeptA*"
    
    Do Until Selection.Find.Found = False
        If Selection.Text Like "Department A*" Then
            Selection.Find.Style = ActiveDocument.Styles("Heading 2")
            Selection.Find.Execute
        Else: Selection.Paragraphs(1).CollapsedState = True
            Selection.Find.Style = ActiveDocument.Styles("Heading 2")
            Selection.Find.Execute
        End If
    Loop