Excel VBA邮件信封选择性地不工作
我遇到了Excel VBA的“邮件信封”问题 我正在处理的文件存储在网络文件夹中。如果我使用笔记本电脑运行它,我会收到“Select method of Range class failed”错误,或者在代码的“With”部分出现一个表示网络连接出现问题的错误: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
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语句的第一行只是试图将文本放在已经可见的介绍字段中
任何帮助都将不胜感激 根据我在评论部分提出的后续问题,我发现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.)有许多模块在它运行到这个简单的代码位之前运行,如果我关闭一些其他模块,它似乎会间歇性地工作(没有特定的模块需要关闭,通常只需关闭较少的模块)。