带有书签和自动交叉引用的Word用户表单

时间:2019-02-28 21:48:28

标签: ms-word ms-office userform

所以这是我的第一次编程经验,对此我感到非常兴奋。但是,我一直在处理一个问题:

目标

我的目标是创建一个带有集成用户表单的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

但是这个给我一个错误信息。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

粘贴到fields路径,因为它可能需要较少的维护工作。


I:为每个字段(名称,标题,起始日期)创建三个自定义文档属性

步骤:
1)点击文件|属性|高级属性|自定义
2)输入以下数据:
-名称:customName
-文字:输入姓名
3)点击按钮“添加”
4)对“标题”和“开始日期”字段重复步骤2和3(请记住在之前添加“自定义”字词,以便以后可以轻松识别它们

它应该是这样的:
enter image description here


II:将创建的每个自定义属性的字段添加到word文档中

步骤:
1)将光标定位在word文档中您想要的字段的位置
2)点击插入|快速零件|领域分类:文件信息| DocProperty |
3)单击确定
4)对每个字段重复该过程

enter image description here

注意:您可以在文档的不同部分添加相同的字段/自定义属性

enter image description here


III:创建用户窗体并添加控件

步骤:
1)添加用户窗体
2)添加三个文本框并将name属性设置为:
-txtName
-txtTitle
-txtStartDate
每一个。
3)添加命令按钮并将其名称设置为cmdInsertData

它应该是这样的:

enter image description here

要设置每个控件的名称,请在属性窗口中查找(名称):

enter image description here


IV:添加代码以在启动时显示用户窗体

步骤:
1)通过按Alt + F11(或激活功能区中的“开发人员”选项卡并按Visual Basic按钮
)来启动VBE。 2)将以下代码添加到“ ThisDocument”对象:

Private Sub Document_Open()

    UserForm1.Show

End Sub

V:添加表单代码

步骤:
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一样,有一种正确处理显示用户表单的正确方法,但是为了简单起见,我将其保留为“简单”方法。