Я потратил несколько часов в поисках помощи на форуме.Но мой уровень 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