根据用户通过复选框选择生成Word文档的最佳方法是什么?

时间:2019-04-23 19:07:41

标签: vba ms-word

我正在尝试创建一个可以在工作中使用的表单模板,该模板可以通过复选框进行自定义。

到目前为止,我一直在考虑在每个段落之前添加复选框,并在按钮末尾添加复选框。 当我单击按钮时,我的意图是删除所有未激活复选框的段落。

问题是我不知道哪种方法最方便用户使用。 我正在考虑为每个段落创建书签,并为每个复选框使用IF公式。 最用户友好的复选框是内容控件,但是我不知道如何在VBA代码中引用它们。

我只能找到有关表单字段复选框的信息,但我不知道如何使它们可单击。

在研究这两个选项中的每一个之前,我有兴趣找出这两个选择中的哪一个更适合满足我的要求。

谢谢!

1 个答案:

答案 0 :(得分:1)

我已经做到了我想要的。 首先,我在每个段落之前放置了内容控制复选框,并为每个段落设置了唯一的标签。 然后,对于每个复选框,我都选择了包括该复选框在内的段落,并添加了一个与该复选框完全一样的书签。接下来,我只选择了该复选框,并为该复选框添加了书签名称hide_name。

我添加了一个ActiveX按钮,并单击了以下vba代码:

Private Sub btnSubmit_Click()
Dim bookmark As String
Dim ctl As ContentControl
    For Each ctl In ActiveDocument.ContentControls
        If ctl.Type = wdContentControlCheckBox Then
            If ctl.Checked = False Then
            bookmark = ctl.Tag
                 Bookmarks(bookmark).Range.Font.Hidden = True
                 Else
                 bookmark = "hide_" & ctl.Tag
                  Bookmarks(bookmark).Range.Font.Hidden = True

                 ' DO NOTHING
            End If
        End If
    Next
End Sub

基本上,当我单击“提交”按钮时,代码将验证每个复选框的值为True或False。如果选中,则隐藏复选框;如果未选中,则隐藏整个段落,包括复选框。 这样,在我单击“提交”按钮后,将没有可见的复选框,因此该文档可以打印。