2017-04-26 7 views
0

でOutlookの添付ファイルの名前を変更し、私は特定の場所に添付ファイルを保存し、「name.xls」保存と静的な名前

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
Dim objAtt As Outlook.Attachment 
Dim saveFolder As String 
saveFolder = "C:\Users\acheng\Desktop" 
    For Each objAtt In itm.Attachments 
      objAtt.SaveAsFile saveFolder & "\name.xls" 
      Set objAtt = Nothing 
    Next 
End Sub 

ユーザーはでこのスレッドに非常によく似た何かをしたために、それをリネームし、このコードを持っています.CSVファイル:

VBA Outlook - Rename attachments and save to folder

私は、.xlsファイルを除いて、同じことをしました。

私のスクリプトはファイルを保存して名前を変更しますが、ファイルを開こうとすると、「 'name.xls」はファイル拡張子で指定されたものとは異なる形式です。 "

「はい」をクリックすると、すべてのデータが奇妙なシンボルになります。 & '\ name.xls'を '& objAtt.DisplayName'に置き換えると、元の名前でファイルが適切に保存されます。

これが.xlsファイルであることを二重にチェックしました。もっと普遍的なものを考え出すと(.xls .xlsxと.xlsmで同じスクリプトが動作するように)、大きな助けになるでしょうが、大きな優先事項ではありません。

答えて

1

添付ファイルが複数ある場合は、Excelの添付ファイルを他の添付ファイルの1つに置き換える可能性があります。

はあなたがここにいくつかの検証を追加する必要があり

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

    i=0 
    saveFolder = "C:\Users\acheng\Desktop" 
    For Each objAtt In itm.Attachments 
      i = i + 1 
      objAtt.SaveAsFile saveFolder & "\name" & i & ".xls" 
      Set objAtt = Nothing 
    Next 
End Sub 

を見つけるために、このような何かを試してみてください。すべての添付ファイルがExcelファイルであると仮定すると、大きなリスクになります。

+0

これは機能しました。問題は、電子メールに添付ファイルが1つしかないと仮定している間に、送信者の電子メール署名に小さな画像が含まれていたことです。このスクリプトは添付ファイルをname.xlsとして保存してから、最初に画像を上書きしていました。妥当性検査ではどういう意味ですか、ダウンロードしたファイルの添付ファイルをダウンロードするような方法でフィルタリングする方法はありますか? – user7926636

+0

@ user7926636ユースケース選択は、特定のファイルタイプのみを保存するために使用します。http://stackoverflow.com/a/43180639/4539709 – 0m3r

関連する問題