「山田君と音無さんのパソコンにエクセルのファイルをメールするので

 天真さんは音無さんのパソコンで見て下さい」ポチっと塾長がパソコンを操作。

二人は、メールに添付されているファイルを、パソコンに保存して開きます。

開いてみると、一枚のシートとマクロのボタンが一つ

 

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の操作)  

 でも紹介してあります。