【发布时间】:2021-06-05 07:19:36
【问题描述】:
我有一个 Excel 用户窗体,单击按钮会生成 Outlook 电子邮件,用户手动单击邮件上的发送选项。
系统会将电子邮件内容注册到 Excel 数据库中(仅当用户通过 Withevents 类单击 Outlook 中的发送选项时)。
如果数据库不可用,则会有一条错误消息提示用户。提示未向用户显示(被 Outlook 电子邮件覆盖),因为 Excel 代码正在处理,电子邮件发送过程将等待它完成。
有什么方法可以在 Outlook 顶部显示消息框或运行代码以保存到数据库但仅在单击“发送”选项之后?
用户表单中用于在 Outlook 中填写和显示电子邮件的代码。
Public itmevt As New CMailItemEvents
Public Outapp As Outlook.Application
Public Outmail As Outlook.MailItem
public subject as string
public body as string
Private Sub SendMail_Click()
Set Outapp = New Outlook.Application
Set Outmail = Outlook.Application.CreateItem(0)
Set itmevt.itm = Outmail
body=userform.text1.text
subject=userform.text2.text
itmevt.itm.Subject = "Some Subject"
With itmevt.itm
.HTMLBody = Body
.Subject = subject
.Display
End With
这是名为 (CMailItemEvents) 的类检测发送选项点击的代码
Option Explicit
Public WithEvents itm As Outlook.MailItem
Private Sub itm_Send(Cancel As Boolean)
EmailsForm.savedetails
End Sub
单击发送选项后,将运行要保存的代码
sub savedetails()
--->Open Excel DB
If DB.ReadOnly Then
Msgbox ("Error Message Here") ----> here is the problem, the message shows on excel
--- but the outlook mail is on the front of the screen
exit sub
else
--->Save details to DB
End Sub
我试图使代码示例尽可能简短。
【问题讨论】:
-
尝试
AppActivate Application.Caption来推动 Excel。 -
我试过了,但没用 :-(
-
它什么也没做?
-
它什么也没做,
-
尝试另一种方法,例如从这里 - stackoverflow.com/questions/34481674/…