1

我有一个大约 200 页的文档,本质上是特定软件的测试程序列表。现在,该文档有某些部分与软件的不同版本有关,并且这些部分混合在一起,因此它们没有按特定顺序很好地格式化。我想做的是能够隐藏测试不同版本时不需要的文档部分。我知道 MS word 有一个隐藏文本的字体选项,但我希望能够设置一个按钮/超文本链接/宏,以便轻松隐藏不需要的部分。这可能吗?我该怎么做?我已经开始尝试使用 VBA 脚本来设计我自己的宏,但只找到了一种方法来隐藏每个快捷方式命中的一个部分。有没有办法做到这一点,使所有部分同时生效?

编辑:

文档是这样组织的

Version 1
   Test Option button
/
Version 2
   Test Option button
       Check that Sample button is disabled
/
Version 1
   Test Save button
/
Version 3 
   Test Save to USB button

/

所以你可以看到它完全没有组织,我目前为一个宏拥有的代码真的不起作用,因为我没有在指定的两点之间进行选择,而是选择了整个文档。

Sub TextSelectTest()
'
' TextSelectTest Macro
' Base Test
'
With Selection.Find
    .Text = "Version1"
    .Forward = False
    .MatchWildcards = False
    .Wrap = wdFindStop
    .Execute
End With
Selection.Extend
With Selection.Find
    .Text = "/"
    .Forward = True
    .Execute
    .Text = ""
End With
Selection.Extend
With Selection.Font
    .Hidden = True
End With
End Sub
4

1 回答 1

1

我不认为hiding字体是最专业的解决方案,因为结果仅对打印可见。但这在这种情况下可能是最简单的,尤其是您建议的。

第一步:在文档中设置部分。这很容易,应该在 Word 应用程序中完成。您将需要插入与需要管理的文档的多个部分一样多的节分隔标记。我们需要知道哪个部分应该/不应该是每本手册的一部分,但我稍后会回到这一点。

第二步:您将需要以下子程序,它将“隐藏”所有部分并显示适当的部分:

Sub HideUnhide_Document_Section(secIndex As Variant)

Dim Doc As Document
Set Doc = ActiveDocument

Dim secDoc As Variant

'to hide all section first, by iteration 
For Each secDoc In Doc.Sections
    secDoc.Range.Font.Hidden = True
Next secDoc
    'alternatively we could hide whole content without iteration:
    'secDoc.Content.Font.Hidden = True

'to un-hide chosen sections
For Each secDoc In secIndex
    Doc.Sections(secDoc).Range.Font.Hidden = False
Next secDoc

End Sub

为了管理您的隐藏过程,我建议使用以下代码:

子调用_Hide()

Dim arrVersion1 As Variant
    'put all sections for appropriate version
    arrVersion1 = Array(1, 3)

    'to unhide
    HideUnhide_Document_Section arrVersion1
End Sub

您可以为每个版本准备类似的单独子例程,也可以对其进行参数化。在第二种情况下,您的手册的每个版本都必须有单独的数组 (arrVarsionX)。

于 2013-03-29T21:06:10.920 回答