2015-10-25 82 views
0

所以我試圖讓腳本運行在每個發送的項目到特定的內部郵箱,我發現這個代碼在線;Outlook中的VBA腳本不適用於內部電子郵件

Public Sub application_ItemSend(ByVal Item As Object, Cancel As Boolean) 

'check for address 
If InStr(LCase(Item.To), "[email protected]") Then 
     'ask if we've added the date 
     prompt$ = "You're sending this to " & Item.To & ". have you added the due date?" 
     If MsgBox(prompt$, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check Address") = vbNo Then 
     Cancel = True 
     End If 
    End If 

End Sub 

所以劇本的作品,但僅用於外部郵件(我一直在使用我的個人電子郵件進行測試),但不能爲內部郵箱,當你把它發送到內部郵箱腳本不會運行。

這似乎更像是一個排放問題,而不是其他任何事情,但我想看看你們中的任何一個人是否可能會參與進來。我不確定這是否是一個比看起來更常見的問題,但我一直無法在網上找到任何東西,只有這麼多的頭抓我可以在一個晚上做!

希望你能幫上忙。 :)

謝謝,

湯姆。

回答

1

To屬性是使用連接的所有收件人的只是顯示名稱「;」。它可能包含或不包含SMTP地址。

循環遍歷收件人集合中的所有收件人,閱讀Recipient.Type屬性以確保它是olTo。檢索Recipient.AddressEntry屬性(返回AddressEntry對象)。如果AddressEntry.Type = "SMTP",則使用AddressEntry.Address。如果AddressEntry.Type = "EX",則使用AddressEntry.GetExchangeUser.PrimarySmtpAddress

另請注意,取消參數必須聲明爲ByRef

dim addrType 
dim addr 
dim recip  
for each recip in item.Recipients 
if recip.Type = olTo Then 
    addrType = recip.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3002001F") 
    if addrType = "EX" Then 
     addr = recip.AddressEntry.GetExchangeUser.PrimarySmtpAddress 
    Else 
     addr = recip.Address 
    End If 
    if LCase(addr) = "[email protected]" Then 
     MsgBox "got it" 
     Exit for 
    End If 
    End If 
next 
+0

嗨德米特里,任何機會,你可以告訴我一個如何讀取類型的例子等? VBA的前景對我來說是新的,而VBA總的來說是我很少使用的,所以我很不確定你的意思。 –

+0

查看已更新的答案 –

+0

非常感謝這一點,我查看了屬性訪問器的內容,但是我無法正常工作!現在我知道供將來參考。 :) –

0

你對這個「Instr」使用了不正確的函數,它將返回一個字符串在另一個字符串中的位置。如果你想比較兩個字符串,正確的功能是「StrComp」

Option Explicit 

Public Sub application_ItemSend(ByVal Item As Object, Cancel As Boolean) 

    Const strRELEVANT_EMAIL_ADDRESS As String = "[email protected]" 
    Dim strPromp As String 

    strPromp = "You're sending this to " & Item.To & ". have you added the due date?" 

    'check for address 
    If StrComp(LCase$(Item.To), strRELEVANT_EMAIL_ADDRESS) = 0 Then 

     'ask if we've added the date 
     If MsgBox(strPromp, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check Address") = vbNo Then 
      Cancel = True 
     End If 
    End If 

End Sub 

希望這可以解決問題。

感謝

相關問題