将值保存在 vba 中的用户表单中,以便在用户保存、退出和重新打开文档后它们显示在用户表单上?

Posted

技术标签:

【中文标题】将值保存在 vba 中的用户表单中,以便在用户保存、退出和重新打开文档后它们显示在用户表单上?【英文标题】:Save the values in a userform in vba so they show up on userform after a user saves, exits, and reopen's the doc? 【发布时间】:2022-01-09 09:39:39 【问题描述】:

我有多个用户表单页面连接到一个 word 文档,用户可以简单地填写类似时尚的表单来填充/生成文档,但是如果例如在用户表单页面 1 上用户完成它,我就会遇到问题并单击“保存/下一页”命令按钮,然后在下一页上,他们决定退出表单并在另一个时间完成剩余部分,因为文档已保存并且第 1 页上的问题已得到完全回答和填充doc这个词。

问题是,当用户重新打开文档时,他们经常对为什么他们之前填写​​的答案仍然没有输入到用户表单(它们仍然在 word 文档中)感到困惑,但它没有显示用户在用户窗体上的文本/组合框中回答。有没有人可以解决这个问题?

【问题讨论】:

您需要从 INI 文件或类似文件中保存/加载值。 这是 Microsoft 的文章,其中包含 5 种在宏会话之间存储数据的方法:文档变量、文档属性、自动文本、设置 (INI) 文件和使用注册表:docs.microsoft.com/en-us/office/vba/word/concepts/miscellaneous/… 将值保存为文档变量并在初始化过程中将它们拉回。 你如何将答案放在 doc 中?通过字段、书签、内容控件?使用内容控件,您可以使用与用户表单中的文本框名称相同的内容控件标签。通过这种映射,您可以将值从用户表单写入内容控件,反之亦然 - 在打开表单时将它们从内容控件写入文本框......所有这些都通过两个通用例程完成。 @CharlesKenyon 我将它们保存为文档变量/书签,有没有办法在初始化过程中同时拉入,这会是什么样子?我的想法是初始化下面的代码: Load userform1 With ActiveDocument .Fields.Update End With 但是这并没有完成工作 【参考方案1】:

下面是code Word MVP Graham Mayor uses 的示例,用于获取文档变量中已有的数据以重新初始化表单:

Private Sub UserForm_Initialize()
Set oVars = ActiveDocument.Variables
Caption = "My Example Form"
Label1.Caption = "Forename"
Label2.Caption = "Surname"
Label3.Caption = "Phone Number"
CommandButton1.Caption = "OK"
CommandButton2.Caption = "Cancel"
On Error Resume Next
'Read the values from the document variables if they exist
TextBox1.value = oVars("var1").value
TextBox2.value = oVars("var2").value
TextBox3.value = oVars("var3").value
End Sub

【讨论】:

如果我只想让选定的项目出现,我该如何为组合框执行此操作? @CharlesKenyon

以上是关于将值保存在 vba 中的用户表单中,以便在用户保存、退出和重新打开文档后它们显示在用户表单上?的主要内容,如果未能解决你的问题,请参考以下文章

在 Excel VBA 中使用表单另存为位置保存工作表

Laravel 中的 Ajax Jquery 未将值保存到数据库

EXCEL VBA:用户表单文本框中的科学记数法

VBA 防止用户输入表单中出现空字段

Excel 崩溃,VBA 用户窗体无法保存

如何使用 VBA 从 Access 中的表单更改保存的导出路径?