0

我对 Access vba 很公平,但 Word 对我来说是一种新方言。

我在一家拥有电子病历 (EMR) 的医院工作。我们需要一个无法在 EMR 中创建和执行的护士临床进展记录的特定格式和结构。我创建了一个 Word vba 用户窗体,“frmProgNote”附加到文档“ProgNote.doc”。FrmProgNote" 具有创建文档所需结构的文本框,并且有一个命令按钮,当单击该命令按钮时,该按钮将表单中的信息发送到 ProgNote.doc 中的书签,并复制文档中的所有文本,包括新插入的文本到剪贴板。然后用户将其粘贴到 EMR 中。这一切都很好(信不信由你),但现在他们希望同时打开多个 frmProgNote 副本,以便他们可以同时在多个患者之间移动。

我已经为此工作了 2 天,但无法得到它。我发现我无法打开多个 Word 实例并在多个实例中打开相同的表单。我复制了文档和表格,所以现在有带有 frmProgNote1 的 ProgNote1.doc 和带有 frmProgNote2 的 ProgNote2.doc。我可以同时打开但如果我打开 frmProgNote1 然后打开 frmProgNote2 我可以复制的唯一数据来自 frmProgNote2;复制按钮不会从第一个表单中复制任何内容。我可以单击 frm1 并让它获取新数据,但复制按钮不再起作用。有什么建议么?非常感谢。

4

1 回答 1

0

以下代码提供了创建新实例的基础UserForm

Private frmNewInstance As Object

Private Sub CommandButton1_Click()
    Set frmNewInstance = UserForms.Add(Me.Name)
    frmNewInstance.Show
End Sub

Private Sub UserForm_Terminate()
    Set frmNewInstance = Nothing
End Sub

有必要控制对象引用,将其设置为Nothing表单实例关闭时。

请注意,此过程不像在 VB.NET 或 C# 中那样健壮或可靠。特别是,更难区分表单的不同实例。

要考虑的一种方法是使用Tag表单的属性:

    frmNewInstance.Tag = "OtherOne"
    frmNewInstance.Show
于 2013-07-25T22:18:04.067 回答