検索

キーワード


目次

【Excel VBA】メール作成および選択した資料を添付する方法

  • 公開日:2021-03-26 17:00:20
  • 最終更新日:2021-03-23 15:53:23

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

はじめに

こんにちは。IMMRです。


Excel VBAでは、MicrosoftのOutlookの操作も出来ます。また、添付資料を付けてメール作成も出来ます。

以前にご説明した「【Excel VBA】フォルダー内のファイル名を全て取得する方法」を行うことで

より、効率的に選択した資料を添付してメールを作成することが出来ます。その方法について説明してきます。

ダイアログボックスより処理に必要なファイルを選択する方法


こちらでは、MicrosoftのOutlookを操作してメールを作成します。

そのため、Outlookがダウンロードされていることが前提になります。


1.VBAでOutlookを操作するために

ExcelのVBAでMicrosoftのOutlookを操作するには、VBAの詳細の設定が必要です。

下記のように「ツール」→「詳細設定を選択してください」 そうすると詳細設定画面が表示されます。


図1 詳細画面の表示方法詳細画面の表示方法

図2 詳細設定画面

詳細設定画面


そして、「Microsoft Office 16.0 Object Library」「Microsoft  Outlook 16.0 Object Library」を

選択(レ点を入れる)してOKを押します。

※選択する2つは、同じものに見えますが名前が違います。※OfficeOutlookです。


図3 選択する詳細設定1

選択する詳細設定1


図4 選択する詳細設定2

選択する詳細設定2


そして、図1で行ったように再度、詳細設定画面を表示して、

Microsoft Office 16.0 Object Library」「Microsoft  Outlook 16.0 Object Library」にチェックがついているか確認します。


図5 詳細設定画面

詳細設定画面


2.資料を添付したメールを作成する方法

メールを作成するのに記述するのは、大きく分けて2つです。

メールを操作するためのオブジェクトの作成

②作成するメールの詳細

です。


①メールを操作するためのオブジェクトの作成

コード①

Dim myOL As New Outlook.Application
Dim myMail As Outlook.MailItem
 
Set myMail = myOL.CreateItem(olMailItem)


Dim myOL As New Outlook.Application

 Outlook型の変数です


Dim myMail As Outlook.MailItem

 ・メールを表す型の変数です


Set myMail = myOL.CreateItem(olMailItem)

 メールを表す型の変数にCreateItemメソッドをsetします。 ※CreateItemはメールを操作するオブジェクトです


②作成するメールの詳細

コード②-1

myMail.To = "xxxxx"
myMail.CC = "xxxxx"
myMail.BCC = "xxxxx"
myMail.Subject = "xxxxx"
myMail.Body = "xxxxx"
myMail.BodyFormat = "xxxxx"
myMail.Attachments.Add Source:="xxxxx"
myMail.Display

※「①メールを操作するためのオブジェクトの作成」で記述した「Set myMail = myOL.CreateItem(olMailItem)」の続きです。


myMail.To = "xxxxx"  ※宛先者のメールアドレスを設定

myMail.CC = "xxxxx"  CCのメールアドレスを設定

myMail.BCC = "xxxxx"  ※BCCのメールアドレスを設定

myMail.Subject = "xxxxx"  メールの件名を設定

myMail.Body = "xxxxx"  メール本文を設定

myMail.BodyFormat = xxxxx  メール本文の形式を設定


メールの形式の設定は下記のとおりです。

メール形式内容
HTMLolFormatHTML
テキストolFormatPlain
リッチ テキストolFormatRichText

メール形式(リッチテキスト)で作成するためには、myMail.BodyFormat = olFormatRichTextとします。


myMail.Attachments.Add Source:="xxxxx"  はメールに添付する資料です。

もちろん、"C:\VBA\aaa.txt"といった感じで直接記述しても問題ありませんが、

添付資料が異なると毎回直す必要が出てきます。それだと手間がかかるので

そんな時は、ダイアログボックスを使って資料を選択するという方法が便利です。

詳しい方法は下記を参照。

ダイアログボックスより処理に必要なファイルを選択する方法


myMail.Display  では作成したメールを表示します。作成したものを送信する前の状態です。

作成したメールを目で確認して、最後にOutlook側の送信ボタンを押すという感じです。


確認もしないで送信したい場合は、「myMail.Sendを使用します。※ちょっと怖い感じがありますけど(汗


また、「コード②-1」のサンプルコードは、

下記のコードのようにWithステートメントを使用してオブジェクトを省略することが出来ます。

コード②ー2

        With myMail
            .To = "xxxxx"
            .CC = "xxxxx"
            .BCC = "xxxxx"
            .Subject = "xxxxx"
            .Body = "xxxxx"
            .BodyFormat = "xxxxx"
            .Attachments.Add Source:="xxxxx"
.Display End With


動作としてはコード②-1コード②ー2同じです。

ただし、オブジェクトが省略されているのでスッキリした構造になっています。


3.メール作成および選択した資料を添付するブック

上記、コードを直接入力してもメールを作成することは出来ますが、見た目をツールのようにするため作成しました。

作成したブックを以下のようになっています。


図6 ブック(メールを作成する)

ブック(メール作成)


宛先件名本文等メールに記載したい欄をD3~D7、D17に作成したので

入力した文字等よりメールが作成されるようになっています。 


メール形式は、3種類あると説明しました。

そのため、下記のようにプルダウンにして、選択出来るようになっています。


図7 ブック(メール形式)

ブック(メール形式)


添付資料ですが、ブックには直接記載していません。

「作成」ボタンを押すとダイアログボックスが表示され、そこで選択された資料が添付されます。


下記は、添付資料が投稿してあるフォルダーです。


図8 添付資料を選択するフォルダー



4.メール作成および選択した資料を添付するサンプルコード

メールを作成し、選択した資料を添付するサンプルコードを作成します。

2.資料を添付したメールを作成する方法で説明した

コード①」「コード②ー2」と

3.資料を添付したメールを作成するブックとサンプルコードで説明した

図6 ブック(メールを作成する)」「図7 ブック(メール形式)」「図8 添付資料を選択するフォルダー」より作成した

サンプルコードは以下になります。


サンプルコード

Sub test26()

    '添付する資料の名前
    Dim Filename As String

    'Outlook型の変数
    Dim myOL As New Outlook.Application
    
    'メールを表す型の変数
    Dim myMail As Outlook.MailItem
    
    '添付資料を選択するダイアログボックスを表示する
    With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = "C:\〇△プロジェクト"
        If .Show = 0 Then Exit Sub
            Filename = .SelectedItems(1)
    End With

    'CreateItemメソッドはメールを操作するオブジェクト
     Set myMail = myOL.CreateItem(olMailItem)

        With myMail
            'メールの宛先者にメールアドレスを設定
            .To = Range("D3")
            
             'メールのCCにメールアドレスを設定
            .CC = Range("D4")
            
            'メールのBCCにメールアドレスを設定
            .BCC = Range("D5")
            
            'メールの件名を設定
            .Subject = Range("D6")
            
            '本文を記入
            .Body = Range("D7")
            
            'メール本文の形式を選択する。
            Select Case Range("D17")
                Case "HTML"
                    .BodyFormat = olFormatHTML
                Case "テキスト"
                    .BodyFormat = olFormatPlain
                Case "リッチ テキスト"
                    .BodyFormat = olFormatRichText
            End Select
            
            'メールに資料を添付する。
            .Attachments.Add Source:=Filename
                        
            '表示する
            .Display
           
        End With

End Sub


    With Application.FileDialog(msoFileDialogFilePicker)

        .InitialFileName = "C:\〇△プロジェクト"

        If .Show = 0 Then Exit Sub

            Filename = .SelectedItems(1)

    End With

ダイアログボックスで選択されたファイルをFilename に格納します。

そして、「.Attachments.Add Source:=Filename」として、先ほど選択したファイルが

メールに添付されます。


Select Case Range("D17")

Case "HTML"

.BodyFormat = olFormatHTML

Case "テキスト"

.BodyFormat = olFormatPlain

Case "リッチ テキスト"

.BodyFormat = olFormatRichText

End Select

メール本文をブックで選択されたもので分岐するように作成しています。

"HTML"なら.BodyFormat = olFormatHTML

"テキスト"なら.BodyFormat = olFormatPlainna

"リッチ テキスト"なら.BodyFormat = olFormatRichText

という感じです。


5.メール作成および選択した資料を添付するブックとサンプルコードの実行

では、実際に実行して、資料を添付したメールを作成することが出来るか確認します。

上記、サンプルコードを使用します。

そして、ブックには、以下のように記載しています。


図9 ブック(必要事項の記載)

ブック(必要事項の記載)

「宛先」~「メール形式」までを記載しました。


では実際に「作成」ボタンを押して、サンプルコードを実行します。

実行したらまず、下記のように添付資料を選択するためのダイアログボックスが表示されます。

※ここでは「データemb076xte」を選択します。


図10 ダイアログボックス

ダイアログボックス



下記のようにブックに入力した項目および選択した資料が添付されたメールが作成されます。


図11 作成されたメール

作成されたメール


以下のようにメール形式も「リッチテキスト」になっています。


図12 作成されたメールの書式設定

作成されたメールの書式設定


メール作成および選択した資料を添付することが出来ました。


【著者】

Imamura

「挑戦心」を忘れずに、新しいことにチャレンジしています。 資格:VBAエキスパート Excel VBA(ベーシック/スタンダード) 等

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事