excelで仕事のタスク管理を試してみてるのだが
報告用メールをvbaでさらっと作成できないかなぁ
と思って調べながら作ってみた。
メールを送信するのではなく、新規作成段階で止めたかったので以下のようになりますた。
Option Explicit Public Sub CreateMail_Click() Dim mapiSession As Object Dim mapiMessages As Object ActiveWorkbook.Save Set mapiSession = CreateObject("MSMAPI.MAPISession") Set mapiMessages = CreateObject("MSMAPI.MAPIMessages") mapiSession.SignOn With mapiMessages .SessionID = mapiSession.SessionID .Compose ' .AttachmentPathName = ActiveWorkbook.FullName .MsgSubject = getSubject .MsgNoteText = getBody Dim toAddress As Variant Dim i As Integer toAddress = getAddress For i = 0 To UBound(toAddress) .RecipIndex = i .RecipType = 1 .RecipAddress = toAddress(i) .ResolveName Next i ' .Send (False) .Send (True) End With mapiSession.SignOff End Sub Private Function getAddress() As Variant Dim add As String add = "foo@com, bar@com" getAddress = Split(add, ",") End Function
デフォルトのメールアプリをいつも使ってるbeckyに変更。
あとは、[MSMAPI.MAPISession]、[MSMAPI.MAPIMessages]で実装可。
宛先が複数となる場合は
[RecipIndex]で配列化すると、うまくいく。