Я не могу отправить электронное письмо с помощью формы в access, потому что я добавил функцию cc. Как я это решаю?

#vba #ms-access

#vba #ms-access

Вопрос:

Я включил функцию cc в свой код, и она работает. Я могу отправить электронное письмо и отправить cc кому-то другому. Однако я не могу отправить электронное письмо, не заполнив поле cc. Электронное письмо работает только тогда, когда я заполняю поля «Кому» и «CC». Как мне это решить?

 Private Sub btnBrowse_Click()
    Dim fileDiag As FileDialog
    Dim file As Variant

    Set fileDiag = FileDialog(msoFileDialogFilePicker)

    fileDiag.AllowMultiSelect = False
    If fileDiag.Show Then
        For Each file In fileDiag.SelectedItems
            Me.txtAttachment = file
        Next
    End If
End Sub

Private Sub btnClear_Click()
    Me.txtBody = Null
    Me.txtSubject = Null
    Me.txtTo = Null
    Me.txtAttachment = Null
    Me.txtCC = Null

End Sub

Private Sub btnHome_Click()
    DoCmd.BrowseTo 2, "HomePageMainFrm"
End Sub

Private Sub btnSend_Click()
    Dim oApp As Object
    Dim oEmail As Object

    Set oApp = CreateObject("outlook.Application")
    Set oEmail = oApp.CreateItem(0)

    oEmail.To = Me.txtTo.Value
    oEmail.Subject = Me.txtSubject.Value
    oEmail.CC Me.txtCC.Value
    oEmail.Body = Me.txtBody.Value
    If Len(Me.txtAttachment) > 0 Then
        oEmail.Attachments.Add Me.txtAttachment.Value
    End If
    With oEmail
        If Not IsNull(.To) And Not IsNull(.Subject) And Not IsNull(.Body) And Not IsNull(.CC) Then
            .Send
            MsgBox "Email Sent!"
        Else
            MsgBox "Please fill out the required fields."
        End If
    End With
End Sub
 

Комментарии:

1. Вы говорите в своем коде, что CC не может быть нулевым. Так что адаптируйте свой код. Не знаю, почему вы хотите проверить, не равен ли CC null, поэтому не могу предложить, что вам следует делать.

2. Почему нет = входа в oEmail.CC Me.txtCC.Value систему? Итак, если поле равно нулю, код не работает? Попробуйте обернуть в функцию Nz () Nz(Me.txtCC, "") . Не нужно вводить .Value , потому что это значение по умолчанию.

3. Привет, спасибо, Nz (Me.txtCC, «») помогло!

Ответ №1:

CC Свойство MailItem объекта — это свойство со строковым значением, значением которого будет пустая строка ( "" ), если ни один получатель не указан cc’ed — это свойство не должно быть null.

Вы можете легко решить эту проблему в своем коде, используя Nz функцию, которая вернет альтернативное значение, если предоставленный аргумент равен null:

 oEmail.CC = Nz(Me.txtCC.Value, "")
 

Однако, как указано в документации MS VBA, связанной выше, CC свойство просто содержит список отображаемых имен, разделенных точкой с запятой — вместо этого вам следует изменить содержимое Recipients коллекции при добавлении получателей (независимо от типа получателя) к MailItem объекту.

Добавление элемента в Recipients коллекцию с помощью Add метода приведет к получению Recipient объекта, обладающего Type свойством, которое можно использовать для обозначения получателя как cc, установив для свойства значение olCC (или 2 при использовании поздней привязки).