发送时到 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