2013-12-09 7 views
1

У меня есть код для частной вспомогательной функции для отправки автоматических сообщений электронной почты. Я соерсед код с Питом ПизанскойАвтоматическая функция электронной почты

ACCESS 2007 - Automatically Send and Email Using Outlook Upon a Specific Event

Я попытался превратить его в функцию себя, используя код, приведенный ниже. Однако это не сработает. У меня такое чувство, что я полностью ошибался. Кроме того, я хотел бы, чтобы тело письма содержало всю информацию о записи, если это было возможно.

Option Explicit 
Public Started As Boolean 
Public oApp As Outlook.Application 
Public oItem As Outlook.MailItem 
Function AutoEmail() 



'Automatic Email to send notifications to selected user 
If Combo99.Text = "SM" Or "TW" Or "LM" Or "LV" Or "SV" Then 


    On Error Resume Next 
    'Get Outlook if it's running 
    Set oApp = GetObject(, "Outlook.Application") 
    If Err <> 0 Then 
     'Outlook wasn't running, start it from code 
     Set oApp = CreateObject("Outlook.Application") 
     Started = True 
    End If 

        Set oItem = oApp.CreateItem(olMailItem) 
        With oItem 
         .To = "[email protected]" 
         .Subject = "AutoEmail Test" 
         .Body = "Please enjoy this complimentary email. If this worked please email back." 
         'Send the email 
         .Send 
        End With 

            Set oItem = Nothing 
            If Started Then 
             oApp.Quit 
            End If 

'Display message to the user 
MsgBox "A model that is on the watch list has been selected. An Automatic Email has been sent", vbOKOnly, AutoEmail 

Else 
     'Do nothing 
End If 


End Function 
+0

Если я удалю заявление IF, оно работает, однако это необходимо для отправки формы. Combo99 (имя скоро будет изменено), где мне нужно проверить модель, которая больше не поддерживается. – ASM2701

ответ

1

Есть две проблемы с этим кодом линии ...

If Combo99.Text = "SM" Or "TW" Or "LM" Or "LV" Or "SV" Then 
  1. Text свойство Комбо доступен только тогда, когда оно имеет фокус. Когда фокус переключается на другой элемент управления, например, когда пользователь нажимает кнопку команды, вместо этого используйте Combo99.Value.

  2. При использовании Or между условиями, вы должны повторить элемент с левой стороны = знака снова для каждого Or.

Рассмотрим эти два If заявления ...

If strLetter = "a" Or "b" Then 
If strLetter = "a" Or strLetter = "b" Then 

Первый выдает ошибку, но второй нет.

Если вы предпочитаете сравнивать что-то со списком значений, вы можете использовать Select Case.

Select Case Me.Combo99.Value 
Case "SM", "TW", "LM", "LV", "SV" 
    ' insert code to send email 
Case Else 
    ' no email 
End Select 
+0

Спасибо за ваш быстрый ответ Ганс ... Когда я попытался запустить код, он обнаружил ошибку компиляции, когда использование ME недействительно. – ASM2701

+0

Итак, что произойдет, если вы отбросите «Меня»? – HansUp

+0

Получите следующую ошибку. Ошибка компиляции: Переменная не определена – ASM2701

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