#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
при использовании поздней привязки).