所以这是我的第一次编程经验,对此我感到非常兴奋。但是,我一直在处理一个问题:
目标
我的目标是创建一个带有集成用户表单的Word文档,并在其开头要求输入名称,标题和开始日期。然后,该信息应反映在文档中定义的区域中。
Dim Name As Range
Set Name = ActiveDocument.Bookmarks("Name").Range
Name.Text = Me.TextBox1.Value
Dim Title As Range
Set Title = ActiveDocument.Bookmarks("Title").Range
Title.Text = Me.TextBox2.Value
Dim Startdate As Range
Set Startdate = ActiveDocument.Bookmarks("Startdate").Range
Startdate.Text = Me.TextBox3.Value
Me.Repaint
UserForm1.Hide
我可以成功集成Userform,将信息分配给书签。由于我只能使用1个书签,因此我尝试了使用文本属性的运气,但是它不起作用。
我接下来要尝试的是在整个文本中应用1个书签和几个交叉引用,这意味着我必须在代码中添加一个命令来自动更新所有交叉引用,我尝试使用sub updateAllFields()>
Dim Name As Range
Set Name = ActiveDocument.Bookmarks("Name").Range
Name.Text = Me.TextBox1.Value
Dim Title As Range
Set Title = ActiveDocument.Bookmarks("Title").Range
Title.Text = Me.TextBox2.Value
Dim Startdate As Range
Set Startdate = ActiveDocument.Bookmarks("Startdate").Range
Startdate.Text = Me.TextBox3.Value
Me.Repaint
Sub UpdateAllFields()
UserForm1.Hide
但是这个给我一个错误信息。有人可以帮忙吗?
答案 0 :(得分:0)
粘贴到fields路径,因为它可能需要较少的维护工作。
步骤:
1)点击文件|属性|高级属性|自定义
2)输入以下数据:
-名称:customName
-文字:输入姓名
3)点击按钮“添加”
4)对“标题”和“开始日期”字段重复步骤2和3(请记住在之前添加“自定义”字词,以便以后可以轻松识别它们
它应该是这样的:
步骤:
1)将光标定位在word文档中您想要的字段的位置
2)点击插入|快速零件|领域分类:文件信息| DocProperty |
3)单击确定
4)对每个字段重复该过程
注意:您可以在文档的不同部分添加相同的字段/自定义属性
步骤:
1)添加用户窗体
2)添加三个文本框并将name属性设置为:
-txtName
-txtTitle
-txtStartDate
每一个。
3)添加命令按钮并将其名称设置为cmdInsertData
它应该是这样的:
要设置每个控件的名称,请在属性窗口中查找(名称):
步骤:
1)通过按Alt + F11(或激活功能区中的“开发人员”选项卡并按Visual Basic按钮
)来启动VBE。
2)将以下代码添加到“ ThisDocument”对象:
Private Sub Document_Open()
UserForm1.Show
End Sub
步骤:
1)右键单击UserForm1对象,然后选择“查看代码”
2)添加以下代码:
Private Sub cmdInsertData_Click()
' Update the properties values
ThisDocument.CustomDocumentProperties("customName").Value = Me.txtName.Value
ThisDocument.CustomDocumentProperties("customTitle").Value = Me.txtTitle.Value
ThisDocument.CustomDocumentProperties("customStartDate").Value = Me.txtStartDate.Value
' Show changes of document properties in document
ThisDocument.Fields.Update
' Hide the userform
UserForm1.Hide
End Sub
请记住将文档另存为启用宏的文件
关闭并重新打开
尝试一下,让我知道
免责声明:与this article states一样,有一种正确处理显示用户表单的正确方法,但是为了简单起见,我将其保留为“简单”方法。