【サンプルファイルあり】添付ファイル付きメールを自動で作成する方法【ExcelVBA】

【ExcelVBA】添付ファイル付きメールを自動で作成するExcel VBA
スポンサーリンク

Excel VBAでOutlookのメールを添付ファイル付きで自動作成する方法を解説します。

スポンサーリンク

実際のコード

早速ですが実際のコードはこちら。

Sub mail_create()
    
'--- Outlook操作のオブジェクト ---
    Dim objOutlook As Object
    Set objOutlook = New Outlook.Application
    
'--- メールオブジェクト ---
    Dim objMail As Object
    Set objMail = objOutlook.CreateItem(olMailItem)
        
'--- メールの内容を格納する変数 ---
    Dim toStr As String 'to(宛先)
    Dim ccStr As String  'cc(ccの宛先)
    Dim bccStr As String  'bcc(bccの宛先)
    Dim subjectStr As String 'メールの件名
    Dim bodyStr As String  'メールの本文
    Dim attachmentPath As String  '添付ファイルのパス


'---Excelから情報取得---
'セルは適当に入れています。Excel内にある場合は実際のセルに設定してください。
        toStr = Range("A1").Value
        ccStr = Range("A2").Value
        bccStr = Range("A3").Value
        subjectStr = Range("A4").Value
        attachmentPath = Range("A5").Value
      
  
'--- メールの内容をセット ---
'上のセルから取得もできますが、コードに書き込んでも可能です。
'どちらか一方を使ってください。
    'to宛先をセット
    toStr = "abc@gmail.com"
    
    'ccをセット
    ccStr = "abc@gmail.com"
    
    'Bccをセット
    'bccStr = "abc@gmail.com"
    
    '--- 件名の内容 ---
    subjectStr = "メールの件名を入力します。"
    
    '--- 本文の内容 ---
    bodyStr = "本文を入力します。"
        
'--- メールを作成 ---
    objMail.To = toStr
    objMail.CC = ccStr
    objMail.BCC = bccStr
    objMail.Subject = subjectStr
    objMail.BodyFormat = olFormatPlain 'メールをテキスト形式に設定
    objMail.Body = bodyStr

 '添付ファイルパスが空白の場合にスルーする
    If attachmentPath = "" Then
    
    Else
     objMail.Attachments.Add (attachmentPath)
    End If
   
    
'--- メールを表示 ---
    objMail.Display
    
'--- メールを送付 ---
    'objMail.Send
        
End Sub

解説

参照設定

参照設定にはこちらを必ず入れてください。

  • ”Microsoft Outlook 16.0 Object Library”

添付ファイルのパス

添付ファイルのパスはフルパスで指定してください。

メールの形式

メールをテキスト形式やHTML形式などが設定できます。本文をHTMLで作成する場合などはHTMLにしておきましょう。

また、企業のセキュリティポリシーなどで、HTMLメールでの送信が禁止されている場合もあります。そうした場合には、テキスト形式などへ設定しておきましょう。

内容コード
HTML形式objMail.BodyFormat = olFormatHTML
テキスト形式objMail.BodyFormat = olFormatPlain
リッチテキスト形式objMail.BodyFormat = olFormatRichText
形式の指定なしobjMail.BodyFormat = olFormatUnspecified

メールの表示と送信

メールを作成した後に、送信をさせるかどうかを設定できます。

メールを表示させずに送信する場合は”objMail.Send”を使いますが、作成されたメールを送信前に確認することができません。最初の1つ目などは誤送信を防いだり誤字のチェックなどのために、”objMail.Display”で一度作成して内容を確認することをおすすめします。

内容コード
メールを送信せず表示させるobjMail.Display
メールを表示させず送信するobjMail.Send

サンプルファイル

下のダウンロードボタンからサンプルファイルがダウンロードできます。

参考

Excel VBAプログラミング
スポンサーリンク
ふーログをフォローする
この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
ふーログ

コメント

タイトルとURLをコピーしました