Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Отправка e-mail из VBA Добавлено: 24.08.06 11:34  

Автор вопроса:  Леха
Подскажите, пожалуйста!
Как можно создать сообщение (адрес, тема, текст письма) без прикрепления книги?
Пробовал так:

Application.Dialogs(xlDialogSendMail).Show
arg1:="e@mail.ru",
arg2:="Тема"

но при вызове диалога автоматом прикрепляется книга

ActiveWorkbook.SendMail тоже не подходит

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 Незнайка



Вопросов: 7
Ответов: 188
 Профиль | | #1 Добавлено: 24.08.06 15:56
Public Declare Function ShellExecute& Lib "shell32.dll" _
    Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long)
Sub SendMail()
    Call ShellExecute(0&, "Open", "mailto:" & "address@mail.ru" & "?Subject=" & "Это тема письма" & "&Body=" & "Это текст в теле письма", "", "", 1)
End Sub

Ответить

Номер ответа: 2
Автор ответа:
 Леха



Вопросов: 7
Ответов: 11
 Профиль | | #2 Добавлено: 24.08.06 16:38
Супер! Работает! Письмо формируется, тока какая-то хрень с кодировкой (кирилица). Как это побороть?

Ответить

Номер ответа: 3
Автор ответа:
 APS



ICQ: 234458121 

Вопросов: 38
Ответов: 107
 Профиль | | #3 Добавлено: 29.08.06 12:42
А у меня не работает. Может, я что-то не так делаю. Разместил указанный код в модуле. При вызове макроса ничего не происходит, ошибки не выдаются. У меня установлен MS Office 2003 SP1.

Ответить

Номер ответа: 4
Автор ответа:
 APS



ICQ: 234458121 

Вопросов: 38
Ответов: 107
 Профиль | | #4 Добавлено: 21.09.06 17:20
Вот незадача, и никто не может подсказать. Дома работает, на работе нет. Офис ставили с одного дистриба.
Нашел другой способ отправки email:
Sub MailButton_Click()
    Dim objOL As New Outlook.Application
    Dim objMail As MailItem
    Dim ToMail, Subject, Body As String


        ToMail = Cells(1, 6).Value
        Subject = Cells(2, 6).Value
        Body = Cells(3, 6).Value
       
        Set objOL = New Outlook.Application
        Set objMail = objOL.CreateItem(olMailItem)
        With objMail
            .To = ToMail
            .Body = Body
            .Subject = Subject
            .Display
        End With
        Set objMail = Nothing
        Set objOL = Nothing
    
    Next

End Sub


И вот возник вопрос: как сделать, чтобы сообщение сразу уходило? Так оно открывается и ждет команды отправить.
Как прикрепить к сообщению файл?

Ответить

Номер ответа: 5
Автор ответа:
 APS



ICQ: 234458121 

Вопросов: 38
Ответов: 107
 Профиль | | #5 Добавлено: 21.09.06 20:31
Как прикрепить любой файл сделал.
Надо только добавить код:
Sub SendMailButton_Click()
    Dim objOL As New Outlook.Application
    Dim objMail As MailItem
    Dim objAttach As Outlook.Attachments
    Set objOL = New Outlook.Application
    Set objMail = objOL.CreateItem(olMailItem)
    Set objAttach = objMail.Attachments
    With objMail
        .To = "mail@mail.ru"
        .Body = "Это текст тестового письма, отправленного средствами VBA"
        .Subject = "Тема"
        .Display
    End With
    objAttach.Add ("Полный путь к файлу";)
    Set objMail = Nothing
    Set objOL = Nothing
    Set objAttach = Nothing
End Sub

Ответить

Номер ответа: 6
Автор ответа:
 APS



ICQ: 234458121 

Вопросов: 38
Ответов: 107
 Профиль | | #6 Добавлено: 21.09.06 20:39
Ну и наконец дошло дело до отправки.

Sub SendMailButton_Click()
    Dim objOL As New Outlook.Application
    Dim objMail As MailItem
    Dim objAttach As Outlook.Attachments
    Set objOL = New Outlook.Application
    Set objMail = objOL.CreateItem(olMailItem)
    Set objAttach = objMail.Attachments

    objAttach.Add ("Полный путь к файлу";)

    With objMail
        .To = "mail@mail.ru"
        .Body = "Это текст тестового письма, отправленного средствами VBA"
        .Subject = "Тема"
        .Display
        .Send
    End With
    

    Set objMail = Nothing
    Set objOL = Nothing
    Set objAttach = Nothing
End Sub


Но Outlook делает одну гадость:

Программа пытается отправить сообщение с помощью команды Item.Send
Программа пытается автоматически отправить сообщение электронной почты с помощью команды Item.Send языка Microsoft Visual Basic Application (VBA) из Microsoft Outlook. Чтобы разрешить программе отправку сообщения, нажмите кнопку Да. Чтобы остановить программу, нажмите кнопку Нет.
Примечание. Кнопка Да недоступна в течение первых пяти секунд после отображения сообщения.
QUOTE]

И все равно приходиться нажимать кнопку, да еще ждать 5 секунд.

Нужен выход...
Думаю при таком способе отправки почты, его не найти!!!

Ответить

Номер ответа: 7
Автор ответа:
 Незнайка



Вопросов: 7
Ответов: 188
 Профиль | | #7 Добавлено: 22.09.06 07:53
Этому посвящено достаточно большое количество информации. Смотри в инете. Если Офис 2000 без сервис паков - то таких проблем нет. А вот уже на чиная с первого сервис пака для 2000 (не говоря уже о более поздних версиях офиса) Майкрософт стала заботится о нас и включать эту бяку - дабы уберечь нас всех от вирусов и спама. Сделали они это вроде как на совесть - а посему обойти её я лично не нашел нормального способа - делаю подготовку письма к отправке - перехватываю окошко и програмно жму отправить... что есть криво! Специально купил книжку по аутлук и вычитал что есть специальная примочка от Майкрософта, которую могут поставить товарисчи с правами админов - где настраивается - кто может нормально программно отправлять письма без этих заботливых запросов и 5 секундных ожиданий. На работе пользуюсь офисом 2000 без сервис паков а посему ваще не сталкиваюсь с этой проблемой.

Ответить

Номер ответа: 8
Автор ответа:
 Kostya



Вопросов: 0
Ответов: 2
 Профиль | | #8 Добавлено: 08.11.06 10:53
Когда я пытался запустить нечто подобное, на третью строчку мне сказали Can't find project or library. Я так понимаю, что проблема в библиотеках. Что для этой процедуры нужно, кроме Microsoft Outlook 11.0 Object Library?

Ответить

Номер ответа: 9
Автор ответа:
 APS



ICQ: 234458121 

Вопросов: 38
Ответов: 107
 Профиль | | #9 Добавлено: 09.11.06 23:16
Да вроде ничего не нужно. У меня больше ничего не подключено.

Ответить

Номер ответа: 10
Автор ответа:
 Kostya



Вопросов: 0
Ответов: 2
 Профиль | | #10 Добавлено: 10.11.06 10:45
Я понял, в чем фишка. После отключения библиотеки Microsoft Office 11.0 (как-то так называется) все работает.

Ответить

Номер ответа: 11
Автор ответа:
 recommend



Вопросов: 1
Ответов: 2
 Web-сайт: extforms.narod.ru
 Профиль | | #11
Добавлено: 13.08.08 13:15
А без Аутлук через SNMP Это делать кто-нибудь умеет?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам