「山田君と音無さんのパソコンにエクセルのファイルをメールするので
天真さんは音無さんのパソコンで見て下さい」ポチっと塾長がパソコンを操作。
二人は、メールに添付されているファイルを、パソコンに保存して開きます。
開いてみると、一枚のシートとマクロのボタンが一つ
C5セルには 関数で =C7&CHAR(10)&C8&C9
※CHAR(10)は、改行マークです。覚えておいてください。
C5セルの、関数の結果はじっくりと考えてみて下さい。
VBエディターで、コードを確認すると以下の通りです。
Sub ボタン1_Click()
Dim oApp As Object
Dim objMAIL As Object
Set oApp = CreateObject("Outlook.Application")
'OutLookを制御できるようにする
Set objMAIL = oApp.CreateItem(0)
objMAIL.to = Range("C3").Value
objMAIL.Subject = Range("C4").Value
objMAIL.Body = Range("C5").Value
objMAIL.Send
End Sub
「C3セルに、自分のメールアドレスでも入れて、ボタンをクリックしてみて下さい」と塾長
さて、OutLookを起動して、送受信を行ってください。
送信済みアイテムと受信トレイに、件名と本文のメールが届いています。
上から順番に説明していきます。
Dim oApp As Object 変数の型の指定
oApp と云う変数を Object(オブジェクト型)
Object(オブジェクト型)には、Range、Sheet,Workbookなどを覚える事が出来ます。
※エクセルVBAでは、省略しても構いません。
他のVB系のプログラムでは必須になる場合もありますので、きちんと書いておく癖をつけておきましょう。
Set oApp = CreateObject("Outlook.Application")
今回は、oApp には、OutLookの機能を入れてしまいます。
※Object(オブジェクト型)変数に、内容を入れる場合は、 Set を付けます。
Set objMAIL = oApp.CreateItem(0)
.CreateItem(0)は新規メールの作成 の操作です。
作成した新規メールもobjMAIL に入れてしまいます。
.CreateItem(0)は、OutLookのVBAのコードですので、oApp.CreateItem(0) と先に
準備した oApp の変数を使います。
次に、作成した新規メールに、宛先や件名、本文を入れていきます。
objMAIL.to = Range("C3").Value
objMAIL.Subject = Range("C4").Value
objMAIL.Body = Range("C5").Value
作成した objMAILの objMAIL.to がメールアドレス
objMAIL.Subject が件名
objMAIL.Body が本文 です。最後に
objMAIL.Send で送信ボタンをクリックしろ!! です。
'OutLookを制御できるようにする の
’(コーテーションマーク)で始まる行は説明文で、プログラムの実行には
何の関係もありません。(正しくは、コメントアウト と呼びます。)
特に、長いコードを記述する場合は、分かり易くするためにも記述しておきましょう。
「山田君、天真さん、理解できる。急にObject(オブジェクト型)変数使っちゃいましたけど」
「oApp の変数って、絶対に必要なのですか?」天真さん
「良い質問ですね」
実は
Set objMAIL = CreateObject("Outlook.Application").CreateItem(0)
でも大丈夫です。
しかし、CreateObject("Outlook.Application"). を何度も使用する場合は
変数(oApp)を使用した方がコードがシンプルになります。
先に紹介した With~EndWith と同じです。
これも、分かりやすくするコツと云う事で覚えておいてください。
Set objMAIL = oApp.CreateItem(0)
の部分は、後で
objMAIL.to = Range("C3").Valueなどの使い方をしますので、変数に代入する事が必須になります。
理解だけ出来れば、OKですので、実際に使用する時はコピーして使いましょう。
※コードのスペルを覚える必要はありません。(これ重要です。)
※実は、過去の投稿
エクセル勉強会 上級者① エクセルVBAでメール送信(OutLookの操作)
でも紹介してあります。