サイトアイコン あきらちんの技術メモ

EXCEL VBAでメール一括配信!添付ファイルも付けられるよ その2

はじめに

以前に公開したメール一括配信では、BASP21を利用したもので、Excelが32ビット限定でした。

今回は「CDO.Message」を利用して配信できます。Excelが64ビットでも利用できます。添付ファイルも同様に対応しています。

ダウンロード

 

ちょこっと解説

上記よりダウンロードして直接みていただければと思いますが、今回の大きな変更点は、標準モジュールのMailSendファンクション部分です。

BASP21を利用したときは以下の1行でよろしくやってくれましたが、

ret = SendMail(szServer, mailTo, szFrom, szSubject, szBody, szFile)

次の内容で置き換えております。

    Set objMessage = CreateObject("CDO.Message")
    objMessage.From = szFrom
    objMessage.To = mailTo
    'objMessage.Cc = MailCc
    objMessage.Bcc = mailBcc
    objMessage.Subject = szSubject
    objMessage.BodyPart.Charset = "ISO-2022-JP"    '' 文字化け対策
    objMessage.TextBody = szBody
    ' 添付ファイル
    If Len(fileBuf) > 0 Then
        szFile = Split(fileBuf, vbCrLf)
        For i = LBound(szFile) To UBound(szFile)
            objMessage.AddAttachment (szFile(i))
        Next i
    End If
    objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = szServer
    objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = szPort
    If authId <> "" Then
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = authId
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = authPass
    End If
    objMessage.Configuration.Fields.Update
    ret = objMessage.Send()
    Set objMessage = Nothing

添付ファイルは、objMessage.AddAttachment を何度も実行することで複数追加できます。

上記のコード以外にもちょこちょこ修正していますので、前回のものを修正しようと思っている方はご注意ください。

 

最後に

それからメールアドレスやメールの内容を間違わないように十分にご注意ください。間違っても私の責任ではございませんので(⌒ω⌒;)

 

モバイルバージョンを終了