スポンサーリンク

Excel VBAでOutlookメールを送る2

Outlook

前回はPower Automate Desktopでの作成方法を勉強しました。前回の記事はこちらです。

今回からはいよいよExcel VBAでの作成の仕方を勉強していきます。コードの書き方は異なりますがプログラムのフローは基本同じです。

Power Automate Desktopで作成できれば流れはつかみやすいと思いますが作れない方でもわかるように説明していきます。

スポンサーリンク

■今回の流れ

  1. Excelを起動する
  2. Excelのワークシート内のB2~B7セルの情報を取得し、変数として保持する

■コード

'Excelファイルを開く
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\Public\報告メール.xlsx")

'変数を定義する
Dim toStr As String 'To
Dim ccStr As String 'Cc
Dim bccStr As String 'bcc
Dim subjectStr As String '件名
Dim bodyStr As String '本文
Dim attach As String '添付ファイル

'Excelワークシートから値を読み取る
toStr = wb.Worksheets("Sheet1").Range("B2").Value
ccStr = wb.Worksheets("Sheet1").Range("B3").Value
bccStr = wb.Worksheets("Sheet1").Range("B4").Value
subjectStr = wb.Worksheets("Sheet1").Range("B5").Value
bodyStr = wb.Worksheets("Sheet1").Range("B6").Value
attach = wb.Worksheets("Sheet1").Range("B7").Value

■コードの説明

Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\Public\報告メール.xlsx")

「エクセルを起動する」で勉強したコードです。詳しくは以下をご確認ください。ファイルの記載はC:\Users\Public\報告メール.xlsxのようにフルパスを記載します。

Dim toStr As String 'To

今回To: Cc: Bcc: 件名: 本文: 添付ファイル:をそれぞれ上の変数として定義しました。Stringは文字列という意味です。

変数の型をわかるようにしておくと処理も早くなりますし、見た人にもわかりやすくなります。

変数名のつけ方についてはまた説明します。

toStr = wb.Worksheets("Sheet1").Range("B2").Value

右辺は「Excelワークシートから読み取り」で勉強したコードです。詳しくは以下になりますが少し追記します。

このコードはToStrに対して wb.Worksheets(“Sheet1”).Range(“B2”)にあるセルの値を取得して代入しなさいという意味を表しています。

なお今回マクロを記載しているWorkbook(=エクセルファイル)とOutlookの記載に必要な情報が入ったWorkbookは違うものです。マクロの入ったWorkbookと違うWorkbookを選択する際はちゃんとWorkbookから指定しなくてはいけません(オブジェクトについてはこちら 大雑把に言うと違う県に郵送する場合は県から住所を記載しないといけないようなものです)。

今回報告メール.xlsxのファイルwbと定義したのでwb.Worksheets(“Sheet1”)と書くことができます。最初に定義しておくと何回もフルパスで住所を指定をする必要がないので便利です。

オブジェクトの定義の後にValueプロパティを追加して値の取得を行います。

これらの値を随時それぞれの変数に代入していくことが今回のコードになります。

■ここでのポイント

今回は「Excelを起動」して「値を取得する」ということを行いました。この値を次回以降Outlookに貼り付けていきますが基本の操作なので使えるようになっていただければ幸いです。

コメント

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