2016-05-06 6 views
0

これは私がこれまで持っているものです。保存のみPDFの添付ファイルVBA見通し

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
Dim objAtt As Outlook.Attachment 
Dim saveFolder As String 
saveFolder = "P:\ME\TEST\" 
Dim dateFormat 
dateFormat = Format(Now, "yyyy.mm.dd") 
For Each objAtt In itm.Attachments 
    If InStr(1, objAtt.FileName, "HALJD", vbTextCompare) > 0 Then 
    objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ADFA.pdf" 
    ElseIf InStr(1, objAtt.FileName, "Generic", vbTextCompare) > 0 Then 
    objAtt.SaveAsFile saveFolder & dateFormat & " asdf asdf asdf.pdf" 
    ElseIf InStr(1, objAtt.FileName, "asdfa asdfsa", vbTextCompare) > 0 Then 
    objAtt.SaveAsFile saveFolder & dateFormat & " asdfds adsfa asdf a.pdf" 
    ElseIf InStr(1, objAtt.FileName, "asdfs_asdfs", vbTextCompare) Then 
    objAtt.SaveAsFile saveFolder & dateFormat & " asfd asfda sadfsad.pdf" 
    Else 
    End If 
Set objAtt = Nothing 
Next 
End Sub 

私は1つを除いてまったく同じことがエクセルで、もう1つはPDFファイルであるという名前の2つのファイルを含む電子メールを取得します。私はただPDFが必要ですが、これをコード化する方法は不明です。最後のelseif文の後に行をスローするだけでいいですか?あなたが何を思いついたか教えてください。

ありがとうございました!

答えて

0

これはコードと私の組み合わせのビットであるため、これを完全にはテストしていません。見て

メインビットは、
Set objFSO = CreateObject("Scripting.FileSystemObject")
sExt = objFSO.GetExtensionName(objAtt.FileName)

Sub saveAttachtoDisk(ByVal item As MailItem) 

    Dim objAtt As Attachment 
    Dim i As Integer 
    Dim dateFormat As String 
    Dim objFSO As Object 
    Dim sExt As String 

    dateFormat = Format(Date, "yyyy.mm.dd") 

    'Only proceed if the email contains attachements. 
    If item.Attachments.Count > 0 Then 
     Set objFSO = CreateObject("Scripting.FileSystemObject") 

     'Cycle through each attachment on the email. 
     For i = 1 To item.Attachments.Count 
      Set objAtt = item.Attachments(i) 

      'Get the extension of the attached file name. 
      sExt = objFSO.GetExtensionName(objAtt.FileName) 

      If sExt = "pdf" Then 
       If InStr(1, objAtt.FileName, "HALJD", vbTextCompare) > 0 Then 
        objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ADFA.pdf" 
       ElseIf InStr(1, objAtt.FileName, "Generic", vbTextCompare) > 0 Then 
        objAtt.SaveAsFile saveFolder & dateFormat & " asdf asdf asdf.pdf" 
       ElseIf InStr(1, objAtt.FileName, "asdfa asdfsa", vbTextCompare) > 0 Then 
        objAtt.SaveAsFile saveFolder & dateFormat & " asdfds adsfa asdf a.pdf" 
       ElseIf InStr(1, objAtt.FileName, "asdfs_asdfs", vbTextCompare) Then 
        objAtt.SaveAsFile saveFolder & dateFormat & " asfd asfda sadfsad.pdf" 
       End If 
      End If 

      'Any remaining events are completed before the code continues. 
      DoEvents 
      Set objAtt = Nothing 
     Next i 
     Set objFSO = Nothing 
    End If 
End Sub 
+0

ありがとうございました!私はすぐにそれが動作するかどうかを確認します。私は複数のモジュールを持っているので、それぞれを実行する必要があります。ところで、これを行う簡単な方法がある場合にのみ、ElseIfの1つのステートメントがPDFである必要があります。再度、感謝します! –

+0

Set objFSO = CreatObjet( "Scripting.FileSystemObject")はどのように設定する必要がありますか?それはプログラムをトリプルアップしています。 –

+1

'CreateObject'のスペルを確認してください。別の言語を使用していますか? – Parfait

0

は直接RIGHT(..., 3)でファイル名に拡張子をチェックし考えてみています。また、可読性と保守性を考慮して、LIKEを使用してマクロの言い回しを変更し、文字列変数を条件付きで定義し、ファイルパスをSaveAsに作成することを検討してください。最後に、Ifという文を1行使用してみてください。

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 

    Dim objAtt As Outlook.Attachment 
    Dim saveFolder As String: saveFolder = "P:\ME\TEST\" 
    Dim dateFormat: dateFormat = Format(Now, "yyyy.mm.dd") 
    Dim strFile As String 

    For Each objAtt In itm.Attachments 

    If Right(objAtt.FileName, 3) = "pdf" Then 
     If objAtt.FileName Like "*HALJD*" Then strFile = " ASDF ADFA.pdf" 
     If objAtt.FileName Like "*Generic*" Then strFile = " asdf asdf asdf.pdf" 
     If objAtt.FileName Like "*asdfa asdfsa*" Then strFile = " asdfds adsfa asdf a.pdf" 
     If objAtt.FileName Like "*asdfs_asdfs*" Then strFile = " asfd asfda sadfsad.pdf" 

     objAtt.SaveAsFile saveFolder & dateFormat & strFile 
    End If   

    Next objAtt 

    Set objAtt = Nothing 
End Sub 
+0

"pdf"の3番目の単語の後にチェックしますか? –

+0

私は分かりません。どのような3番目の言葉ですか? 'Right()'は添付ファイルのファイル名をチェックします。あなたはいくつかのファイル名を掲示することができますか? – Parfait

関連する問題