在标题MS Word 2007之间隐藏文本

时间:2013-03-29 17:05:34

标签: vba ms-word word-vba

我有一个大约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

1 个答案:

答案 0 :(得分: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

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

Sub Call_Hide()

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

    'to unhide
    HideUnhide_Document_Section arrVersion1
End Sub

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