发送时到 IMG 的范围为空
Range to IMG is empty when sent
我将此 用作 Outlook 电子邮件中的图像范围。
我不想显示屏幕,所以我将 .Display
更改为 .Send
。邮件发送为空:
Public Sub enviarmail()
Dim rng As Range
Dim olApp As Object
Dim Email As Object
Dim Sht As Excel.Worksheet
Dim wdDoc As Word.Document
Set Sht = ActiveWorkbook.Sheets("Cierre de ventas")
Set rng = Sht.Range("B23:N35")
rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set olApp = CreateObject("Outlook.Application")
Set Email = olApp.CreateItem(0)
Set wdDoc = Email.GetInspector.WordEditor
With Email
.BodyFormat = 2
.To = Range("D13").value
.CC = Range("D14").value
.Subject = Range("D15").value
wdDoc.Range.PasteAndFormat Type:=wdChartPicture
wdDoc.Range.InsertAfter vbLf & vbLf & "Firmado: " & Range("K13").value
With wdDoc
.InlineShapes(1).Height = 260
End With
.Send
End With
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Set Email = Nothing
Set olApp = Nothing
End Sub
更新:经过几次测试,@urdearboy 的潜在解决方法 #2 有效,也不需要使用缓冲区,我之前尝试过不使用缓冲区但没有成功。
同时使用 .Display
和 .Send
有效。
可能的解决方法 #1
我 运行 遇到了一个类似的问题 只有 在将对象添加到正文之外的文本或直接上传文件时才会发生。我能够解决的唯一方法是在添加文件和发送电子邮件之间添加一个时间缓冲区。
我知道这里的答案并不令人满意,但值得一试:
Application.Wait Now + #12:00:01 AM#
.Send
这是我发布的有问题的 。我为此付出了很多,但仍然没有解决方案,所以最终解决了时间延迟
可能的解决方法 #2
您也可以尝试先显示再发送邮件。同上,这似乎是实际问题的解决方法,但可能值得一试。如果您只是发送一封电子邮件,那么这可能是一个可以接受的途径。如果很多,那么它可能会减慢这个过程并变得不那么理想。
With Email
'Email Attributes
.Display
.Send
End With
我将此
我不想显示屏幕,所以我将 .Display
更改为 .Send
。邮件发送为空:
Public Sub enviarmail()
Dim rng As Range
Dim olApp As Object
Dim Email As Object
Dim Sht As Excel.Worksheet
Dim wdDoc As Word.Document
Set Sht = ActiveWorkbook.Sheets("Cierre de ventas")
Set rng = Sht.Range("B23:N35")
rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set olApp = CreateObject("Outlook.Application")
Set Email = olApp.CreateItem(0)
Set wdDoc = Email.GetInspector.WordEditor
With Email
.BodyFormat = 2
.To = Range("D13").value
.CC = Range("D14").value
.Subject = Range("D15").value
wdDoc.Range.PasteAndFormat Type:=wdChartPicture
wdDoc.Range.InsertAfter vbLf & vbLf & "Firmado: " & Range("K13").value
With wdDoc
.InlineShapes(1).Height = 260
End With
.Send
End With
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Set Email = Nothing
Set olApp = Nothing
End Sub
更新:经过几次测试,@urdearboy 的潜在解决方法 #2 有效,也不需要使用缓冲区,我之前尝试过不使用缓冲区但没有成功。
同时使用 .Display
和 .Send
有效。
可能的解决方法 #1
我 运行 遇到了一个类似的问题 只有 在将对象添加到正文之外的文本或直接上传文件时才会发生。我能够解决的唯一方法是在添加文件和发送电子邮件之间添加一个时间缓冲区。
我知道这里的答案并不令人满意,但值得一试:
Application.Wait Now + #12:00:01 AM#
.Send
这是我发布的有问题的
可能的解决方法 #2
您也可以尝试先显示再发送邮件。同上,这似乎是实际问题的解决方法,但可能值得一试。如果您只是发送一封电子邮件,那么这可能是一个可以接受的途径。如果很多,那么它可能会减慢这个过程并变得不那么理想。
With Email
'Email Attributes
.Display
.Send
End With