Excel VBA MailEnvelope选择性地不起作用

时间:2015-12-28 23:15:14

标签: excel vba excel-vba

我遇到了Excel VBA的“MailEnvelope”

的问题

我正在处理的文件存储在网络文件夹中。如果我使用我的笔记本电脑运行它,我将得到“Range类失败的选择方法”错误,或者一旦出现代码的“With”部分就出现网络连接问题的错误:< / p>

Sheets("Mail").Activate
Range("B10").PasteSpecial Paste:=xlPasteValues
Range("A3:C89").Select
Application.CutCopyMode = False

ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
    .Introduction = "This is an automated message"
    .Item.To = "person@domain.com"
    .Item.Subject = "ActionList"
    .Item.Send
End With

由于以下原因,这非常令人沮丧:

  • 此代码完美地工作了2~3个月而没有问题
  • 如果我用F8单步执行此代码仍然可以正常工作(原因我 无法开始思考)
  • 如果我从辅助计算机运行该文件,此代码仍然可以正常运行。
  • “网络连接”错误实际上没有任何意义,因为“EnvelopeVisible”工作正常,而With语句的第一行只是试图将文本放入已经可见的引入字段中。

如果MailEnvelope方法不是特别健壮的话,可以打开备用解决方案,只是丢失了为什么当其他计算机没有(两者都运行Windows 7,Office 2010)时它突然出现问题,以及为什么它可以正常工作通过它,但不是如果它正常运行。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

根据我在评论部分的后续问题,我发现Excel错误的错误确实是误导性的。我现在相当确信我所遇到的问题是资源有限;我的假设是MailEnvelope功能在调用Outlook时必须更加耗费资源。经过大量的反复试验,以下步骤完全解决了我的问题:

  • 移动了&#34; Mailing&#34;部分代码到一个单独的模块(我只是通过&#34; Call&#34;命令访问)
  • 将ScreenUpdating设置为False
  • 在发送电子邮件
  • 后添加了10秒钟

最终代码(再次,现在在一个单独的模块中)如下:

ActiveWorkbook.EnvelopeVisible = True
Application.ScreenUpdating = False

With ActiveSheet.MailEnvelope
    .Introduction = "This is an automated message"
    .Item.To = "person@domain.com"
    .Item.Subject = "ActionList"
    .Item.Send
End With

Application.Wait (Now + TimeValue("0:00:10"))

我经过了压力测试&#34;这个解决方案通过多次运行,以及在其他代码繁重的大型文件大小的工作簿中进行尝试,到目前为止它一直运行良好。