Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Как избавиться от вопроса при отправке эл. письма Добавлено: 23.05.08 13:53  

Автор вопроса:  Jasmin
Здравствуйте!

Есть такой код.
Sub aaa()
  Dim Outlook_ As New Outlook.Application
  Dim Message As Outlook.MailItem
  Const NameFile = "D:\Book1.xls"
  Set Message = Outlook_.CreateItem(olMailItem)
  With Message
    .Subject = "Proba"
    .To = "qwerty@mail.ru"
    .Body = ""
    .Attachments.Add (ActiveWorkbook.FullName)
    'Application.SendKeys "{LEFT}"
    'Application.SendKeys "{ENTER}"
    .Send
  End With
  Set Message = Nothing
  Set Outlook_ = Nothing
End Sub


При попытке выполнить выскакивает сообщение "Программа пытается отправить сообщение с Вашего адреса. Подтвердите отправку, если это не вирус."

Хочется чтобы макрос отправлял без этого вопроса.

Как от него избавиться ?

Спасибо.

Ответить

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

Номер ответа: 1
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #1
Добавлено: 23.05.08 14:04
    А "Application.DisplayAlerts = False" не помогает?

Ответить

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



ICQ: 234458121 

Вопросов: 38
Ответов: 107
 Профиль | | #2 Добавлено: 23.05.08 19:16
От этого сообщения избавиться никак нельзя.

Ответить

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



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #3
Добавлено: 24.05.08 00:04
Можно найти окно и нажать кнопку программно.

Ответить

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



Вопросов: 5
Ответов: 100
 Профиль | | #4 Добавлено: 24.05.08 16:08
Кнопка Да недоступна в течение первых пяти секунд после отображения сообщения.

Ответить

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



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #5
Добавлено: 25.05.08 02:25
Ну так сделать доступной, блин =)

Ответить

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



Вопросов: 5
Ответов: 100
 Профиль | | #6 Добавлено: 25.05.08 12:32
Ага, послать EnableWindow, BM_CLICK, и убедиться, что пока не пройдет 5 секунд, сообщение не исчезнет. :)

Ответить

Номер ответа: 7
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #7
Добавлено: 25.05.08 13:15
Блин, ну я не могу попробовать, потому что не знаю какую либу подключить. У меня Outlook Express. Какая либа?

Ответить

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



Вопросов: 5
Ответов: 100
 Профиль | | #8 Добавлено: 25.05.08 13:57
Microsoft Outlook 11.0 Object Lib.
Я попробывал, но особо не усердствовал.

Ответить

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



Вопросов: 23
Ответов: 417
 Профиль | | #9 Добавлено: 25.05.08 15:00
Прошу прощения, но не знаю как работать с окнами. Может подскажите готовый кусок кода ? Пожалуйста. Буду очень благодарна за ответ.

У меня Microsoft Outlook 2003. Как я поняла с Outlook Express я могу использовать такой код (см. выше). Ему "все равно" кто им управляет. А Microsoft Outlook'у всегда требуется подтверждение.

Ответить

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



Вопросов: 5
Ответов: 100
 Профиль | | #10 Добавлено: 25.05.08 16:50
Вот готовый код из которого можно убедиться, что разблокировать кнопку - не значит решить проблему.

' на форме
Option Explicit

Private Sub Command1_Click()
    SetTimer 0, 1, 100, AddressOf TimerProc
End Sub

Private Sub Form_Unload(Cancel As Integer)
    KillTimer 0, 1
End Sub

' в модуле
Option Explicit

Public Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Const GW_CHILD = 5

Public Function TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long) As Long
Dim hw As Long
Dim btn As Long
    hw = FindWindow("#32770", "Microsoft Office Outlook";)
    If hw Then
       btn = FindWindowEx(hw, 0, "Button", "Äà";)
       If btn Then Call EnableWindow(btn, True)
    End If
End Function

Его надо запустить отдельным процессом.

Ответить

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



Вопросов: 5
Ответов: 100
 Профиль | | #11 Добавлено: 25.05.08 16:52
P.S.
btn = FindWindowEx(hw, 0, "Button", "Да";)

Ответить

Номер ответа: 12
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #12 Добавлено: 26.05.08 08:28
Простите меня чайника... Не первый день пишу на VBA, но как создать отдельный процесс не знаю. :-(

Ответить

Страница: 1 |

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



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