2013-04-12 5 views
2

Я пытаюсь использовать последнее связывание с электронной почтой от VBA в Access 2010 и Access 2003. 2003 дает мне «Не удалось завершить операцию. Один или несколько значений параметров недействительны. ' и 2010 дает мне «Недействительный вызов или аргумент процедуры». Я сделал шаг, и он не прошел .send у основания. Я устанавливаю свою привязанность неправильно? Я пытаюсь сделать это без использования библиотеки объектов Microsoft в ссылках.Отправка электронной почты с поздней ошибкой привязки через VBA

Спасибо.

'Refers to Outlook's Application object 
Dim appOutlook As Object 
'Refers to an Outlook email message 
Dim appOutlookMsg As Object 
'Refers to an Outlook email recipient 
Dim appOutlookRec As Object 

'Create an Outlook session in the background 
Set appOutlook = CreateObject("Outlook.Application") 

'Create a new empty email message 
Set appOutlookMsg = appOutlook.CreateItem(olMailItem) 

'Using the new, empty message... 
With appOutlookMsg 

strSQL = "SELECT Email FROM Employees WHERE " & sqlVar & " = True" 
Set myR = CurrentDb.OpenRecordset(strSQL) 

Do While Not myR.EOF 
Set appOutlookRec = .Recipients.Add(myR!Email) 
appOutlookRec.Type = olTo 
myR.MoveNext 
Loop 

strSQL = "SELECT Email FROM Employees WHERE '" & user & "' = Username"  
Set myR = CurrentDb.OpenRecordset(strSQL) 

Set appOutlookRec = .Recipients.Add(myR!Email) 
appOutlookRec.Type = olCC 

.Subject = wonum 
.Body = "Department: " & strDep & vbNewLine & vbNewLine & _ 
    "Issue is at: " & strIssue & vbNewLine & vbNewLine & _ 
    "Priority is: " & strPriority & vbNewLine & vbNewLine & _ 
    "Complete by: " & strDate & vbNewLine & vbNewLine & _ 
    "Description: " & strDesc 

.Send 

End With 

ответ

2

Без справки, VBA не будет знать о константах Outlook, таких как olTo и olCC. При позднем связывании (без ссылки) вы должны указать значения для констант, а не , имена констант.

Однако, поскольку вы не сообщали об ошибке компиляции об этих константах, это говорит о том, что ваш модуль кода не содержит Option Explicit в разделе «Объявления». Попытка устранить код VBA без Option Explicit - пустая трата времени.

Добавить Option Explicit, затем выберите Debug-> Compile из главного меню VB Editor и исправьте все, о чем жалуется компилятор. Возобновите работу после устранения неполадок.

+2

Хорошая точка. Когда я увидел '.CreateItem (olMailItem)', я понял, что в коде должно быть 'Const olMailItem = 0' где-то еще. Использование «Option Explicit» было настолько автоматическим для меня в течение стольких лет, что я даже не думаю об этом, когда рассматриваю проблему. –

+0

Я добавил Option Explicit и нашел несколько ошибок. Но что я должен установить olTo и olCC как? Я установил их как 'Const olTO = 0', и он все равно дал мне ту же ошибку после ее правильной сборки. (PS спасибо за ясную информацию) – Grant

+1

Из перечисления OlMailRecipientType: http://msdn.microsoft.com/en-us/library/office/ff865653.aspx – HansUp

1

При отправке электронной почты через Outlook с использованием раннего и позднего связывания имеется статья here. В «Late Bound Контрольный список Conversion» в конце концов, последнее предложение

Добавить необязательные аргументы, которые имеют значение по умолчанию

Я не могу ручаться за это совет, потому что, когда мне нужно отправлять сообщения электронной почты из Access я использую CDO, а не Outlook. Тем не менее, похоже, что стоит попробовать.

 Смежные вопросы

  • Нет связанных вопросов^_^