VBA自动运行时的格式问题

VBA自动运行时的格式问题,vba,outlook,Vba,Outlook,我有一个vba代码,它会自动运行,并在处理完数据后发送到outlook邮件正文中的输出表 我面临的问题是,在outlook中查看此电子邮件的用户能够以正确的格式查看该表,但如果在他们的gmail帐户上查看相同的邮件,他们将无法看到格式,并且看起来像纯文本 但如果手动运行宏,则不会发生此问题。只有宏自动运行时才会发生这种情况 Dim OutApp As Object Dim OutMail As Object Dim mailid As String Dim Excelsheet As Strin

我有一个vba代码,它会自动运行,并在处理完数据后发送到outlook邮件正文中的输出表

我面临的问题是,在outlook中查看此电子邮件的用户能够以正确的格式查看该表,但如果在他们的gmail帐户上查看相同的邮件,他们将无法看到格式,并且看起来像纯文本

但如果手动运行宏,则不会发生此问题。只有宏自动运行时才会发生这种情况

Dim OutApp As Object
Dim OutMail As Object
Dim mailid As String
Dim Excelsheet As String
Dim rng As Range
Dim StrBody As String
Dim excelfile As String

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
Set rng = Sheets("Report").Range("B4:W55").SpecialCells(xlCellTypeVisible)

On Error Resume Next
With OutMail
    .To = xxxx
    .CC = xxxx
    .Subject = "xxxx"
    .HTMLBody = StrBody & RangetoHTML(rng)
    .Send
End With
On Error GoTo 0

With Application
    .EnableEvents = True
    .ScreenUpdating = True
End With

Set OutMail = Nothing
Set OutApp = Nothing

End Sub
'-----------------------------------
Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2010
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
Dim StrBody As String

StrBody = "Dear Team" & "<br>" & "" & "<br>" & _
              "Please find Group MTD Report" & "<br><br><br>"
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

'Copy the range and create a new workbook to past the data in
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
    .Cells(1).PasteSpecial Paste:=8
    .Cells(1).PasteSpecial xlPasteValues, , False, False
    .Cells(1).PasteSpecial xlPasteFormats, , False, False
    .Cells(1).Select
    Application.CutCopyMode = False
    On Error Resume Next
    .DrawingObjects.Visible = True
    .DrawingObjects.Delete
    On Error GoTo 0
End With

'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
     SourceType:=xlSourceRange, _
     Filename:=TempFile, _
     Sheet:=TempWB.Sheets(1).Name, _
     Source:=TempWB.Sheets(1).UsedRange.Address, _
     HtmlType:=xlHtmlStatic)
     .Publish (True)
End With

'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
              "align=left x:publishsource=")

'Close TempWB
TempWB.Close savechanges:=False

'Delete the htm file we used in this function
Kill TempFile

Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing

End Function

我有办法解决我的问题

这很简单,在前面提到的VBA代码中,我先做了.Display,然后.Send。通过运行这两个代码,我的问题解决了


谢谢各位。

您是否尝试过在删除下一个错误恢复的情况下运行此程序?这句话总是一个灾难的秘诀,因为它可能隐藏错误,否则你会被提醒。感谢快速恢复。我试图删除后说的代码,没有得到任何错误。outlook中的邮件正文仍然是完美的,但当检查gmail中的同一邮件时,发现格式有问题。我得到了一个代码。BodyFormat=olFormatHTML,但使用此代码也没有得到解决方案。有人请帮忙吗