Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Шаблон письма на VB для Outlook. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Шаблон письма на VB для Outlook. (Макросы/Sub)
Шаблон письма на VB для Outlook.
Noober89 Дата: Четверг, 22.12.2016, 14:23 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем доброго дня!
Нужна помощь в написании макроса для создания шаблона письма в Outlook. Что использовать для введения требуемой информации от пользователя (несколько полей ввода, обязательных для заполнения)?
В html это required или input. Или может как-то можно внедрить из html в VB этот "input"?
 
Ответить
СообщениеВсем доброго дня!
Нужна помощь в написании макроса для создания шаблона письма в Outlook. Что использовать для введения требуемой информации от пользователя (несколько полей ввода, обязательных для заполнения)?
В html это required или input. Или может как-то можно внедрить из html в VB этот "input"?

Автор - Noober89
Дата добавления - 22.12.2016 в 14:23
dim34rus Дата: Четверг, 22.12.2016, 18:28 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007 - 2013
В свое время на просторах тырнета нашел подобную функцию, которую немного адаптировал под себя.
Выглядит так
[vba]
Код
Private Function SendEmailUsingOutlook(ByVal Email$, ByVal MailText$, Optional ByVal Subject$ = "", _
                    Optional ByVal AttachFilename As Variant) As Boolean
     ' функция производит отправку письма с заданной темой и текстом на адрес Email
    ' с почтового ящика, настроенного в Outlook для отправки писем "по-умолчанию"
    ' Если задан параметр AttachFilename, к отправляемому письму прикрепляется файл (файлы)

     On Error Resume Next: Err.Clear
     Dim OA As Object: Set OA = CreateObject("Outlook.Application")
     If OA Is Nothing Then MsgBox "Не удалось запустить OUTLOOK для отправки почты", vbCritical: Exit Function

     With OA.CreateItem(0)   'создаем новое сообщение
        .To = Email$: .Subject = Subject$: .Body = MailText$
         If VarType(AttachFilename) = vbString Then .Attachments.Add AttachFilename
         If VarType(AttachFilename) = vbObject Then    ' AttachFilename as Collection
            For Each file In AttachFilename: .Attachments.Add file: Next
         End If
         For i = 1 To 100000: DoEvents: Next    ' без паузы не отправляются письма без вложений
        Err.Clear: .Send
         SendEmailUsingOutlook = Err = 0
     End With
     Set OutApp = Nothing
End Function
[/vba]

Во славу автора ее написавшего (сорри копирайтов в ней изначально не было)

А вот так я ее вызываю:
[vba]
Код
    ' Отправка электрической почтой
    
    SendMail = Лист3.Cells(61, 17).Value  'Здесь у меня адрес почты с листа берется
    'отправляем письмо с 1 вложением
    attach$ = iUser & MyDoc & "ЗАЯВКА\" & FName & ".xlsx"            'ThisWorkbook.FullName    ' прикрепляем текущий файл Excel
    res = SendEmailUsingOutlook(SendMail, "Hello Word!" & Chr(13) & Chr(13) & "This message created by Microsoft Excel" & Chr(13) & Chr(13)& Chr(13) & Chr(13) & "____________________" & Chr(13) & "Designed by OOO ""Рога и копыта""                  (с) MTO-vlg  2013-2015", "#ЗАКАЗ#", attach$)
     If res Then Debug.Print "Письмо 2 отправлено успешно" Else Debug.Print "Ошибка отправки"
[/vba]

Мне содержимое письма было - не важно, поэтому письмо стряпается в текстовом формате. мне нужна "Тема" и отправка вложенного файла
Если у вас Аутглюк-экспресс, то там эта функция не сработает

А все дополнительные поля можно проверить и запросить перед отправкой.

Может быть наведет Вас на мысль.


Извращение - это писать формулы в Word'овских таблицах.
ЯД 410014340958327


Сообщение отредактировал dim34rus - Четверг, 22.12.2016, 18:30
 
Ответить
СообщениеВ свое время на просторах тырнета нашел подобную функцию, которую немного адаптировал под себя.
Выглядит так
[vba]
Код
Private Function SendEmailUsingOutlook(ByVal Email$, ByVal MailText$, Optional ByVal Subject$ = "", _
                    Optional ByVal AttachFilename As Variant) As Boolean
     ' функция производит отправку письма с заданной темой и текстом на адрес Email
    ' с почтового ящика, настроенного в Outlook для отправки писем "по-умолчанию"
    ' Если задан параметр AttachFilename, к отправляемому письму прикрепляется файл (файлы)

     On Error Resume Next: Err.Clear
     Dim OA As Object: Set OA = CreateObject("Outlook.Application")
     If OA Is Nothing Then MsgBox "Не удалось запустить OUTLOOK для отправки почты", vbCritical: Exit Function

     With OA.CreateItem(0)   'создаем новое сообщение
        .To = Email$: .Subject = Subject$: .Body = MailText$
         If VarType(AttachFilename) = vbString Then .Attachments.Add AttachFilename
         If VarType(AttachFilename) = vbObject Then    ' AttachFilename as Collection
            For Each file In AttachFilename: .Attachments.Add file: Next
         End If
         For i = 1 To 100000: DoEvents: Next    ' без паузы не отправляются письма без вложений
        Err.Clear: .Send
         SendEmailUsingOutlook = Err = 0
     End With
     Set OutApp = Nothing
End Function
[/vba]

Во славу автора ее написавшего (сорри копирайтов в ней изначально не было)

А вот так я ее вызываю:
[vba]
Код
    ' Отправка электрической почтой
    
    SendMail = Лист3.Cells(61, 17).Value  'Здесь у меня адрес почты с листа берется
    'отправляем письмо с 1 вложением
    attach$ = iUser & MyDoc & "ЗАЯВКА\" & FName & ".xlsx"            'ThisWorkbook.FullName    ' прикрепляем текущий файл Excel
    res = SendEmailUsingOutlook(SendMail, "Hello Word!" & Chr(13) & Chr(13) & "This message created by Microsoft Excel" & Chr(13) & Chr(13)& Chr(13) & Chr(13) & "____________________" & Chr(13) & "Designed by OOO ""Рога и копыта""                  (с) MTO-vlg  2013-2015", "#ЗАКАЗ#", attach$)
     If res Then Debug.Print "Письмо 2 отправлено успешно" Else Debug.Print "Ошибка отправки"
[/vba]

Мне содержимое письма было - не важно, поэтому письмо стряпается в текстовом формате. мне нужна "Тема" и отправка вложенного файла
Если у вас Аутглюк-экспресс, то там эта функция не сработает

А все дополнительные поля можно проверить и запросить перед отправкой.

Может быть наведет Вас на мысль.

Автор - dim34rus
Дата добавления - 22.12.2016 в 18:28
Noober89 Дата: Четверг, 29.12.2016, 15:07 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо за ответ! А можно ли сделать через форму. Т.е. создал форму с TextBox-ами и Button-ом. Как при введении всех данных в поля формы и нажатии на кнопку организовать передачу сформированных данных в окно сообщения уже с заполненным адресатом. Макрос отправки сообщения имеется.
[vba]
Код

Sub Macros()
    Dim fileAttach As Outlook.Attachment
    
    Dim newMail As Outlook.MailItem
    Set newMail = Application.CreateItem(olMailItem)

    UserForm1.Show ' здесь сначала вызываем форму с полями и кнопкой для ввода обязательных данных
    
    ' а здесь как-то нужно через кнопку выгрузить эти данные полей с формы

    With newMail
        .Subject = "123123" + Format(Date, "dd.mm.yyyy (dddd)")
        .To = "mail@ru"
        .BodyFormat = olFormatHTML
        .htmlBody = htmlBody
        .Display
    End With
    Set newMail = Nothing
End Sub
[/vba]
Надеюсь, что я хоть немного доходчиво объяснил :)


Сообщение отредактировал Noober89 - Пятница, 30.12.2016, 08:24
 
Ответить
СообщениеСпасибо за ответ! А можно ли сделать через форму. Т.е. создал форму с TextBox-ами и Button-ом. Как при введении всех данных в поля формы и нажатии на кнопку организовать передачу сформированных данных в окно сообщения уже с заполненным адресатом. Макрос отправки сообщения имеется.
[vba]
Код

Sub Macros()
    Dim fileAttach As Outlook.Attachment
    
    Dim newMail As Outlook.MailItem
    Set newMail = Application.CreateItem(olMailItem)

    UserForm1.Show ' здесь сначала вызываем форму с полями и кнопкой для ввода обязательных данных
    
    ' а здесь как-то нужно через кнопку выгрузить эти данные полей с формы

    With newMail
        .Subject = "123123" + Format(Date, "dd.mm.yyyy (dddd)")
        .To = "mail@ru"
        .BodyFormat = olFormatHTML
        .htmlBody = htmlBody
        .Display
    End With
    Set newMail = Nothing
End Sub
[/vba]
Надеюсь, что я хоть немного доходчиво объяснил :)

Автор - Noober89
Дата добавления - 29.12.2016 в 15:07
dim34rus Дата: Четверг, 29.12.2016, 23:40 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007 - 2013
ИМХО немного не так.
1. Сначала вызываете форму.
2. Юзер заполняет ее
3. По событию нажатие кнопки "отправить", запускаете свой код по формированию письма и отправке.
К сообщению приложен файл: 7154575.xlsm (18.9 Kb)


Извращение - это писать формулы в Word'овских таблицах.
ЯД 410014340958327
 
Ответить
СообщениеИМХО немного не так.
1. Сначала вызываете форму.
2. Юзер заполняет ее
3. По событию нажатие кнопки "отправить", запускаете свой код по формированию письма и отправке.

Автор - dim34rus
Дата добавления - 29.12.2016 в 23:40
Noober89 Дата: Пятница, 30.12.2016, 09:05 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
я немного не это спрашивал)
Не знаю, как из TextBox данные в письмо перекинуть, например засунуть в table в письме оутлук, или просто обычным текстом


Сообщение отредактировал Noober89 - Пятница, 30.12.2016, 09:06
 
Ответить
Сообщениея немного не это спрашивал)
Не знаю, как из TextBox данные в письмо перекинуть, например засунуть в table в письме оутлук, или просто обычным текстом

Автор - Noober89
Дата добавления - 30.12.2016 в 09:05
bmv98rus Дата: Суббота, 31.12.2016, 22:11 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4111
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Noober89,

Тогда зачем Excel? Он то тут для каких целей, для интерфейса? Судя по всему вам нужны данные для тела (темы, адресов) так? ну значения то вы вытащите всех текстбоксов запросто [<Parrent>].<TextBoxName>.value . дальше то формировать сообщение надо , текстовое или HTML. и не важно, через Outlook или как отправлять.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеNoober89,

Тогда зачем Excel? Он то тут для каких целей, для интерфейса? Судя по всему вам нужны данные для тела (темы, адресов) так? ну значения то вы вытащите всех текстбоксов запросто [<Parrent>].<TextBoxName>.value . дальше то формировать сообщение надо , текстовое или HTML. и не важно, через Outlook или как отправлять.

Автор - bmv98rus
Дата добавления - 31.12.2016 в 22:11
Noober89 Дата: Пятница, 06.01.2017, 09:55 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
MS Outlook 2010. А можно ли на форме создать кнопку, через которую прикреплять файлы к письму? Т.е. это должна быть кнопка идентичная той, что при создании сообщения "Вложить файл".
Я так понимаю это должно быть связано с AttachNewFile


Сообщение отредактировал Noober89 - Пятница, 06.01.2017, 10:51
 
Ответить
СообщениеMS Outlook 2010. А можно ли на форме создать кнопку, через которую прикреплять файлы к письму? Т.е. это должна быть кнопка идентичная той, что при создании сообщения "Вложить файл".
Я так понимаю это должно быть связано с AttachNewFile

Автор - Noober89
Дата добавления - 06.01.2017 в 09:55
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Шаблон письма на VB для Outlook. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!