Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA邮件信封选择性地不工作_Vba_Excel - Fatal编程技术网

Excel VBA邮件信封选择性地不工作

Excel VBA邮件信封选择性地不工作,vba,excel,Vba,Excel,我遇到了Excel VBA的“邮件信封”问题 我正在处理的文件存储在网络文件夹中。如果我使用笔记本电脑运行它,我会收到“Select method of Range class failed”错误,或者在代码的“With”部分出现一个表示网络连接出现问题的错误: Sheets("Mail").Activate Range("B10").PasteSpecial Paste:=xlPasteValues Range("A3:C89").Select Application.CutCopyMode

我遇到了Excel VBA的“邮件信封”问题

我正在处理的文件存储在网络文件夹中。如果我使用笔记本电脑运行它,我会收到“Select method of Range class failed”错误,或者在代码的“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单步执行此代码,它仍然可以完美地工作(出于我的原因) (摸不透)
  • 如果从辅助计算机运行该文件,此代码仍然可以完美运行
  • “networkconnectivity”错误实际上毫无意义,因为“envelevisible”工作正常,而With语句的第一行只是试图将文本放在已经可见的介绍字段中
如果MailEnvelope方法不是特别健壮,那么可以选择其他解决方案,只是不知道为什么它在另一台计算机不运行时突然出现问题(都运行Windows 7,Office 2010),以及如果我单步执行它,为什么它能工作,但如果它正常运行,就不知道了


任何帮助都将不胜感激

根据我在评论部分提出的后续问题,我发现Excel向我抛出的错误确实具有误导性。我现在相当有信心,我遇到的问题是资源有限;我的假设是,在调用Outlook时,MailEnvelope功能必须占用更多的资源。经过大量的尝试和错误,以下步骤完全解决了我的问题:

  • 将代码的“邮寄”部分移动到一个单独的模块(我只是通过“Call”命令访问该模块)
  • 将屏幕更新设置为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"))

我已经通过多次运行该解决方案对其进行了“压力测试”,并在其他代码量大、文件大小大的工作簿中进行了尝试,到目前为止,该解决方案一直运行良好。

尝试添加
ActiveWorkbook。在
with
块之前保存
。看来这解决了其他人报告的几个问题,也许对你也有用。@PortlandRunner今天早上试一试,不幸的是没有运气。谢谢你的建议。有没有可能Excel向我抛出的“范围类的选择方法失败”错误是一个令人费解的问题,而实际问题与有限的资源有关?我问的原因是:1)我提到的第二台计算机可以毫无问题地处理代码,它有更快的处理器和更多的内存。2.)有许多模块在它运行到这个简单的代码位之前运行,如果我关闭一些其他模块,它似乎会间歇性地工作(没有特定的模块需要关闭,通常只需关闭较少的模块)。