Excel VBA MailEnvelopeselect性地不工作

我遇到了Excel VBA的“MailEnvelope”问题

我正在处理的文件存储在networking文件夹中。 如果我使用我的笔记本电脑来运行它,我会得到“select范围类失败的错误”的错误方法,或者一旦遇到networking连接问题,一旦遇到代码的“With”部分:

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步骤(因为我无法开始深究)
  • 如果从辅助计算机运行该文件,此代码仍然可以正常工作。
  • “networking连接”错误实际上是没有意义的,因为“EnvelopeVisible”工作正常,并且With语句的第一行只是试图将文本放在已经看得见的介绍字段中。

如果MailEnvelope方法不是特别健壮的,只是失去了为什么当另一台计算机没有运行Windows 7(Office 2010)时突然出现问题,以及为什么它能正常工作,但如果运行正常则不行。

任何帮助将不胜感激!

根据我在评论部分的后续问题,我发现Excel引起的错误确实是误导性的。 我现在相当有信心,我所遇到的问题是有限的资源之一。 我的假设是MailEnvelopefunction在调用Outlook时必须占用更多的资源。 经过大量的反复试验,以下步骤完全解决了这个问题:

  • 将代码的“邮件”部分移动到一个单独的模块(我只是通过“调用”命令访问)
  • 将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")) 

我通过多次运行这个解决scheme来“压力testing”这个解决scheme,并且在其他代码繁重的大文件大小的工作簿中尝试了这个方法,到目前为止它已经完美运行了。