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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2012, 21:43   #1
mrMad-Cat
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 33
По умолчанию VBA Создания письма с атачами из MS Outlook

Добрый день.

Цель:
1. Кнопка запуска макроса в MS Outlook 2010
2. Вылазит окошко с местом для ввода текста и кнопкой "Создать письмо"
3. После нажатия кнопки создается письмо с присоедененными файлами которые подбираются исходя из введеного текста XXX в пункте 2.

Вот сам макрос создания письма (работает, но если можно что-то улучшить/исправить/сократить - буду очень рад):
Код:
Sub PORT()

    Set objOutlookMsg = Application.CreateItem(olMailItem)
    With objOutlookMsg

    .To = "mail1@mail.com;" & " mail2@mail.com;" & " mail3@mail.com;" & " mail4@mail.com;" & " mail10@mail.com;"
    .CC = "mail11@mail.com"
    .Subject = "Тема"
    .Body = ""
    
    Set objOutlookAttach = .Attachments.Add("C:\Users\...\Desktop\XXX файл1.xlsx")
    Set objOutlookAttach = .Attachments.Add("C:\Users\...\Desktop\XXX файл2.xlsx")
    
    For Each objOutlookRecip In .Recipients
    objOutlookRecip.Resolve
    Next
    
    .Display
    
    End With

End Sub
Вот форма:
form.gif

Проблемы:
1. Как задать фиксированого отправителя? .From не работает
2. Как сделать макрос чтобы объеденить все это? То есть при на жатии на кнопку макроса открыть форму, нажатием на кнопку передать текст ХХХ в код создания письма и использоват это ХХХ в имени файла.

Очень презнателен за любые ваши ответы.

ЗЫ: я так понял что отдельного форума под Outlook нету - по-этому запостил тут. Сорри если не туда.

Последний раз редактировалось mrMad-Cat; 20.04.2012 в 21:47.
mrMad-Cat вне форума Ответить с цитированием
Старый 23.04.2012, 20:04   #2
mrMad-Cat
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 33
По умолчанию

Что много буков?
Ну хорошо, с первым вопросом я разобрался:
Код:
    .SentOnBehalfOfName = "mail@mail.com.ua"
Как вызвать мою фомру я тоже понял:
Код:
Sub PORT()

    DataForm.Show
    
End Sub
Пойдем дальше.
Я нажимаю на форме на кнопке 2 раза и открывается "VbaProject.OTM DataForm (Code)". Я так понимаю я сюда должен переместить свой макрос?

Код:
Private Sub CommandButton1_Click()

    Set objOutlookMsg = Application.CreateItem(olMailItem)
    With objOutlookMsg
    
    .SentOnBehalfOfName = "mail@mail.com"
    .To = "mail1@mail.com;" & "mail1@mail.com;" 
    .CC = "mail3@mail.com;"
    .Subject = "Тема"
    .Body = ""
    
    Set objOutlookAttach = .Attachments.Add("адрес\XXX файл1.xlsx")
    Set objOutlookAttach = .Attachments.Add("адрес\XXX файл2.xlsx")
    
    For Each objOutlookRecip In .Recipients
    objOutlookRecip.Resolve
    Next
    
    .Display
    
    End With

End Sub
В результате при запуске макроса вылазит окно ошибки "Run-time error... Открыто диалоговое окно. Закройте его и повторите попытку".
Куда копать?
mrMad-Cat вне форума Ответить с цитированием
Старый 24.04.2012, 10:47   #3
mrMad-Cat
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 33
По умолчанию

Когда задаешь вопросы - переосмысливаешь проблему и сам находишь решение.
Суть была в том что нужно закрыть форму так как она носит модальный характер.
Делается это добавлением перед остальным кодом "Unload DataForm".

Переходим к последнему моменту: передать введенный текст в форме в адрес атачей. Я так понимаю что нужно объявить переменную куда и запихнуть это. Только как это сделать пока не знаю. Продолжаю знакомится с VBA...

Но если кто-то всетаки решит помочь то я буду очень не против

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

Все оказалось проще чем я думал
Код:
Set objOutlookAttach = .Attachments.Add("адрес\" & TextBox.Value & " файл1.xlsx")
Всем спасибо!
mrMad-Cat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование письма в Outlook asale HTML и CSS 3 18.10.2009 13:34
Автоматизация создания нового письма в MS Outlook. SANIOK_AV Общие вопросы Delphi 1 13.04.2009 10:17
Microsoft Office Outlook : Драфт письма asale Софт 6 01.02.2007 21:50
Microsoft Office Outlook : пропали письма! zetrix Софт 0 31.10.2006 15:59