2016-05-18 37 views
4

ボタンをクリックするだけで、Outlookで自動化された電子メールを送信するマクロを作成しました。ファイルをメールに添付する方法が分からない限り、すべてがスムーズに実行されます。私が見たどこでも、電子メールにファイルを添付するためのサンプルコードは静的な名前付きファイルのためのもので、毎回同じパスで同じファイル名を送信しています。VBAを使用してExcel添付ファイルをExcelから送信

このマクロを実行するボタンは、添付しようとしているブック内にあります。 Windowsエクスプローラウィンドウを開くのが最も簡単で、その方法でファイルを添付するのが一番良いかどうかはわかりません。

Dim objOutlook As Outlook.Application 
Dim objOutlookMsg As Outlook.MailItem 
Dim objOutlookRecip As Outlook.recipient 
Dim objOutlookAttach As Outlook.Attachment 
Dim WeekendingDate As Date 

With Worksheets("Macro Buttons") 
    WeekendingDate = Range("N2").Value 
End With 

Set objOutlook = CreateObject("Outlook.Application") 

Set objOutlookMsg = objOutlook.CreateItem(olMailItem) 

With objOutlookMsg 
    Set objOutlookRecip = .Recipients.Add("[email protected]") 
    objOutlookRecip.Type = olTo 
    .Subject = "Blah " & WeekendingDate 
    .Body = "blah blah blah" 

「のメッセージ に添付ファイルを追加[いくつかのコード]

For Each objOutlookRecip In .Recipients 
     objOutlookRecip.Resolve 
    Next 
    If DisplayMsg Then 
     .Display 
    Else 
     .Save 
    End If 
End With 
Set objOutlook = Nothing 
End Sub 

答えて

5

あなたはMailItemのセットアップに挿入Attachments.Addコード必要があります。私自身のスクリプトのいずれかで

With objOutlookMsg 
    Set objOutlookRecip = .Recipients.Add("[email protected]") 
    objOutlookRecip.Type = olTo 
    .Subject = "Blah " & WeekendingDate 
    .Body = "blah blah blah" 
'Add attachments to the message [some code] 
    .Attachments.Add "pathToFile" 
    For Each objOutlookRecip In .Recipients 
     objOutlookRecip.Resolve 
    Next 
    If DisplayMsg Then 
     .Display 
    Else 
     .Save 
    End If 
End With 
Set objOutlook = Nothing 

をI Dictionaryオブジェクトと次のコードを使用して添付するMailItemへの添付ファイルのコレクションを渡します。

With oMailItem 
     Set .SendUsingAccount = oOutlook.Session.Accounts.Item(iAccount) 
     .To = EmailData("To") 
     .CC = EmailData("CC") 
     .BCC = EmailData("BCC") 
     .Subject = EmailData("Subject") 
     .Body = EmailData("Body") 
     sAttachArray = Split(EmailData("AttachmentPaths"), ";") 
     For Each sAttachment In sAttachArray 
      .Attachments.Add(sAttachment) 
     Next 
     .Recipients.ResolveAll 
     .Display ' debug mode - uncomment this to see email before it's sent out 
    End With 
+0

"path to file"私のパスは動的なので何を入れるべきですか?ファイル名が変更されています – Davey

+0

添付ファイルとしてどのファイルを追加していますか? – Dave

+0

はExcelファイルです。私がクリックするコマンドボタンは、添付しようとしているブックの中にあります。 – Davey

関連する問題