使用VBA将所有可见(格式化文本)从Excel复制到Outlook?

使用VBA将所有可见(格式化文本)从Excel复制到Outlook?

请通过outlookfind下面的代码发送电子邮件。 不过,我想用下面的代码复制下面的select。 我不希望创build一个表格作为HTML,而只是复制所有可见?

Sub EmailRep() Dim Mailbody As Range Application.DisplayAlerts = False Dim Outlook As Outlook.Application Set Outlook = CreateObject("Outlook.Application") Dim outmail As MailItem Set outmail = Outlook.CreateItem(0) Set Mailbody = ActiveWorkbook.Worksheets("Dashboard").Range("A1:F30") Mailbody.Copy With outmail .To = "abc@xyz.com" .Subject = "All Open" .Body = "This is Test Email" .Display .Send End With Set Outlook = Nothing Set outmail = Nothing Set Mailbody = Nothing End Sub 

如果我理解正确的改变你的行:

 Set Mailbody = ActiveWorkbook.Worksheets("Dashboard").Range("A1:F30") 

 Set Mailbody = ActiveWorkbook.Worksheets("Dashboard").Range("A1:F30").SpecialCells(xlCellTypeVisible) 

虽然在你的代码中,你不会把范围放在电子邮件的正文中。 起初以为你用手粘贴了范围,但后来我注意到你已经发送了代码,在发送邮件之前,你有机会粘贴。

无论哪种方式,上面只复制可见范围。

如果你有兴趣在一个快速的方式发送您的范围在一个电子邮件中,而不需要复制下面是非常简短和甜蜜:

 Sub EmailRep() With Application .DisplayAlerts = False .ScreenUpdating = False End With Range("A1:F30").SpecialCells(xlCellTypeVisible).Select ActiveWorkbook.EnvelopeVisible = True With ActiveSheet.MailEnvelope .Introduction = "This is Test Email" .Item.To = "abc@xyz.com" .Item.Subject = "All Open" .Item.Send End With ActiveWorkbook.EnvelopeVisible = False With Application .DisplayAlerts = True .ScreenUpdating = True End With End Sub