Вы получаете ошибку, потому что 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-сервера, который будет использоваться.