2011-09-27 2 views
0

시간이 지남에 따라 함께 스크립트를 작성했습니다. 최근 Outlook에서 사용해야하는 플러그인이 일부 문제를 일으켰습니다. 기본적으로 플러그인을 사용하면 전자 메일이 파괴되어 특정 첨부 파일 이름으로 다시 만들어지기 때문에 두 번 묻습니다. 이 시점에서 사용자에게 다시 묻습니다. 나는 For 루프에서이 첨부 파일을 찾으면 스크립트를 건너 뛰도록 노력했다. 그러나 For 루프를 추가하면 전체 스크립트를 건너 뛰는 것처럼 보입니다. VBA에 대한 경험이 제한되어 있으므로 구문이나 사용법에 문제가있는 것으로 확신합니다. 나는 전망 및 VBA와 그 익숙하지 않다VBA Outlook Script

Private Sub Application_ItemSend _ 
(ByVal Item As Object, Cancel As Boolean) 
Dim strMsg As String 
Dim Atmt As Variant 

'strMsg = Item.Class 
If Item.Class = "43" Then 
    For Each Atmt In Item.Attachments 
     If VBA.Right(Atmt.FileName, 3) = ".sf" Then 
      GoTo NonEmailError 
     End If 
    Next Atmt 
    If Item.CC = "" Then 
     strMsg = "To recipients: " & Item.To & vbCrLf & _ 
     "Are you sure you want to send this message?" 
    Else 
     strMsg = "To recipients: " & Item.To & vbCrLf & _ 
     "Cc recipients: " & Item.CC & vbCrLf & _ 
     "Bcc recipients: " & Item.BCC & vbCrLf & _ 
     "Are you sure you want to send this message?" 
    End If 
Else 
    GoTo NonEmailError 
End If 
' Exit Sub 

' Ignore errors for now. 
On Error GoTo NonEmailError 

' Prompt user to fill in subject 
If Item.Subject = "" Then 
    MsgBox "You must enter a subject.", 48, "Empty Subject" 
    Cancel = True 
    GoTo NonEmailError 
End If 
' Exit Sub 

' Prompt user to verify E-Mails 
If MsgBox(strMsg, vbYesNo + vbQuestion _ 
    , "Send Confirmation") = vbNo Then 
    Cancel = True 
End If 
Exit Sub 

NonEmailError: 
' The item being sent was not an e-mail and so don't prompt the user anything 
Exit Sub 

End Sub 
+0

몇 가지 의견 : 1) 첨부 파일이있는 이메일과 관계없이 2 개의 프롬프트가 표시됩니까? 2) 첫 번째 프롬프트와 관련된 회선은 어느 것이고 두 번째 회의 프롬프트는 어느 것입니까? 3) Dim olMI As Outlook.MailItem --- TypeName (Item) = "MailItem"Then --- --- olMI를 설정하면 (자),'Object' 대신에'Outlook.MailItem'을 처리하는 것이 좋습니다. = Item --- '당신의 물건 --- End If'. –

답변

0

하지만,이 경우 처음 추측은 item.class는 숫자 값과 비교해야한다는 43 오히려 문자열 리터럴 값 "43"보다 아래 스크립트를 참조하십시오. 나 일시 중지 제공

한 가지 내가 "43"Item.Class에 대한 잘못된 유형이기 때문에 문이 오류가 발생하는 기대하지만, 이것은 단지 물질과 내 익숙를 반영 할 수 있다는 것이다.

는 MSDN 문헌에 따르면, item.class (이 경우는 MailItem에) OlObjectClass 상수이며,는 43olMail이다.

If Item.Class = 43 Then

(참조 : http://msdn.microsoft.com/en-us/library/bb208118%28v=office.12%29.aspxhttp://msdn.microsoft.com/en-us/library/bb207137%28v=office.12%29.aspx를)

If Item.Class = "43" Then

If Item.Class = olMail Then

에 적어도에 : 아마 변경하는 것이 바람직 할 것
+0

"For 루프"를 작성하여 첨부 파일 유형을 테스트하기 전에 스크립트가 클래스를 43으로 설정하여 정상적으로 작동하고있었습니다. – Untalented

+0

@ Unntented - 그래도 horatio와 동의합니다. 내가'Item.Class' 또는'TypeName (Item)'으로 테스트함으로써'Object' 대신에'Outlook.MailItem'에 대한 작업을 추천합니다. 당신의 게시물에 대한 저의 코멘트를보십시오. –

관련 문제