LoginSignup
3
8

More than 5 years have passed since last update.

VBA で Outlookからメールを送信する定型文を作成

Last updated at Posted at 2017-06-08

いきさつ

Outlookで定型的なメールを送る際、いちいちアドレスを宛先に入れることが面倒だったので、自動化したいと思ったため

VBAの基礎知識

  • 基本構文
    例: ブック”study.xlsmのワークシート”Sheet1”のセルA1を選択する
Workbooks("study.xlsm").Worksheets("Sheet1”).Range("A1").Select

  

  • メソッドの書き方例
    例: セルA1を選択する
Range("A1").Select

 

  • プロパティの設定
    例:セルA1の値を設定する
Range("A1").value

※ プロパティ
Excelではセルの内容や背景色、フォントサイズなど色々。

  • マクロ名の宣言
Sub {マクロ名}()  
{マクロの処理}  
End Sub  
  • 変数の宣言
 Dim 変数名 [As データ型] 

※ データ型

データ型 名称 格納できる値
String 文字列 最大約20億文字まで
Integer 整数型 -32,768~32,767の整数
Long 長整数型 -2,147,483,648~2,147,483,647の整数
Date 日付型 西暦100 年1月1日~西暦9999年12月31日までの日付と時刻
 Object オブジェクト型 オブジェクト
 Variant バリアント型 ★すべてのデータ

★とても便利な バリアント型
すべてのデータを格納できるので、とりあえず型は覚えなくても書ける。
型を省略して書くと、バリアント型となる。

  • 変数への代入
変数名 = データ

ただし、オブジェクト型の変数に代入するときはSetを使う

Set 変数名 = データ

本題

ExcelのボタンでOutlookのメール作成を自動化するVBA


Sub MakeMail()
    ' Outlookのメールを作成する
    Dim ol As Object

    ' 起動しているOutlookを取得する
    Set ol = GetObject(, "Outlook.Application")
    If ol Is Nothing Then Exit Sub ' Outlookが起動していない場合、終了する


    ' メールを作成する
    With ol.CreateItem(0)
        .To = Worksheets("基本設定").Range("C4").Value         ' 宛先
        .CC = Worksheets("基本設定").Range("C5").Value         ' CC
        .BCC = Worksheets("基本設定").Range("C6").Value        ' BCC
        .Subject = Worksheets("基本設定").Range("C7").Value    ' 件名
        .Display                        ' 表示

        Dim tuki
        tuki = Month(Date) & "月"



       .Body = Worksheets(tuki).Range("G2").Value & Worksheets("基本設定").Range("C8").Value    '本文

    End With

    Set ol = Nothing
End Sub

以上のようなものを作りました。
参考サイトはこちら 意外となんとかなる日記
変数名をどうにかしたかったけれど、とりあえずこれで。

※ "基本設定"シートに以下の画像のようなデータがあるとする。
Excel.PNG

ソースコードの説明

  • GetObject([pathname] [,class])

    オブジェクトを参照するメソッド。Outlookを参照を取得するときには引数classに"Outlook.Application"、Excelの参照を取得するときには"Excel.Application"と指定する。  
    参照終了後はオブジェクト型変数にNothingを代入して、解放するようにすること。  
      

  • Application.CreateItem(Item Type)

    既定の Outlook アイテムのみを作成するメソッド。作成することができるアイテムは以下の通りらしい。

アイテム 定数
メール 0
予定表 1
連絡先 2
仕事 3
履歴 4
メモ 5
投稿 6
配布リスト 7

参考サイトhttp://d.hatena.ne.jp/ken3memo/20090425/1240642355

※定数とは
この引数(数値)を与えたら、こういう動作をさせると決められているもの。

  • Date
    現在の日付を取得する関数。
Year(Date) '今年の年を取得
Month(Date) '今の月を取得

今回は下記画像のように月ごとのワークシートごとを作っていたので、今月のワークシートを対象にするために、変数tukiにデータを格納しました。
Excel2.PNG

  • With
    Withを使うことで、コードをすっきり書くことができる。例えば、あるセルのデータを、同じワークシート上にあるセルに代入するとき、何度もワークシート名を書くのは面倒(下記コードで言うと、ActiveSheetと何度も書かなければならない)。
Sub 支払期日設定()
    ActiveSheet.Range("A1").value=ActiveSheet.Range("A2").value + 14
End Sub

そこでWithを使うと、ワークシート名を省略することができる。

Sub 支払期日設定()
    With ActiveSheet
            .Range("A1").value =.Range("A2").value + 14
    End With
End Sub
3
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
8