Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2012, 17:04   #1
mrMad-Cat
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 33
Вопрос VBA вставка в Outlook диапазона из Excel

Добрый день, уважаемые коллеги.

Необходимо, чтобы в тело письма вставлялся массив из Excel.

Но все немного сложнее чем обычно:
1) Массив каждый раз может быть разным по размеру (то есть нельзя ограничить ячейками). Необходимо копировать просто весь кусок с данными. Как это указать в .Body= ?
2) Макрос запускается из MS Outlook 2010. Необходимо предварительно открыть заранее сохраненный файл xlsx, вставить в письмо нужный диапазон и закрыть файл xlsx.
В какой момент макроса создания письма это правильнее сделать и какими командами?

Макрос создания письма упрощенно выглядит сейчас так:
Код:
            Set objOutlookMsg = Application.CreateItem(olMailItem)
            With objOutlookMsg
            .SentOnBehalfOfName = "Отправитель"
            .To = "Адресаты"
            .Subject = "Тема"
            .Body = ""
            Set objOutlookAttach = .Attachments.Add(file_1)
            For Each objOutlookRecip In .Recipients
            objOutlookRecip.Resolve
            Next
            .Display
            End With
mrMad-Cat вне форума Ответить с цитированием
Старый 18.06.2012, 17:32   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Например так
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 18.06.2012, 17:51   #3
mrMad-Cat
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 33
По умолчанию

Возникла идея с игрой с буфером обмена:
Код:
Workbooks.Open Filename:="C:\Users\User\Desctop\file.xlsx"
    Range("A1").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy

    Windows("file.xlsx").Close
Выглядит довольно просто. Осталось передать значение буферобмена в тело письма и смотреть как оно вставляет. После чего можно закрыть файл.

doober, спасибо, как вариант приму к сведению. Немного закручено, и не хочу привязываться к конкретным столбцам так как они могут меняться.
mrMad-Cat вне форума Ответить с цитированием
Старый 22.10.2015, 12:30   #4
Dus_B
 
Регистрация: 22.10.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от mrMad-Cat Посмотреть сообщение
Возникла идея с игрой с буфером обмена:
Код:
Workbooks.Open Filename:="C:\Users\User\Desctop\file.xlsx"
    Range("A1").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy

    Windows("file.xlsx").Close
Выглядит довольно просто. Осталось передать значение буферобмена в тело письма и смотреть как оно вставляет. После чего можно закрыть файл.
Здравствуйте. Я понимаю, что тема старая, но я столкнулся с той же проблемой. Нужно вставить в тело письма табличку из Excel. Все решения которые нашел в интернете не работают, т.к. макрос запускается из-под Outlook и не работает publish в HTML. Может библиотеку какую подключить нужно?

Вариант с буфером обмена мне бы тоже подошел, но как макросом вставить в тело я не понял. Записи макросов в Outlook нет, а запись из Excel не видит процесс вставки в Outlook...

Уперся в стенку, уже сутки не могу понять, как решить. А решить нужно...

Прошу помощи! Уважаемый mrMad-Cat, решили ли вы проблему?
Dus_B вне форума Ответить с цитированием
Старый 22.10.2015, 12:38   #5
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

Именно с Outlooka надо запускать макрос? Вариант ув. Doober не подходит?
WIX-FILTERS. A Filter for every application.
AleksandrH вне форума Ответить с цитированием
Старый 22.10.2015, 12:39   #6
Dus_B
 
Регистрация: 22.10.2015
Сообщений: 6
По умолчанию

Да, именно из Outlooka.

Макрос должен запускаться на автомате при получении письма.

Последний раз редактировалось Dus_B; 22.10.2015 в 14:10.
Dus_B вне форума Ответить с цитированием
Старый 22.10.2015, 14:09   #7
Dus_B
 
Регистрация: 22.10.2015
Сообщений: 6
По умолчанию

Как я понял есть вариант "перекодирования" таблички в HTML. Но из-под Outlook, к сожалению, этот метод не сработал (не исключаю, что можно было чего-нибудь подключить, чтобы заработало).

Как посредством VBA сделать вставку из буфера обмена в тело письма не нашел.

Для себя я проблему решил через MailEnvelope.
http://www.rondebruin.nl/win/s1/outlook/bmail3.htm
Отправляется сразу из Excel выделенный диапазон или весь лист.
Минус, на мой взгляд, только лишь в том, что отправляется только он - больше ничего не добавить (ни подписи, ни надписи). Лично мне и не нужно было...
Предполагаемый очевидный плюс - в теле письма можно отправить и диаграмму. В просторах видел много желающих.
Сам еще не пробовал, но судя по тому что MailEnvelope есть свойство объекта Chart - диаграммы отправлять должен.
Dus_B вне форума Ответить с цитированием
Старый 22.10.2015, 14:18   #8
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

только что делал:
запуск команды Range("A1:B4").Copy в екселю;
переключился в блокнот, скопировал вручную что либо
переключился в ексель и выполнил Range("d1").PasteSpecial
вставилось скопированое с блокнота
значи можно вставить с буфера.

Хотя Вам надо с xls -> outlook, тогда не знаю.
WIX-FILTERS. A Filter for every application.

Последний раз редактировалось AleksandrH; 22.10.2015 в 14:33.
AleksandrH вне форума Ответить с цитированием
Старый 23.10.2015, 11:42   #9
mrMad-Cat
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 33
По умолчанию

К сожалению уже не помню дял каких целей я это хотел сделать и соответственно чем всё кончилось. Помоему у меня сменилась первоначальная задача и я просто вставлял файлы.
Так что врятли Вам помогу.
mrMad-Cat вне форума Ответить с цитированием
Старый 23.10.2015, 11:47   #10
Dus_B
 
Регистрация: 22.10.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от mrMad-Cat Посмотреть сообщение
К сожалению уже не помню дял каких целей я это хотел сделать и соответственно чем всё кончилось. Помоему у меня сменилась первоначальная задача и я просто вставлял файлы.
Так что врятли Вам помогу.
Спасибо за ответ.
Моя тема закрыта. Выше описал как решил...
Dus_B вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти предупреждение Outlook при отправке диапазона по почте? Sergey112233 Microsoft Office Excel 11 07.11.2011 19:33
Вставка диапазона с листа Excell в текст письма как рисунок sasha_prof Microsoft Office Excel 11 15.02.2010 22:13
VBA= сравнить 2 диапазона. Jainy_90 Microsoft Office Excel 2 16.05.2009 22:07
VBA & Outlook Sparxy Microsoft Office Access 1 09.02.2009 17:37