如何将输入的数据保存到宏中,以便下次运行时可以用数据填充输入表单?

时间:2019-07-01 15:51:48

标签: vba ms-word

我需要在宏终止后将输入到Microsoft Word表单中的数据保存在VBA中。我有一个包含大约40个字段的表单,其中包含姓名,地址,电话号码等,我不希望用户再次输入所有内容,以防万一他们意识到自己犯了一个错误并需要更改一项。当前,宏在窗体关闭时删除所有输入到窗体的数据。

我在论坛和Google上四处逛逛,但没有任何运气。

此代码使用命令按钮从word文档中调出我的输入表单:

Private Sub CommandButton1_Click()

    InputForm.Show vbModeless
End Sub

此代码关闭表单:

Private Sub CloseForm_Click()

    Dim Closing As Integer
    Closing = MsgBox("This will exit the form and erase all the data that has been input. You may want to review the documents to ensure they were generated correctly before closing the form. Click Yes to proceed to close the form or No to go back to the form.", vbYesNo + vbQuestion, "Exit Confirmation")
    If Closing = vbYes Then
        Unload InputForm 'This closes the Input Form and returns the user to Word
    End If
End Sub

宏不会将输入的信息保存到表单中。每当它关闭时,所有信息都将被删除。我要保存它。

1 个答案:

答案 0 :(得分:0)

用于在文档中保存数据的选项

  1. Event自早期以来就已在Word中提供,并且自Word 2.0(1990年代初)以来在所有版本中均可用。它只是存储与标识符(名称)关联的任意数量的字符串的地方。本质上是一个键值对。重要说明:它必须是一对,没有值的键不能存在,并且值不能是零长度的字符串。为名称分配值将创建Document.Variables;删除值将删除Variable。这些对用户不可见。

示例:

Variable
  1. Document.Variables("Name").Value = "John Doe" Document.CustomDocumentProperties相似,但可以使用字符串以外的数据类型。可以存储的数据长度受到限制。用户可以通过“属性”界面看到它们。必须明确创建/销毁它们。我相信是在Word 97中引入的。

示例:

Variables
  1. Document.CustomDocumentProperties.Add(Name As String, LinkToContent As Boolean, _ [Type], [Value], [LinkSource]) 这些是保存在docx zip软件包中的XML“页面”。这是保存数据的好方法,并且可以从关闭的文件轻松访问。该功能是在Word 2010中引入的,因此仅适用于docx,不会在较早版本或doc文件格式中提供。

编码比CustomXMLPartsVariables复杂。

在所描述的场景中使用此方法的通常方法是在文档(或模板-从模板创建的文档应继承CXP)中创建CustomXMLPart。然后,所有代码所需要做的就是从已经可用的xml节点中进行读取/写入。如果VBA编码器没有XML解析的背景,那么学习曲线就会很陡。

阅读和写作有很多方法,下面的代码段演示了阅读的基础知识,以使读者了解其中涉及的内容:

Properties