我想在VBA Outlook 2016中编写一个代码,以便在我发送的每封邮件中发送密件抄送,我有很多发件人邮件,一个Outlook帐户上有许多电子邮件。
所以每次我都会从 x@domaine.com 发送电子邮件时,会自动从 x@domaine.com 发送密件抄送电子邮件,如果我从 y@domaine1.com 发送,也会向 y@domaine1.com 发送密件抄送
我尝试了这段代码,但它不起作用,并且在我的安全宏中启用了所有内容
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim objRecip As Recipient
Dim strMsg As String
Dim res As Integer
Dim strBcc As String
Dim myOlApp As Outlook.Application
Dim myOlMsg As Outlook.MailItem
On Error Resume Next
Set myOlApp = CreateObject("Outlook.Application")
Set myMsg = myOlApp.ActiveInspector.CurrentItem
strBcc = myMsg.SenderEmailAddress
Set objRecip = Item.Recipients.Add(strBcc)
objRecip.Type = olBCC
If Not objRecip.Resolve Then
strMsg = "Could not resolve the Bcc recipient. " & _
"Do you want still to send the message?"
res = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _
"Could Not Resolve Bcc Recipient")
If res = vbNo Then
Cancel = True
End If
End If
Set objRecip = Nothing
End Sub
对您的问题有点困惑,假设您在 Outlook 上设置了多个帐户,那么这应该会给您CurrenUser
. 属性以获取当前登录用户的名称。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim olNamespace As Outlook.NameSpace
Dim olRec As Outlook.Recipient
Dim Address$
Set olNamespace = Application.GetNamespace("MAPI")
Address = olNamespace.CurrentUser
Set olRec = Item.Recipients.Add(Address)
olRec.Type = olBCC
olRec.Resolve
End Sub
尝试发送使用帐户
请参阅 https://msdn.microsoft.com/en-us/library/office/ff869311.aspx
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim objRecip As Recipient
Dim strMsg As String
Dim res As vbMsgBoxResult
Dim strBcc As String
'Dim myOlApp As Outlook.Application
'Dim myOlMsg As Outlook.MailItem
' hides errors, this is not a good thing
'On Error Resume Next
' You can use the already running instance of Outlook
'Set myOlApp = CreateObject("Outlook.Application")
' CurrentItem is Item: ByVal Item As Object
'Set myMsg = myOlApp.ActiveInspector.CurrentItem
'strBcc = myMsg.SenderEmailAddress
strBcc = Item.SendUsingAccount
Set objRecip = Item.Recipients.Add(strBcc)
objRecip.Type = olBCC
If Not objRecip.Resolve Then
strMsg = "Could not resolve the Bcc recipient. " & _
"Do you want still to send the message?"
res = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _
"Could Not Resolve Bcc Recipient")
If res = vbNo Then
Cancel = True
End If
End If
Set objRecip = Nothing
End Sub
发送的项目作为参数传递给您的代码,请勿使用 myOlApp.ActiveInspector.CurrentItem
。检查器可能已关闭,或者消息可能已创建为内联响应。