Страницы: 1
RSS
vba Вставка диапазона ячеек из Excel в тело письма
 
Уважаемые знатоки, эта тема много где затрагивалась, но четкого решения на просторах интернета я пока не встретил.
Есть диапазон ячеек на листе Excel, макросом создается письмо в Outlook -- как вставить этот диапазон в тело письма?

Руками это простое Ctrl+C + Ctrl+V, но как это повторить программой? Варианты вставки картинки и HTML-кода опробованы, но не подходят.
 
Цитата
Karlsonchik пишет: эта тема много где затрагивалась, но
Но не в "Курилке" же   :)
 
В курилке обсуждаются всегда самые важные вопросы :-)
Но вообще подходящей ветки не нашел -- это ведь не совсем Excel, а скорее VBA. А веток про бейсик в меню не нашел.
 
Karlsonchik, почитайте ветку по вопросам экселя. Там не одна подобная тема есть. И аутлук, и лотус только разрулили вчера/сегодня форумчане.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, просмотрел похожие ссылки в поиске по форуму, но, убейте меня, не нашёл ответа на свой вопрос.
Как в боди добавить выделенный диапазон?
Код
.To = ToMail 
 .Subject = Subject 
 .Display 
.Body =  Body
Изменено: Karlsonchik - 03.07.2014 14:57:33
 
Код
                  .HTMLBody 
Код
For i = 20 To 300
                If Range("N" & i).Value > vbNullString Then 'MsgBox " Адрес отсутствует"
                        FIO = Range("A" & i)
                        Dolzhn = Range("B" & i)
                        Podraz = Range("C" & i)
                        Mob = Range("D" & i)
                        Summa = Range("G" & i)
                        Limit = Range("I" & i)
                        Wsego = Range("L" & i)
                   
                   Dim Header As String
               Header = "<table border=""2"">" & _
               "<tr style=""text-align: center;""><td>ФИО</td><td>Должность</td><td>Подразделение</td>" & _
               "<td> № Мобильного</td><td>Сумма  по счету</td><td>Лимит</td><td>Всего к возмещению</td></tr>"
                    '' Составление сообщения
                     Msg = "<h4>Уважаемый(ая) " & FIO & "</h4>" & vbCrLf & vbCrLf
                     Msg = Msg & Header & "<tr style=""text-align: center;"" ><td>" & FIO & "</td>"
                     Msg = Msg & "<td>" & Dolzhn & "</td>"
                     Msg = Msg & "<td>" & Podraz & "</td>"
                     Msg = Msg & "<td>" & Mob & "</td>"
                     Msg = Msg & "<td>" & Summa & "</td>"
                     Msg = Msg & "<td>" & Limit & "</td>"
                     Msg = Msg & "<td>" & Wsego & "</td></tr></table>"
                    Set MItem = OutlookApp.CreateItem(olMailItem)
                    With MItem
                        .Display
                        .BodyFormat = 2
                        .To = EmailAdress
                        .Subject = Subj
                        .HTMLBody = "<html><body><div>" & Msg & "</div></body></html>"
                        .Send
                    End With
        
                End If
                Next i
====================
нашел в инете, и причем быстро.
 
Код
Dim OutMail As Objects
Dim sStr As String
......
Str = sStr & .Cells(i, j).Value  &   "! " & .Cells(i+n, j+m).Value & Chr(10)...
OutMail.Body = sStr ' текст письма
Ячейки, не диапазон
 
Marchuk, такой вариант опробован, он имеет недостаток -- в диапазоне не только таблицы, но и графики.
К тому же, чтобы в html прописать нужное мне форматирование, потребуется несколько страниц кода.

Есть варианты именно скопировать и вставить то, что нужно, как руками?
Изменено: Karlsonchik - 03.07.2014 15:08:48
 
vikttur, спасибо за ответ! Суть понятна -- прогоняем по циклу, прилепляя в письмо ячейку за ячейкой. Форматирование останется? Как быть с графиками?
По синтаксису не понял:
1. Перед Cells зачем точки? Программа ругается.
2. "! " -- это зачем?
 
Только значения ячеек.
Точки - принадлежность ячейки к чему-то, прописанному выше - With Worksheets...
"! " - вдруг нужно?  :)
 
Доброе время суток
А не проще ли на листе сформировать всё тело письма с графиками, рисунками и таблицами, а затем воспользваться
ActiveSheet.MailEnvelope.Item
Item  - это MailItem для Outlook. Заполняем кому, заголовок и отправляем, используя Send
Успехов.  
 
Цитата
ActiveSheet.MailEnvelope.Item
Спасибо.
У меня именно всё так и сформировано -- потенциальное тело письма целиком в одном диапазоне листа Excel.
Я только не пойму, что эта строка делает и, соответственно, куда её пихать:
Код
Sheets("xxx").Activate
Range(Cells(1, 1), Cells(10, 10)).Copy

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
On Error GoTo cleanup
Set OutMail = OutApp.CreateItem(0) 
On Error Resume Next

With OutMail
.To = "pupkin@xxx.ru"
.Subject = "тест"
.Body = "тест"
.Display
End With
оформляйте код [МОДЕРАТОР]
 
Вы меня не совсем поняли. Пример, как использовать MailEnvelope для отправки листа или части
Изменено: anvg - 03.07.2014 17:16:11
 
Это гениально, спасибо!
Страницы: 1
Наверх