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

问题描述

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

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

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

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

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

谢谢!

标签: vbams-word

解决方案


我已经成功地做到了我的意图。首先,我在每个段落之前放置了内容控制复选框,并为每个段落设置了一个唯一的标签。然后,对于每个复选框,我选择了包括复选框在内的段落,并添加了一个与复选框名称完全相同的书签。接下来,我只选中了复选框并添加了一个书签名称 hide_nameofthecheckbox。

我添加了一个 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。如果选中,则隐藏复选框,如果未选中,则隐藏整个段落,包括复选框。这样,在我单击提交按钮后,将没有可见的复选框,因此文档可以打印了。


推荐阅读