Аутлук - письмо из Экселя

Программирование на Visual Basic for Applications
Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Аутлук - письмо из Экселя

Сообщение Tuco » 24.12.2003 (Ср) 12:18

Здравтсвуйте!
Пытаюсь отправить письмо из экселя (вернее, собираюсь сделать рассылку с поздравлениями). Ну и вот, с помощью книг разных, сделал такой вот макрос.
Код: Выделить всё
Sub test()
Dim adrBook As Outlook.AddressList
Dim adrEntry As Outlook.AddressEntry
Dim newMessage As Outlook.MailItem
Dim newRecipient As Outlook.Recipient
Dim strAddress As String
Dim myOutlookApp As Application
Dim MessageSubject As String
Dim MessageBody As String

MessageSubject = "текст"
MessageBody = "текст"
strAddress = "адрес"

Set myOutlookApp = Outlook.Application

Set newMessage = myOutlookApp.CreateItem(olMailItem)
newMessage.Subject = MessageSubject
newMessage.Body = MessageBody

Set newRecipient = newMessage.Recipients.Add("клиент")
newMessage.Recipients("клиент").Address = strAddress

newMessage.Send

End Sub


запускаю, а он говорит:
Код: Выделить всё
Run-time error '13'
Type mismatch

Чего ему не хватает?
"There's more than one way to do it!"

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.12.2003 (Ср) 12:32

На мой взгляд:

1. Dim myOutlookApp As Outlook.Application

2. Set myOutlookApp = New Outlook.Application

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 24.12.2003 (Ср) 12:47

Исправил. Запустил. Оно долго думало и сказало так:

Код: Выделить всё
Run-time error '-2147352567 (80020009)':
Automation error


Может, ещё какие-нибудь рекомендации есть?
"There's more than one way to do it!"

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.12.2003 (Ср) 13:01

Неплохо было бы еще указать, в какой строке кода произошла ошибка.

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 24.12.2003 (Ср) 13:12

так ведь он не показывает, в какой. Курсор остаётся на том же месте, где и был...
"There's more than one way to do it!"

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 24.12.2003 (Ср) 13:45

Код: Выделить всё
Sub test()
Dim adrBook As Outlook.AddressList
Dim adrEntry As Outlook.AddressEntry
Dim newMessage As Outlook.MailItem
Dim newRecipient As Outlook.Recipient
Dim strAddress As String
Dim myOutlookApp As Outlook.Application
Dim MessageSubject As String
Dim MessageBody As String

MessageSubject = "test"
MessageBody = "test2"
strAddress = "my@email.ru"


Set myOutlookApp = New Outlook.Application

Set newMessage = myOutlookApp.CreateItem(olMailItem)
newMessage.Subject = MessageSubject
newMessage.Body = MessageBody

Set newRecipient = newMessage.Recipients.Add(strAddress)

newMessage.Send

End Sub

так вроде работает
если у тебя адрес клиента в адресной книге есть то тогда, когда отправится письмо, автоматически поставится название адреса из адресной книги (типа вместо my@email.ru будет "клиент40")
Ничто так не ограничивает полёт мысли программиста, как компилятор

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 24.12.2003 (Ср) 14:06

чего-то я не пойму... ничего не приходит на адрес, который я вписал для контроля...
"There's more than one way to do it!"

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 24.12.2003 (Ср) 22:58

а у тебя все точно отправилось :?:
Ничто так не ограничивает полёт мысли программиста, как компилятор

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 25.12.2003 (Чт) 10:28

Трудно сказать... по крайней мере, макрос ничего не говорит о том, что что-то не работает... более того, команда, следующая за "newMessage.send" выполняется...
"There's more than one way to do it!"

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 25.12.2003 (Чт) 10:35

что значит трудно сказать :?:
залезь в папку отправленные и посмотри если там то письмо ушло, если в исходящих то оно все еще у тебя висит
зы ты где проверяешь в outlook или outlook express
Ничто так не ограничивает полёт мысли программиста, как компилятор

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 25.12.2003 (Чт) 10:45

Блин! Я же с Батом работаю и думал, что можно не заглядывать в аутлук вообще. Просто я знаю, что он у меня есть, и через него можно разослать почту. А у меня, оказывается в компе есть и аутлук, и аутлук-экспресс. Вобщем, все письма висят в исходящих на аутлуке. И что с ними делать теперь? Как заставить их уходить сразу?
"There's more than one way to do it!"

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 25.12.2003 (Чт) 10:52

Сервис - Параметры - Доставка почты -
ставим галку отправлять сообщения немедленно
Сервис - Учетные записи - делаем свою учетную запись (если у тебя ее нет) чтобы он мог отправлять письма
да еще адресная книга у тебя должна быть заполнена соответственно в outlook'e тоже
Ничто так не ограничивает полёт мысли программиста, как компилятор

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 25.12.2003 (Чт) 11:07

Агромаднейшее спасибо!
:) :lol: :D
Теперь всё работает!!!!! Супер!!!!!
"There's more than one way to do it!"

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 26.12.2003 (Пт) 10:42

а можно ли сделать тоже самое для аутлук-экспресс? и если можно, то как именно?
"There's more than one way to do it!"

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 26.12.2003 (Пт) 22:23

нет нельзя, это бесплатная программа так что....
Ничто так не ограничивает полёт мысли программиста, как компилятор

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 29.12.2003 (Пн) 10:43

А теперь окончательное спасибо большое!
"There's more than one way to do it!"


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 56

    TopList