こちらのサイトさまで公開されている、
エクセルでのメール送信VBAを利用させていただいております。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_080.html
添付ファイルを選択した後に、
「メールを送信します。
SMTP,発信者,宛先等は正しいですか?」という
メッセージが表示されますが、
このメッセージが出る前に、
選択したファイルを自動的に開くことは可能でしょうか?
(確認のために表示させたいです・・・)
あと送信数が一定数を超えるとエラーになってしまいます。
(途中でアドレスが途切れてしまう)
これの解消方法ってありますでしょうか?
どうぞよろしくお願いいたします。
とりあえず、最初の質問に対する答えです。
Sub test2() Dim MailSmtpServer As String Dim MailFrom As String Dim MailTo As String Dim MailSubject As String Dim MailBody As String Dim MailAddFile As Variant Dim strMSG As String Dim apendFile As Variant MailAddFile = Application.GetOpenFilename("全てのファイル (*.*),*.*", , _ "添付ファイルを選択して下さい。", , True) For Each apendFile In MailAddFile If InStr(UCase(apendFile), ".PDF") > 0 Then CreateObject("WScript.Shell").Run "AcroRd32.exe """ & apendFile & """" Else MsgBox appendFile & "を添付します。" End If Next MailSmtpServer = Cells(1, 2).Text ' SMTPサーバ MailFrom = Cells(2, 2).Text ' 発信者 MailTo = Cells(3, 2).Text ' 宛先 MailSubject = Cells(4, 2).Text ' 件名 MailBody = Cells(5, 2).Text ' 本文 ' メール送信(CC,BCCはブランク) strMSG = SendMailByCDO(MailSmtpServer, MailFrom, MailTo, "", "", _ MailSubject, MailBody, MailAddFile) ' 文字コードを任意に指定する場合は以下のようにします。 ' strMSG = SendMailByCDO(MailSmtpServer, MailFrom, MailTo, "", "", _ MailSubject, MailBody, MailAddFile, cdoISO_2022_JP) If strMSG <> "OK" Then MsgBox Mid(strMSG, 3) End Sub
pdf は開くようにしてみました。
2点目は推測ですが、途切れたところまでの文字の数はどのくらいでしょうか。
これが256文字である場合、オブジェクトを利用する上での制限であるかもしれません。
(外れていたらすみません。)
その場合、メールを個別に送るようにすれば回避できるかもしれませんが、
それでも構わないでしょうか。
その場合、
strMSG = SendMailByCDO(MailSmtpServer, MailFrom, MailTo, "", "", _ MailSubject, MailBody, MailAddFile)
の部分を
Dim oneAddress As Variant For Each oneAddress In Split(MailTo,",") strMSG = SendMailByCDO(MailSmtpServer, MailFrom, CStr(oneAddress), "", "", _ MailSubject, MailBody, MailAddFile) Next
のようにしてどうでしょうか。
Mookさま
どうもありがとうございます。
出来ました。
送信エラーチェックは今後試してみます。