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

Вход

Регистрация

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

 

= Мир MS Excel/Добавление подписи в тело письма при отправки файла макросом - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление подписи в тело письма при отправки файла макросом (Макросы/Sub)
Добавление подписи в тело письма при отправки файла макросом
InesVolero Дата: Пятница, 04.09.2015, 15:47 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день!

Есть готовый макрос для отправки письма.

Необходимо автоматически подгрузить подпись из Outlook. Причём подгружаться должна та подпись, которая настроена по умолчанию на данном компьютере/OutlookЕ (письмо может быть отправлено не только с моего адреса (компьютера), следовательно подпись должна меняться в зависимости от того, кто пользуется этим макросом)

Помогите, пожалуйста, понять, что нужно добавить в мой макрос, чтобы заработала подпись.
Нашла макрос с добавлением подписи в письмо, но не знаю как и что добавить из него в мой макрос, чтобы добавлялась подпись.

Мой Макрос для отправки письма:
[vba]
Код
Sub Уведомление()

Dim OutApp As Object
Dim OutMail As Object
Dim rng As Range

With Application
.EnableEvents = False
.ScreenUpdating = False
End With

iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Set rng = Nothing
Set rng = ActiveSheet.Range(Cells(1, 1), Cells(iLastRow, 7))

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

On Error Resume Next
With OutMail

.To = Range("'Списки'!L6").Value
.BCC = Range("'Списки'!L9").Value
.CC = Range("'Списки'!L10").Value
.Subject = Range("'Списки'!$J$2").Value

.HTMLBody = RangetoHTML(rng)

.Attachments.Add Range("'Списки'!L2").Value
.Attachments.Add Range("'Списки'!L3").Value
.Display
End With
On Error GoTo 0

With Application
.EnableEvents = True
.ScreenUpdating = True
End With

Set OutMail = Nothing
Set OutApp = Nothing
End Sub

Function RangetoHTML(rng As Range)
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook

TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
On Error GoTo 0
End With

With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With

Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.readall
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")

TempWB.Close savechanges:=False

Kill TempFile

Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
[/vba]
Найденный макрос с добавлением подписи:

[vba]
Код
Sub подпись()

Dim OutApp As Object, OutMail As Object, Strbody As String, r As Date
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon: Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
r = Format(Now(), "dd mmmm yyyy") 'формат даты
With OutMail
.To = "primer@mail.ru": .CC = "": .BCC = "": .Subject = "Тема " & r & " продолжение темы": 'вставка даты
.Attachments.Add ("C:\Test.xls")
.Body = Activedocument.Content 'в этом случае открывается письмо с подписью той которая по умолчанию в Outlooke
.Display 'or use .send
End With
On Error GoTo 0: Set OutMail = Nothing: Set OutApp = Nothing
End Sub
[/vba]
[moder]Для оформления кодов макросов используйте кнопку #. Сделал за Вас на первый раз.


Сообщение отредактировал _Boroda_ - Пятница, 04.09.2015, 15:56
 
Ответить
СообщениеДобрый день!

Есть готовый макрос для отправки письма.

Необходимо автоматически подгрузить подпись из Outlook. Причём подгружаться должна та подпись, которая настроена по умолчанию на данном компьютере/OutlookЕ (письмо может быть отправлено не только с моего адреса (компьютера), следовательно подпись должна меняться в зависимости от того, кто пользуется этим макросом)

Помогите, пожалуйста, понять, что нужно добавить в мой макрос, чтобы заработала подпись.
Нашла макрос с добавлением подписи в письмо, но не знаю как и что добавить из него в мой макрос, чтобы добавлялась подпись.

Мой Макрос для отправки письма:
[vba]
Код
Sub Уведомление()

Dim OutApp As Object
Dim OutMail As Object
Dim rng As Range

With Application
.EnableEvents = False
.ScreenUpdating = False
End With

iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Set rng = Nothing
Set rng = ActiveSheet.Range(Cells(1, 1), Cells(iLastRow, 7))

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

On Error Resume Next
With OutMail

.To = Range("'Списки'!L6").Value
.BCC = Range("'Списки'!L9").Value
.CC = Range("'Списки'!L10").Value
.Subject = Range("'Списки'!$J$2").Value

.HTMLBody = RangetoHTML(rng)

.Attachments.Add Range("'Списки'!L2").Value
.Attachments.Add Range("'Списки'!L3").Value
.Display
End With
On Error GoTo 0

With Application
.EnableEvents = True
.ScreenUpdating = True
End With

Set OutMail = Nothing
Set OutApp = Nothing
End Sub

Function RangetoHTML(rng As Range)
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook

TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
On Error GoTo 0
End With

With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With

Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.readall
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")

TempWB.Close savechanges:=False

Kill TempFile

Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
[/vba]
Найденный макрос с добавлением подписи:

[vba]
Код
Sub подпись()

Dim OutApp As Object, OutMail As Object, Strbody As String, r As Date
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon: Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
r = Format(Now(), "dd mmmm yyyy") 'формат даты
With OutMail
.To = "primer@mail.ru": .CC = "": .BCC = "": .Subject = "Тема " & r & " продолжение темы": 'вставка даты
.Attachments.Add ("C:\Test.xls")
.Body = Activedocument.Content 'в этом случае открывается письмо с подписью той которая по умолчанию в Outlooke
.Display 'or use .send
End With
On Error GoTo 0: Set OutMail = Nothing: Set OutApp = Nothing
End Sub
[/vba]
[moder]Для оформления кодов макросов используйте кнопку #. Сделал за Вас на первый раз.

Автор - InesVolero
Дата добавления - 04.09.2015 в 15:47
anvg Дата: Пятница, 04.09.2015, 19:22 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток
Как то так
[vba]
Код
Public Sub SendMail()
     Dim curSel As Object, pSheet As Worksheet
     Dim LRow As Long, outApp As Object, outMail As Object
      
     Set curSel = Selection: Set pSheet = ActiveSheet
     LRow = pSheet.Cells(pSheet.Rows.Count, 1).End(xlUp).Row
     pSheet.Range(pSheet.Cells(1, 1), pSheet.Cells(LRow, 7)).Select
      
     Set outApp = CreateObject("Outlook.Application")
     Set outMail = outApp.CreateItem(0)
     With outMail
         .Display
         .HtmlBody = Replace$(pSheet.MailEnvelope.Item.HtmlBody, _
                     "align=center x:publishsource=", "align=left x:publishsource=") & .HtmlBody
         .To = Range("'Списки'!L6").Value
         .BCC = Range("'Списки'!L9").Value
         .CC = Range("'Списки'!L10").Value
         .Subject = Range("'Списки'!$J$2").Value
         .Attachments.Add Range("'Списки'!L2").Value
         .Attachments.Add Range("'Списки'!L3").Value
     End With
     curSel.Select
End Sub
[/vba]
Успехов.
 
Ответить
СообщениеДоброе время суток
Как то так
[vba]
Код
Public Sub SendMail()
     Dim curSel As Object, pSheet As Worksheet
     Dim LRow As Long, outApp As Object, outMail As Object
      
     Set curSel = Selection: Set pSheet = ActiveSheet
     LRow = pSheet.Cells(pSheet.Rows.Count, 1).End(xlUp).Row
     pSheet.Range(pSheet.Cells(1, 1), pSheet.Cells(LRow, 7)).Select
      
     Set outApp = CreateObject("Outlook.Application")
     Set outMail = outApp.CreateItem(0)
     With outMail
         .Display
         .HtmlBody = Replace$(pSheet.MailEnvelope.Item.HtmlBody, _
                     "align=center x:publishsource=", "align=left x:publishsource=") & .HtmlBody
         .To = Range("'Списки'!L6").Value
         .BCC = Range("'Списки'!L9").Value
         .CC = Range("'Списки'!L10").Value
         .Subject = Range("'Списки'!$J$2").Value
         .Attachments.Add Range("'Списки'!L2").Value
         .Attachments.Add Range("'Списки'!L3").Value
     End With
     curSel.Select
End Sub
[/vba]
Успехов.

Автор - anvg
Дата добавления - 04.09.2015 в 19:22
InesVolero Дата: Понедельник, 07.09.2015, 08:50 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
anvg,
Огромное спасибо за помощь.
 
Ответить
Сообщениеanvg,
Огромное спасибо за помощь.

Автор - InesVolero
Дата добавления - 07.09.2015 в 08:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление подписи в тело письма при отправки файла макросом (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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