【发布时间】:2018-11-20 13:14:06
【问题描述】:
我花了几个小时在论坛上寻求帮助。但是我的 VBA 水平还没有达到我能够实现和测试代码更改的水平。
简而言之,我有一个 excel 文件,我想通过 Outlook 电子邮件发送选择的范围。 这里有很多教程,效果很好。
但我的麻烦在于格式。 无论我如何尝试 Outlook 电子邮件中的行高,都会出现混乱,图表会与表格重叠等。不过,行宽和对象位置都可以。
那么有什么诀窍吗,如何保持格式和excel文件中的一模一样呢?
这是通过电子邮件发送范围的代码,它正在工作:
Private Sub Workbook_Open()
ActiveWorkbook.RefreshAll
'Working in Excel 2002-2016
Dim AWorksheet As Worksheet
Dim Sendrng As Range
Dim rng As Range
Sheets("Data").Select
On Error GoTo StopMacro
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Fill in the Worksheet/range you want to mail
'Note: if you use one cell it will send the whole worksheet
Set Sendrng = Worksheets("Data").Range("A1:S600")
'Remember the activesheet
Set AWorksheet = ActiveSheet
With Sendrng
'Select the worksheet with the range you want to send
.Parent.Select
'Remember the ActiveCell on that worksheet
Set rng = ActiveCell
'Select the range you want to mail
.Select
' Create the mail and send it
ActiveWorkbook.EnvelopeVisible = True
With .Parent.MailEnvelope
' Set the optional introduction field thats adds
' some header text to the email body.
'.Introduction = "Hello all."
With .Item
.To = "xxx@zzz.eu"
.CC = "xxx@zzz.eu"
.BCC = ""
.Subject = "xxx" & Format(Worksheets("Support").Range("A1").Value, "dd.mm.yyyy")
.Send
End With
End With
'select the original ActiveCell
rng.Select
End With
'Activate the sheet that was active before you run the macro
AWorksheet.Select
StopMacro:
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
ActiveWorkbook.EnvelopeVisible = False
ActiveWorkbook.Save
Application.Quit
End Sub
【问题讨论】: