我对Access vba很公平,但Word对我来说是一种新方言。
我在一家拥有电子病历(EMR)的医院工作。我们需要Nurse的临床进展注释的特定格式和结构,这些格式和结构无法在EMR中创建和实施。我创建了一个Word vba UserForm,“frmProgNote”附加到文档“ProgNote.doc”。 FrmProgNote“具有创建文档所需的结构的文本框,并且有一个命令按钮,当单击时,将表单中的信息发送到ProgNote.doc中的书签,并将文档中的所有文本(包括新插入的文本)复制到剪贴板上。然后用户将其粘贴到EMR中。这一切都很好(信不信由你),但现在他们想要同时打开多个frmProgNote副本,这样他们就可以同时在几个患者之间移动。
我已经为此工作了2天而且无法得到它。我发现我无法打开Word的多个实例并且在多个实例中打开相同的表单。我复制了文档和表单,所以现在使用带有frmProgNote1的ProgNote1.doc和带有frmProgNote2的ProgNote2.doc。如果我打开frmProgNote1然后打开frmProgNote2我可以复制的唯一数据来自frmProgNote2,我可以让两者都打开但是复制按钮不会复制第一个表单中的任何内容。我可以单击frm1并获取它以获取新数据,但复制按钮不再起作用。有什么建议?非常感谢。
答案 0 :(得分: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