Отключить настройки безопасности Outlook с помощью VBA - PullRequest
2 голосов
/ 04 июля 2011

Я пытаюсь автоматически отправить отчет по электронной почте с использованием VBA в макросе. Отчет отправляется из Access2007 outlook2007. Когда отчет отправляется, я получаю сообщение о безопасности от outlook, в котором говорится, что «программа пытается получить доступ к вашей адресной книге или контактам» или «программа пытается получить доступ к адресам электронной почты, которые вы сохранили в Outlook ...». Это сообщение проблематично для меня, потому что я хочу использовать планировщик задач Windows для автоматической отправки отчета без участия человека. Поэтому я хочу отключить это уведомление о безопасности. Я искал в Google, и вот код, который у меня есть, но он дает мне ошибки, и я не уверен, что еще мне делать. Заранее благодарны за Вашу помощь. Я начинающий программист. Ошибка

Public Sub Send_Report()
Dim strRecipient As String
Dim strSubject As String
Dim strMessageBody As String
Dim outlookapp As Outlook.Application

Set outlookapp = CreateObject("Outlook.Application")

OlSecurityManager.ConnectTo outlookapp   'error is here says object required

OlSecurityManager.DisableOOMWarnings = True
On Error GoTo Finally

strRecipient = "example@yahoo.com"
strSubject = "Tile of report"
strMessageBody = "Here is the message."

DoCmd.SendObject acSendReport, "Report_Name", acFormatPDF, strRecipient, , ,        strSubject, strMessageBody, False

Finally:
OlSecurityManager.DisableOOMWarnings = False


End Sub

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

Вы получаете ошибку, потому что OlSecurityManager - ничто. Вы не заявили об этом, вы ничего не установили, поэтому, когда вы пытаетесь его использовать, VBA не понимает, о чем вы говорите!

Похоже, вы пытаетесь использовать Outlook Security Manager, который является надстройкой продается здесь . Вы купили это? Потому что если нет, то, вероятно, у вас его нет в вашей системе.

Если он у вас есть, то вам, вероятно, нужно объявить и установить его так:

Dim OlSecurityManager As AddinExpress.Outlook.SecurityManager
Set OlSecurityManager = New AddinExpress.Outlook.SecurityManager

Если у вас, как я подозреваю, его нет, то альтернативой является отправка электронной почты с использованием CDO. Вот пример:

Во-первых, установите ссылку на библиотеку CDO в Инструменты> Ссылки> флажок рядом с Microsoft CDO для библиотеки Windows или что-то в этом роде.

Dim cdoConfig
Dim msgOne

Set cdoConfig = CreateObject("CDO.Configuration")
With cdoConfig.Fields
    .Item(cdoSendUsingMethod) = cdoSendUsingPort
    .Item(cdoSMTPServerPort) = 25 'your port number, usually is 25
    .Item(cdoSMTPServer) = "yourSMTPserver.com" 
    '.Item(cdoSendUserName) = "your username if required"
    '.Item(cdoSendPassword) = "your password if required"
    .Update
End With

Set msgOne = CreateObject("CDO.Message")
With msgOne
    Set .Configuration = cdoConfig
    .To = "recipient@somehwere.com"
    .from = "you@here.com"
    .subject = "Testing CDO"
    .TextBody = "It works just fine."
    .Attachments.Add "C:\myfile.pdf"
    .Send
End With

Это немного раздражает, чем Outlook, потому что вам нужно заранее знать адрес SMTP-сервера, который будет использоваться.

0 голосов
/ 16 марта 2017

Я знаю, что это поздний ответ, но я столкнулся с подобной проблемой.Есть еще одно решение, использующее Outlook.Application!

Я наткнулся на него во время поиска решения, полный кредит здесь: http://www.tek -tips.com / faqs.cfm? Fid = 4334

Но то, что просто предлагает решение этого сайта, вместо использования команды .send, используйте команду `.Display", а затем отправьте несколько клавиш с клавиатуры для отправки электронного письма, как показано ниже:

Sub Mail_workbook_Outlook()
'Working in Excel 2000-2016
    Dim OutApp As Object
    Dim OutMail As Object

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

    With OutMail
        .To = "Someone@Somewhere.com"
        .CC = ""
        .BCC = ""
        .Subject = "This is an automated email!"
        .Body = "Howdy there! Here, have an automated mail!"
        .Attachments.Add ActiveWorkbook.FullName
        .Display 'Display instead of .send
        SendKeys "%{s}", True 'send the email without prompts
    End With
    On Error GoTo 0

        Set OutMail = Nothing
        Set OutApp = Nothing
    End
End Sub
...