vba - 根据用户通过复选框的选择生成 Word 文档的最佳方法是什么?
问题描述
我正在尝试创建一个表单模板以在工作中使用,该模板可以通过复选框进行自定义。
到目前为止,我一直在考虑在每个段落之前添加复选框,并在末尾添加一个按钮。当我单击按钮时,我的意图是删除所有未激活复选框的段落。
问题是我不知道哪种方法对用户最友好。我正在考虑为每个段落制作书签,并为每个复选框使用 IF 公式。最用户友好的复选框是内容控件,但我不知道如何在 VBA 代码中引用它们。
我能找到的只是表单字段复选框,但我不知道如何使它们可点击。
在我开始研究这两个选项之前,我有兴趣找出这两个选项中的哪一个更适合满足我的要求。
谢谢!
解决方案
我已经成功地做到了我的意图。首先,我在每个段落之前放置了内容控制复选框,并为每个段落设置了一个唯一的标签。然后,对于每个复选框,我选择了包括复选框在内的段落,并添加了一个与复选框名称完全相同的书签。接下来,我只选中了复选框并添加了一个书签名称 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。如果选中,则隐藏复选框,如果未选中,则隐藏整个段落,包括复选框。这样,在我单击提交按钮后,将没有可见的复选框,因此文档可以打印了。
推荐阅读
- r - 用户创建的函数从数据框中的 2 列中设置上限值和下限值的问题
- cloud - 从已部署的 Next 应用程序访问数据库
- assembly - 如何使用程序集在屏幕上“绘制”像素,以及如何从用户那里获取输入
- go - Golang 正则表达式替换行为
- swiftui - 如果与上一个条目相同,则不显示日期
- mongodb - 使用 GridFS 在 MongoDB 中存储图像是否有效?
- python - 如何取回发布到python中api的更新文件
- c# - 有没有办法在 ASP.NET MVC Web 应用程序中使用 Firebase Auth 重置密码
- php - 使用 Elementor Forms API (Wordpress) 处理表单后重定向到主页
- spring-boot - Spring boot:如何访问rest控制器中的服务对象