Перейти к содержимому

Фотография

Excelпомощь, консультации...


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 907

#901
sinsemilia

sinsemilia
  • В доску свой
  • 2 870 сообщений

Приветствую всех, уважаемые друзья!

Помогите, пожалуйста, доработать макрос. Он идеально работает, но не создает вложение. 

Макрос отправки почты. Я работаю в файле, там могут быть 3-10 листов. Затем мне надо этот файл отправить. Я нашла этот макрос, он подходит,

создает письмо, включает туда адресатов, тему, но не создает вложение - этот же открытий файл, в котором я работаю. Подскажите, пожалуйста, как сделать так, чтобы он еще и вкладывал текущий файл в тело письма? 

Sub LetterMail()

TM = ThisWorkbook.Worksheets(4).Range("A1")

Создаем письмо в  OUTLOOK

Dim objOl As Object

Dim objMail As Object

On Error GoTo 2

Set objOl = CreateObject("Outlook.Application")

2:

If objOl Is Nothing Then MsgBox "не удалось запустить", vbCritical: Exit Sub

Set objMail = objOl.createitem(0)

With objMail

 .To = TM 'получатели письма

 .Body = "Текст письма" 'Напишите текст письма

 .Subject = ThisWorkbook.Worksheets(4).Range("A2") 'Тема

 .Display

End With

Set objOl = Nothing

Set objMail = Nothing


Сообщение отредактировал sinsemilia: 18.11.2020, 15:44:02

  • 0

#902
T-800 Danya

T-800 Danya
  • Свой человек
  • 630 сообщений

Помогите, пожалуйста, доработать макрос.

 
ИМХО думаю что как-то вот так вот...   :dandy:
 
Для ActiveWorkbook
 
Скрытый текст

Для  выбранных Worksheets

Скрытый текст

Сообщение отредактировал T-800 Danya: 18.11.2020, 16:19:51

  • 0

#903
sinsemilia

sinsemilia
  • В доску свой
  • 2 870 сообщений

Для ActiveWorkbook
 

Ой))) такой большой ))) 

Что-то он не работает, ругается на книги 


  • 0

#904
T-800 Danya

T-800 Danya
  • Свой человек
  • 630 сообщений

 

Для ActiveWorkbook

 
Что-то он не работает, ругается на книги

 


Ну так надо наверное позвать Телепатов в тред...  :dandy:  - Как ругается то?

ЗЫ А про большой - ну так как иначе то... 

 

Вы хотите из файла макросом отправить сам файл... Соотвественно,  ему надо спера сделать свою копию...

 

Создать временный файл... Затем создать письмо приаттачить к нему этот временный файл  и отправить...


Сообщение отредактировал T-800 Danya: 18.11.2020, 17:54:11

  • 0

#905
trnj

trnj
  • Свой человек
  • 505 сообщений

 

Sub LetterMail()

TM = ThisWorkbook.Worksheets(4).Range("A1")

Создаем письмо в  OUTLOOK

Dim objOl As Object

Dim objMail As Object

On Error GoTo 2

Set objOl = CreateObject("Outlook.Application")

2:

If objOl Is Nothing Then MsgBox "не удалось запустить", vbCritical: Exit Sub

Set objMail = objOl.createitem(0)

With objMail

 .To = TM 'получатели письма

 .Body = "Текст письма" 'Напишите текст письма

 .Subject = ThisWorkbook.Worksheets(4).Range("A2") 'Тема

 .Display

End With

Set objOl = Nothing

Set objMail = Nothing

 

А если сюда просто добавить 

 

.Attachments.Add "Путь к файлу"

 

 .To = TM 'получатели письма

 .Body = "Текст письма" 'Напишите текст письма

 .Subject = ThisWorkbook.Worksheets(4).Range("A2") 'Тема

 .Attachments.Add "C:\1\ВашФайл.xlsx"

 

можно ещё так попробовать 

 

.To = TM 'получатели письма
.Body = "Текст письма" 'Напишите текст письма
.Subject = ThisWorkbook.Worksheets(4).Range("A2") 'Тема

.Attachments.Add (ActiveDocument.FullName)

 

Тогда приложит текущий документ динамически (не надо прописывать путь)


Сообщение отредактировал trnj: 18.11.2020, 18:17:32

  • 0

#906
sinsemilia

sinsemilia
  • В доску свой
  • 2 870 сообщений
Вы хотите из файла макросом отправить сам файл... Соотвественно,  ему надо спера сделать свою копию...   Создать временный файл... Затем создать письмо приаттачить к нему этот временный файл  и отправить...

Спасибо вам большое за помощь!  :)  :hi:  

 

А если сюда просто добавить 

Да! То, что надо! Воспользовалась вашим вариантом 2, только он сначала ругался и тут до меня дошло почему. Я заменила (ActiveDocument.FullName) на (ActiveWorkbook.FullName) и все заработало! Спасибо вам огромное!  :hi:


Сообщение отредактировал sinsemilia: 19.11.2020, 08:45:48

  • 0

#907
trnj

trnj
  • Свой человек
  • 505 сообщений

 Да! То, что надо! Воспользовалась вашим вариантом 2, только он сначала ругался и тут до меня дошло почему. Я заменила (ActiveDocument.FullName) на (ActiveWorkbook.FullName) и все заработало! Спасибо вам огромное!  :hi:

 

 

Упс, сорри за очепятку, сто лет уже не работал с макросами.

 

Тогда ещё есть смысл добавить после end with

ActiveWorkbook.Save 

Чтобы сохранить текущий файл

 

Или как Козырь вам советовал выше, сохранить во временный файл, и его прикладывать, потом удалить (по желанию)

 

ActiveWorkbook.SaveAs "C:\ВременныйФайл.xls", FileFormat:=52


  • 0

#908
sinsemilia

sinsemilia
  • В доску свой
  • 2 870 сообщений

 

Упс, сорри за очепятку, сто лет уже не работал с макросами.

 

Тогда ещё есть смысл добавить после end with

ActiveWorkbook.Save 

Чтобы сохранить текущий файл

 

Или как Козырь вам советовал выше, сохранить во временный файл, и его прикладывать, потом удалить (по желанию)

 

ActiveWorkbook.SaveAs "C:\ВременныйФайл.xls", FileFormat:=52

Да, отлично! Добавила автосохранение, теперь даже кнопку не надо нажимать)))

Там путь к файлу прописывать не вариант, потому что папки каждый раз новые, дублируются, а файлом много + надо смотреть прежде чем отправляешь) 

Спасибо вам большое за помощь! Супер  :)  :rotate:  


  • 0




Количество пользователей, читающих эту тему: 2

пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0


    Yahoo (1)

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2019 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.