OutlookをVBAで操作するコードの改良を考えてみました
前回ExcelVBAでOutlookの送信メールを作成するでOutlookのメールを作成するコードを紹介しましたが、ご質問いただいた内容があったので修正を兼ねてより詳しいVBAコードを紹介します。
VBAで操作できるOutlookのMailItemプロパティ
調べてみるとプロパティ自体はたくさんあるのですが、もともとほぼ使用しないものも多いみたいです。
その中でよく使うものを挙げてみます。
①DeferredDeliveryTime
配信する日時を指定するプロパティです。
”2017/07/02 0:00”の形式で指定するとその時間が過ぎてから送信されます。
②BCC
BCCを設定するプロパティです。
ToやCCと同じように登録されている名前かもしくはメールアドレスで指定できます。
③BodyFormat
本文テキストの形式を示します。
以上の3種類を指定できます。
どうやら本文の内容を記載するときにHTMLBodyで指定する際は最初にこのプロパティをolFormatHTMLに指定しておく方が良さそうな気がします。
④Body
外部の方にメールを送る際に、HTML形式だときちんと表示されない場合があります。
そういった際はリッチテキスト形式やテキスト形式で送るときちんと表示されることが多いです。
リッチテキスト形式・テキスト形式でのメールの本文はBodyで記載します。
⑤SendUsingAccount
複数のアカウントを持っているときに、アカウントの切り替えを行います。
Session.Accounts(“アカウント名”)の形式で記載します。
スポンサーリンク
Outlookメール送信用のVBAサンプルコード
今回のプロパティの設定を盛り込んだメール作成のVBAサンプルコードを紹介します。
以下のように作成したExcelのシートの内容をOutlookのメールに反映するプログラムになっています。
Sub Outlookを起動してメール作成3()
Dim oApp As New Outlook.Application
Dim oItem As Outlook.MailItem
Dim i As Integer
Dim WSH As Variant
Set WSH = CreateObject(“Wscript.Shell”)
Dim DesktopPath As String
DesktopPath = WSH.SpecialFolders(“Desktop”) ’デスクトップのパスを取得します。
i = 2
Do Until Cells(i, 1) = “” ’セルの1列目が空欄になるまで繰り返します
Set oItem = oApp.CreateItem(olMailItem)
oItem.To = Cells(i, 1) ’宛先は氏名を入れて「名前の確認」をクリックすることでアドレス一覧から選択できます。
oItem.CC = Cells(i, 2)
oItem.BCC = Cells(i, 3)
oItem.Subject = Cells(i, 4)
oItem.BodyFormat = olFormatRichText
oItem.Body = Cells(i, 1) & “様” & vbLf & vbLf & _
“いつもお世話になっております。” & vbLf & Cells(i, 5) & vbLf & vbLf
’1行目に宛先の名前を持ってきて「様」をつけます。
If Cells(i, 6) <> “” Then ’添付ファイルが記載されているなら
oItem.Attachments.Add DesktopPath & “” & Cells(i, 6) ’ファイルを添付します
End If
’oItem.DeferredDeliveryTime = Year(Cells(i, 7)) & “/” & Month(Cells(i, 7)) & “/” & Day(Cells(i, 7)) & ” ” & _
Hour(Cells(i, 8)) & “:” & Minute(Cells(i, 8)) & “:” & Second(Cells(i, 8))
oItem.DeferredDeliveryTime = Year(Cells(i, 7)) & “/” & Month(Cells(i, 7)) & “/” & Day(Cells(i, 7)) & ” ” & _
Hour(Cells(i, 8)) & “:” & Minute(Cells(i, 8))
oItem.SendUsingAccount = Session.Accounts(Cells(i, 9).Text) ’セルの値は「.Text」にしないと型が一致しない
oItem.Display
i = i + 1
Loop
End Sub
Dim oApp As New Outlook.Application
Dim oItem As Outlook.MailItem
Dim i As Integer
Dim WSH As Variant
Set WSH = CreateObject(“Wscript.Shell”)
Dim DesktopPath As String
DesktopPath = WSH.SpecialFolders(“Desktop”) ’デスクトップのパスを取得します。
i = 2
Do Until Cells(i, 1) = “” ’セルの1列目が空欄になるまで繰り返します
Set oItem = oApp.CreateItem(olMailItem)
oItem.To = Cells(i, 1) ’宛先は氏名を入れて「名前の確認」をクリックすることでアドレス一覧から選択できます。
oItem.CC = Cells(i, 2)
oItem.BCC = Cells(i, 3)
oItem.Subject = Cells(i, 4)
oItem.BodyFormat = olFormatRichText
oItem.Body = Cells(i, 1) & “様” & vbLf & vbLf & _
“いつもお世話になっております。” & vbLf & Cells(i, 5) & vbLf & vbLf
’1行目に宛先の名前を持ってきて「様」をつけます。
If Cells(i, 6) <> “” Then ’添付ファイルが記載されているなら
oItem.Attachments.Add DesktopPath & “” & Cells(i, 6) ’ファイルを添付します
End If
’oItem.DeferredDeliveryTime = Year(Cells(i, 7)) & “/” & Month(Cells(i, 7)) & “/” & Day(Cells(i, 7)) & ” ” & _
Hour(Cells(i, 8)) & “:” & Minute(Cells(i, 8)) & “:” & Second(Cells(i, 8))
oItem.DeferredDeliveryTime = Year(Cells(i, 7)) & “/” & Month(Cells(i, 7)) & “/” & Day(Cells(i, 7)) & ” ” & _
Hour(Cells(i, 8)) & “:” & Minute(Cells(i, 8))
oItem.SendUsingAccount = Session.Accounts(Cells(i, 9).Text) ’セルの値は「.Text」にしないと型が一致しない
oItem.Display
i = i + 1
Loop
End Sub
コメント