【发布时间】:2019-09-06 18:44:00
【问题描述】:
我在 Excel 中有一个将表格复制到新电子邮件的代码:
Option Explicit
Public Sub TESTEMAIL()
Const olMailItem As Long = 0
Dim StrFile, signature As String
Dim OutApp As Outlook.Application
Dim Outmail As Outlook.MailItem
Set OutApp = CreateObject("Outlook.Application")
Set Outmail = OutApp.CreateItem(olMailItem)
Dim myRecipient As Object
Set OutApp = CreateObject("Outlook.Application")
Set Outmail = OutApp.CreateItem(olMailItem)
Set OutApp = Nothing
Outmail.Display
Dim wordDoc As Word.Document
Set wordDoc = Outmail.GetInspector.WordEditor
Range("A1:E10").Copy
Dim p1 As Picture
Set p1 = ActiveSheet.Pictures.Paste
p1.Cut
With wordDoc.Application.Selection
.Start = Len(Outmail.Body) ' error n° 91
.End = .Start
.PasteSpecial wdPasteBitmap ' Error n° 4605 or Error n°91
End With
End Sub
开机后每次使用代码都会报错:
错误代码 91“对象变量或未设置块变量”
大多数情况下,以前没有打开 Outlook,或者以前没有打开过新电子邮件。
有时我还会收到错误代码 4605,表示文档已锁定,无法修改。
2 个错误出现在最后,并在代码中进行了标记。 (错误可能发生在 2 个不同的行上)
有时一切正常,但只有在之前在 Outlook 中打开过新电子邮件时,(如果 Outlook 关闭则事件)。
任何线索为什么会这样以及如何解决问题?
【问题讨论】:
-
您已经有一个引用
wordDoc包含消息内容,因此您应该使用它而不是Outmail.Body。如果粘贴为图片有问题,可以尝试使用Range.CopyPicture方法复制Excel内容。 -
你想做什么?你已经设置了
Set OutApp = Nothing然后`Outmail.Display`你有多个OutApp -
@Tim Williams
worddoc的返回值与Outmail.Body不同,我更改为Range.Copypicture,但仍然无法正常工作,而且图片也不太清晰。跨度> -
@0m3r 我已经把
Set OutApp = Nothing拿出来了,这个问题没有区别。我正在尝试将范围作为图片粘贴到电子邮件中,但不知何故,当 Outlook 尚未打开电子邮件时它不起作用。 -
请参阅下面的答案,如果对您有用,请告诉我。