在VBA中使用CDO.sys dll发送消息会冻结Excel



我在使用CDO.sys从启用VBA的Excel应用程序发送电子邮件时遇到了一个奇怪的问题。我使用了以下代码,位于https://www.rondebruin.nl/win/s1/cdo.htm:

Sub SendMailCDO(FSubject As String, FBody As String, FFrom As String, FTo As String, FCc As String)
Dim iMsg As Object
Dim iConf As Object
Dim Flds As Variant
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1    ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "myServerIPAddress"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With
With iMsg
Set .Configuration = iConf
.To = "mydestination"
.CC = ""
.BCC = ""
.From = FFrom
.Subject = FSubject
.TextBody = ""
.HTMLBody = FBody
.Send
End With
MsgBox ("Email sent to " & FTo)
Set iMsg = Nothing
Set iConf = Nothing
Set Flds = Nothing
End Sub

现在,代码运行良好,电子邮件也已发送。但是,在发送第一封电子邮件后,Excel会立即对许多不同的命令失去响应。例如,更改单元格中的字体大小或应用条件格式等常规操作不再处于活动状态。此外,Excel执行所有内容的速度似乎都很慢。解决此问题的唯一方法是关闭Excel并重新打开它。有什么解决问题的建议吗?提前感谢,Emilio

绝对出乎意料,但删除Msgbox调用"电子邮件发送到"解决了问题!

这也发生在我身上。如果你有同样的问题,我不得不说,删除Msgbox调用将不一定能解决它。然而,之前的回答让我意识到,我的代码中的任何东西都可能导致这个问题。

所以。。。我试着评论每一行,在我的情况下,删除了对应用程序的调用。StatusBar就像一个符咒。无法显示良好的状态,但至少Excel在发送电子邮件后不再冻结。

希望它能有所帮助;(

相关内容

最新更新