【问题标题】:importing AND exporting form fields [closed]导入和导出表单域[关闭]
【发布时间】:2021-01-08 02:26:42
【问题描述】:

我有一个带有宏的 Word 表单。而且我想将这些表单字段导入和导出到另一个应用程序,例如 Excel 甚至另一个 Word 表单。所以我想在 Word 中创建一个“保存”和“获取”按钮,以便单击时,该 Word 表单中的 VBA 代码将保存这些字段或检索信息并将其放入这些 Word 字段中。最好和最快的方法是什么?谢谢。

【问题讨论】:

  • 当我从 Word 模板创建一个新文档时,我需要一种存储和检索信息的方法,这样我就不必在创建另一个新文档时使用相同的信息继续填写这些字段.我在哪里存储信息、Word、Excel 等并不重要。我只是在寻找一种快速可靠的方法来执行此操作。谢谢。
  • A recent article of mine 在 VBA 中探索 Model-View-ViewModel。从技术上讲,是“最好的方法”,因为它完全分离了每个关注点,扩展性很好,很容易单元测试,并且表单的代码隐藏基本上为零控制事件处理程序(相反,我们使用一个简单的 API 以编程方式将控件“绑定”到 commands - 几乎完全不同的范例)。缺点是它需要一个非常稳固但相当大的基础架构代码库才能工作,但作为概念验证,MVVM 似乎可以在 VBA 中工作。

标签: vba import ms-word export


【解决方案1】:

您需要为表单字段选择“文件格式”,将表单状态“序列化”为该格式,将其保存在磁盘上,然后从另一个进程读取该文件,将文件内容“反序列化”回进入表单状态。

最快的方法是使用用户定义类型(UDT)结构:

Private Type FormFields
    FirstName As String
    LastName As String
    Email As String
    IsAdmin As Boolean
End Type

现在您可以通过OpenWrite 访问文件For BinaryFormFields 转储到带有Put# 语句的文件中,并且通过Read 访问您可以将Get# 转储到一个形状相同 FormFields 结构。形状很关键;如果您制作了一个交换两个字段的新版本,那么您刚刚破坏了二进制“反序列化”!或者您可以使用 ADODB 将 Stream 写入文件。或者您可以手动将其导出为某种 CSV 格式。或者一些 XML 模式。或者数据库...Open ... For Binary Read 只是一种值得探索的方式,这很可能就是你所需要的。

做到这一点的最佳方法是非常主观的,并且取决于许多超出此处答案范围的因素:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多