2011-06-30 70 views
1

添付ファイルを電子メールに保存する次のvbaコードがあります。Outlookのメールからmsg添付ファイルを抽出する

これは.docx、.jpgなどでうまく動作しますが、動作しない複数の.msg添付ファイルを抽出するために使用する必要があります。

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
Dim objAtt As Outlook.Attachment 
Dim saveFolder As String 
Dim i As Integer 

saveFolder = "C:\Test\" 
For Each objAtt In itm.Attachments 
    stFileName = saveFolder & objAtt.FileName 
    i = 0 
    'Loop to find the first available filename 
    Do While Dir(stFileName) <> "" 
    i = i + 1 
    stFileName = saveFolder & i & " - " & objAtt.FileName 
    Loop 
    objAtt.SaveAsFile stFileName 
Next 
End Sub 

: -

コードが

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
Dim objAtt As Outlook.Attachment 
Dim saveFolder As String 

saveFolder = "C:\Test\" 
For Each objAtt In itm.Attachments 
stFileName = saveFolder & "\" & objAtt.DisplayName 
i = 0 
JumpHere: 
If Dir(stFileName) = "" Then 
objAtt.SaveAsFile stFileName 
Else 
i = i + 1 
stFileName = saveFolder & "\" & i & " - " & objAtt.DisplayName 
GoTo JumpHere 
End If 
Set objAtt = Nothing 
Next 
End Sub 

でエラーがラインに関係するディレクトリ(stFileName)場合は= "" その後

+0

**あなたは** VBAの 'GoTo'命令を本当に使ってはいけません!ここで説明するための議論です:http://www.eggheadcafe.com/software/aspnet/32608532/goto-statement-in-vba.aspx – JMax

+0

ありがとうございます - 図面ボードに戻っているように見えます... – Haribo83

+0

@ Haribo83:maybe我々はあなたが何をしようとしていたかを設計するのを手伝うことができますコードのこの部分の目的を私たちに説明できますか? – JMax

答えて

1

を私たちのチャットに続き、ここでの最終的なコードですよろしく、

最大

+0

+1しかし、 'While ... Wend'は廃止予定です。 VBAヘルプ:「Do ... Loopステートメントは、ループを実行するためのより構造化された柔軟な方法を提供します。 While ... Wendを "エミュレート"するには、Do While ... Loopを使用します。 –

+0

Jean-Françoisが私にそれを指摘してくれてありがとう。私はそれを修正するために自分の投稿を編集します。 – JMax

関連する問題