我在 Outlook (x64 365 v 2411)、2x Exchange 和 4x MAPI 中配置了 6 个邮箱。如果单击 Outlook 功能区中的“新电子邮件”,则会显示一个表单,用户可以在其中选择荷兰语或英语消息。默认情况下,发件人基于 Outlook 中当前选择的邮箱。
当前在此 Outlook 会话中:
Option Explicit
Private WithEvents objInsp As Outlook.Inspectors
Public objMailItem As Outlook.MailItem
Private Sub objInsp_NewInspector(ByVal Inspector As Inspector)
If TypeName(Inspector.CurrentItem) = "MailItem" Then
Set objMailItem = Inspector.CurrentItem
Load frmNewEmail
With frmNewEmail
.StartUpPosition = 2
.Show False
End With
End If
End Sub
到目前为止没有问题,单击“新电子邮件”时会显示该表单。然而,点击btnEnglish后:
Option Explicit
Private Sub btnEnglish_Click()
Me.hide
Call MyNewMessage(2)
Unload Me
End Sub
预期的行为是,当在模块 > MyFunctions 中启动下一个过程时,objMailItem 仍保留该值:
Option Explicit
Public objMailItem As Outlook.MailItem
Public Sub MyNewMessage(lngLangID As Long)
Dim objMsg As Object
Dim strSigID As String
AddTable objMailItem
strSigID = GetSignatureID(objMailItem, lngLangID)
VerifySignature objMailItem, strSigID
With objMailItem
.Subject = "[Case No. 000000] "
End With
frmNewEmail.hide
Unload frmNewEmail
Set objMailItem = Nothing
End Sub
在这里我注意到 objMailItem 不再有值了。我尝试使用 objMailItem 作为表单标记并从那里传递它,但 objMailItem 也没有值。尝试几个小时的替代方案并没有帮助。
如何维护 objMailItem 的值并将其传递给其他窗体和模块中的程序?
艺术。
您在两个不同的模块中独立声明
objMailItem
。这是两个自变量。