2014-04-01 3 views
0

Im пытается перебрать вложения. Если формат любого прикрепленного PDF или документ или DOCX, то подскажите vbYesNoOutlook VBA Programming

По какой-то причине он не работает :(

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 

    Dim Atmt As attachment 
    Dim FileName As String 
    Dim i As Integer 
    Dim strPrompt As String 
    Dim vError As Variant 
    Dim sErrors As String 

    i = 0 

    For Each Atmt In Item.Attachments 
     Debug.Print Atmt.FileName 

     If Right(Atmt.FileName, 4) = "docx" Then 

      i = i + 1 

     End If 

    Next Atmt 

    If i > 0 Then 

     strPrompt = "You have attached a document. Is this a CV Submission?" 

     If MsgBox(strPrompt, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check for Attachment") = vbNo Then 
      Cancel = False 

     Else: 

       Dim myNamespace As Outlook.NameSpace 
       Dim conn As ADODB.Connection 
       Dim rs As ADODB.Recordset 
       Dim sConnString As String 

       ' Create the connection string. 
       sConnString = "Provider=SQLOLEDB;Data Source=WIN-NBST3PHVFV4\ECLIPSE;" & _ 
          "Initial Catalog=OBlive;" & _ 
          "User ID=outlook;Password=0Zzy007;" 

       ' Create the Connection and Recordset objects. 
      Set conn = New ADODB.Connection 
      Set rs = New ADODB.Recordset 
      Set myNamespace = Application.GetNamespace("MAPI") 

      ' Open the connection and execute. 
      conn.Open sConnString 
      Set rs = conn.Execute("INSERT INTO dbo.Submissions (CV_Sent, Consultant, Timestamp) VALUES ('1','" & myNamespace.CurrentUser & "', CURRENT_TIMESTAMP)") 
      ' Clean up 
      If CBool(conn.State And adStateOpen) Then conn.Close 
      Set conn = Nothing 
      Set rs = Nothing 

     End If 

    End If 

End Sub 

Im в настоящее время тестирует это с приложением DOCX, любая помощь будет оценена

ответ

0

Похоже, ваш чек ищет только DOCX в любом случае и является чувствительным к регистру Попробуйте это:.

If (UCase(Right(Atmt.FileName, 4)) = UCase("docx")) Or _ 
    (UCase(Right(Atmt.FileName, 3)) = UCase("pdf")) Or _ 
    (UCase(Right(Atmt.FileName, 3)) = UCase("doc")) Then 

     i = i + 1 

End If 
+0

Благодаря Ive пытался код, который вы выложили, но его придумывают синтаксической ошибки – linux007

+0

Неужели это еще не работает? – Starscream1984

+0

Спасибо за ваш вклад, но все еще не работает :( – linux007