Страницы: 1
RSS
Как программно отправить лист Excel в теле письма Outlook
 
Собственно нужно содержимое некоего листа книги Excel отправить в тело письма Outlook?    
 
Я пытался сделать так, не выходит.  
 
Dim SM As Outlook.MailItem  
Dim sp  
sp = "spg!" + ThisWorkbook.Worksheets("spg").UsedRange.Address  
iMassiv = ThisWorkbook.Worksheets("spg").Range(sp).Value  
SM.Body = iMassiv
 
Пробовал через макрорекордер отследить процесс Файл - Отпрвить - Сообщение - Включить текущий лист в текст сообщения. Но макрорекордер видимо не пишет такие процессы :(
 
Антон, на предыдущей странице есть тема    
Нужен макрос на кнопку - отправка файла на эл.почту!  
"Нужен макрос на кнопку - отправка файла на эл.почту!" Та и ответы есть. Неужели за вас искать? Самим трудно?
 
{quote}{login=}{date=30.08.2008 02:17}{thema=}{post}Антон, на предыдущей странице есть тема    
Нужен макрос на кнопку - отправка файла на эл.почту!  
"Нужен макрос на кнопку - отправка файла на эл.почту!" Та и ответы есть. Неужели за вас искать? Самим трудно?{/post}{/quote}  
 
Уважаемый аноним!  
 
Боюсь вы не вникли в суть моего вопроса.    
В теме на которую вы ссылаетесь рассматривается вопрос отправки ВСЕЙ КНИГИ ВО ВЛОЖЕНИИ, а мне надо отправить СОДЕРЖАНИЕ (текст) ОДНОГО ЛИСТА В ТЕЛЕ ПИСЬМА.  
 
Введите любой текст на лист и попробуйте выполнить (Файл - Отправить - Сообщение - Включить текущий лист в текст сообщения) и посмотрите какое письмо при этом будет создано.  
Мне необходимо выполнить это программно.  
 
А поиском я пользоваться умею, решения подобной задачи пока не нашел.  
 
Тема актуальна.
 
ну раз коллега пользоваться поиском умеет, то я не буду давать вот эту ссылку  
 
http://yandex.ru/yandsearch?PHPSESSID1=&text=%EE%F2%EF%F0%E0%E2%EA%E0+%EF%E8%F1%FC%EC%E0+%EF%EE+%EF%­EE%F7%F2%E5&serverurl=http%3A%2F%2Fwww.planetaexcel.ru%2Fforum.php&server_name=PlanetaExcel  
 
а дам вот эту ссылку, где есть текст макроса, который позволит вам, коллега, отправить лист по почте.  
 
http://www.planetaexcel.ru/forum.php?thread_id=3574  
 
а чтобы уж совсем конкретно ответить на вопрос, приложу еще и сам код.  
отмечу, что данный код сохраняет заранее заданный диапазон в отдельной книге, включает ее в качестве вложения в письмо, в котором уже заполнены поля "тема", "кому" и ждет команды об отправке.  
 
вот код:  
 
Sub "название макроса"()  
'Working in 2000-2007  
Dim Source As Range  
Dim Dest As Workbook  
Dim wb As Workbook  
Dim TempFilePath As String  
Dim TempFileName As String  
Dim FileExtStr As String  
Dim FileFormatNum As Long  
Dim OutApp As Object  
Dim OutMail As Object  
 
Set Source = Nothing  
On Error Resume Next  
'копируемый диапазон  
Set Source = Range("E28:T65")  
 
On Error GoTo 0  
 
 
 
With Application  
.ScreenUpdating = False  
.EnableEvents = False  
End With  
 
Set wb = ActiveWorkbook  
Set Dest = Workbooks.Add(xlWBATWorksheet)  
 
Source.Copy  
With Dest.Sheets(1)  
.Cells(1).PasteSpecial Paste:=8  
.Cells(1).PasteSpecial Paste:=xlPasteValues  
.Cells(1).PasteSpecial Paste:=xlPasteFormats  
.Cells(1).Select  
Application.CutCopyMode = False  
End With  
'диапазон в новой книге где выставляются границы печати  
Range("A1:P38").Select  
 
Range("P38").Activate  
ActiveSheet.PageSetup.PrintArea = "$A$1:$P$38"  
With ActiveSheet.PageSetup  
.PrintTitleRows = ""  
.PrintTitleColumns = ""  
End With  
ActiveSheet.PageSetup.PrintArea = "$A$1:$P$38"  
With ActiveSheet.PageSetup  
.LeftHeader = ""  
.CenterHeader = ""  
.RightHeader = ""  
.LeftFooter = ""  
.CenterFooter = ""  
.RightFooter = ""  
.LeftMargin = Application.InchesToPoints(0.787401575)  
.RightMargin = Application.InchesToPoints(0.787401575)  
.TopMargin = Application.InchesToPoints(0.984251969)  
.BottomMargin = Application.InchesToPoints(0.984251969)  
.HeaderMargin = Application.InchesToPoints(0.5)  
.FooterMargin = Application.InchesToPoints(0.5)  
.PrintHeadings = False  
.PrintGridlines = False  
.PrintComments = xlPrintNoComments  
.PrintQuality = 600  
.CenterHorizontally = True  
.CenterVertically = True  
.Orientation = xlLandscape  
.Draft = False  
.PaperSize = xlPaperA4  
.FirstPageNumber = xlAutomatic  
.Order = xlDownThenOver  
.BlackAndWhite = False  
.Zoom = False  
'разместить на одной странице по горизонтали и вертикали    
.FitToPagesWide = 1  
.FitToPagesTall = 1  
 
.PrintErrors = xlPrintErrorsDisplayed  
End With  
TempFilePath = Environ$("temp") & "\"  
TempFileName = "имя файла " & " " & Range("H6") & ", auoia " & Range("I6")  
 
If Val(Application.Version) < 12 Then  
'You use Excel 2000-2003  
FileExtStr = ".xls": FileFormatNum = -4143  
Else  
'You use Excel 2007  
FileExtStr = ".xls": FileFormatNum = 56  
End If  
 
Set OutApp = CreateObject("Outlook.Application")  
OutApp.Session.Logon  
Set OutMail = OutApp.CreateItem(0)  
 
With Dest  
.SaveAs TempFileName & FileExtStr, FileFormat:=FileFormatNum  
'TempFilePath &  
On Error Resume Next  
With OutMail  
.To = "адрес кому"  
.cc = ""  
.BCC = ""  
.Subject = TempFileName  
.Body = "текст в теле письма"  
.Attachments.Add Dest.FullName  
'You can add other files also like this  
'.Attachments.Add ("C:\test.txt")  
.Display 'or use .Display  
End With  
On Error GoTo 0  
.Close SaveChanges:=False  
End With  
 
'Kill TempFilePath & TempFileName & FileExtStr  
 
Set OutMail = Nothing  
Set OutApp = Nothing  
 
With Application  
.ScreenUpdating = True  
.EnableEvents = True  
End With  
End Sub
 
{quote}{login=mazayZR}{date=01.09.2008 12:11}{thema=}{post}ну раз коллега пользоваться поиском умеет, то я не буду давать вот эту ссылку  
 
http://yandex.ru/yandsearch?PHPSESSID1=&text=%EE%F2%EF%F0%E0%E2%EA%E0+%EF%E8%F1%FC%EC%E0+%EF%EE+%EF%­EE%F7%F2%E5&serverurl=http%3A%2F%2Fwww.planetaexcel.ru%2Fforum.php&server_name=PlanetaExcel  
 
а дам вот эту ссылку, где есть текст макроса, который позволит вам, коллега, отправить лист по почте.  
 
http://www.planetaexcel.ru/forum.php?thread_id=3574  
 
{/post}{/quote}  
 
Уважаемый mazayZR!  
 
Спасибо за исчерпывающий ответ.  
Однако указанный вами пост мне удалось обнаружить до того как вы мне дали на него ссылку. И приведенный там код отправляет лист В ВИДЕ ВЛОЖЕНИЯ, а мне необходимо отправить содержание листа (ТОЛЬКО ТЕКСТ) В ТЕЛЕ ПИСЬМА (.body).  
 
Повторюсь. Для понимания того что мне нужно попробуйте ввести любой текст на лист и выполните (Файл - Отправить - Сообщение - Включить текущий лист в текст сообщения) и посмотрите какое письмо при этом будет создано (ПИСЬМО БЕЗ ВЛОЖЕНИЯ, ТОЛЬКО ТЕКСТ).  
Мне необходимо выполнить это программно.  
 
Тема актуальна.
 
тогда можно я вас пошлю на один англоязычный сайт?  
там много вкусного :-)  
http://www.rondebruin.nl/sendmail.htm
 
{quote}{login=mazayZR}{date=01.09.2008 01:13}{thema=}{post}тогда можно я вас пошлю на один англоязычный сайт?  
там много вкусного :-)  
http://www.rondebruin.nl/sendmail.htm{/post}{/quote}  
 
Вот спасибо! :)  
Я там действительно много вкусного нашел и то что мне надо тоже )))
Страницы: 1
Читают тему
Наверх