2015-11-25 2 views
1

Мне нужно скопировать содержимое с двух листов в тело почты Outlook.Вставить содержимое из нескольких листов Excel в тело Outlook

  • Лист 1 содержит только текст с некоторыми объединенными ячейками.
  • Лист2 содержит графики.

Мой подход не удалось:

  • Копирование содержимого из sheet1 и sheet2 в виде временного листа и затем скопировать все содержимое из листа темп на почту тела.

  • Этот подход беспорядок полностью выравнивается после , содержимое вставляется в тело почты Outlook, даже если оно хорошо выглядит на листе temp.

Ниже приведен фрагмент кода, который я использую.

Sub copy_graph() 
Dim outlookapp, outmail, worddoc As Object 

Set outlookapp = CreateObject("outlook.application") 
Set outmail = outlookapp.createitem(olmailitem) 

outmail.display 
Set worddoc = outmail.getinspector.wordeditor 

ThisWorkbook.Sheets.Add.Name = "temp_mail" 
ThisWorkbook.Worksheets("Tu_Mail").Range("a4:b18").Copy 
ThisWorkbook.Worksheets("temp_mail").Range("a1").Select 
ActiveSheet.Paste 

ThisWorkbook.Worksheets("trend").Range("a1:x93").Copy 
ThisWorkbook.Worksheets("temp_mail").Range("a19").Select 
ActiveSheet.Paste 

ThisWorkbook.Worksheets("temp_mail").Range("a1:x93").Copy 
worddoc.Range.PasteExcelTable linkedtoexcel:=False, wordformatting:=False, RTF:=False 
Application.DisplayAlerts = False 
ThisWorkbook.Worksheets("temp_mail").Delete 

End Sub 

Есть ли способ, чтобы вставить содержимое из двух листов по одному в теле письма вместо того, чтобы объединить их в один лист. вставьте как две разные таблицы, чтобы выравнивание столбцов было не повреждено.

Или

Есть ли другие лучше подходят для этого?

+1

проверить эту очень удобная функция [RangeToHTML] (http://www.rondebruin.nl/win/s1/outlook/bmail2.htm). Я использую его, когда хочу вставлять диапазоны Excel в тела электронной почты. –

+0

Спасибо, Скотт. Я попробовал это, «RangeToHTML» - это обычное funtion, которое я вижу в большинстве ответов в Интернете. Но в моем случае это терпит неудачу, оно не копирует диаграммы. – Vivek

+0

Вы можете скопировать график в виде рисунка, а затем вставить его в тело письма? –

ответ

1

Вот такой подход я начала работать в конце концов

подход:

копирование содержимого sheet1 во временный лист
Копирование sheet2 (графики) контента на временный лист как изображение.

  • Теперь, копирование графики как изображение уже было известно мне
  • я продолжал игнорировать этот метод раньше, так как я не был в состоянии экспортировать диаграммы на качество изображения без искаженных текста и линий графика.
  • В этом подходе я использовал функцию CopyPicture, и эта функция способна отображать содержимое графика как есть, но на изображении.

Ниже приведен окончательный код у меня есть

Sub copy_graph() 

Dim rgExp As Range 
Set outlookapp = CreateObject("outlook.application") 
Set OutMail = outlookapp.createitem(olmailitem) 
OutMail.display 
Set worddoc = OutMail.getinspector.wordeditor 

ThisWorkbook.Sheets.Add 
ActiveSheet.Name = "temp" 
ThisWorkbook.Worksheets("temp").Range("a:z").Delete 
ThisWorkbook.Worksheets("temp").Columns("a:a").ColumnWidth = 25.57 
ThisWorkbook.Worksheets("temp").Columns("b:b").ColumnWidth = 89.57 

'Copy contents from sheet1 
ThisWorkbook.Worksheets("Mail").Range("a5:b18").Copy 
ThisWorkbook.Worksheets("temp").Range("a1").Select 
ThisWorkbook.Worksheets("temp").Paste 

'Copy contents from sheet2 as picture 
Set rgExp = ThisWorkbook.Worksheets("graph").Range("a1:x93") 
rgExp.CopyPicture Appearance:=xlScreen, Format:=xlBitmap 
ThisWorkbook.Worksheets("temp").Range("a19").Select 
ThisWorkbook.Worksheets("temp").Paste 
ThisWorkbook.Worksheets("temp").Range("a1:t105").Copy 
worddoc.Range.PasteExcelTable linkedtoexcel:=False, wordformatting:=False, RTF:=False 

Application.DisplayAlerts = False 

ThisWorkbook.Worksheets("temp").Delete 

End Sub