Outlookのメール送信マクロ作成方法とエラー解決方法

このQ&Aのポイント
  • Outlookのメール送信マクロを作成する方法と、うまく動作しない場合のエラー解決方法を解説します。
  • マクロ内で本文部分が正しく反映されない場合、コメント名やメッセージ生成部分の記述に問題がある可能性があります。
  • また、メールの宛先やCC、BCCの設定にも注意が必要です。
回答を見る
  • ベストアンサー

Outlookのメールを送信するマクロ

お世話になっております。 Microsoft Outlook2003使用で メール送信のマクロを見様見真似で作ってみたのですが、本文部分がうまくいきません(Best regardsしか表示されません)。 どうすれば正しく反映されるでしょうか? シートのB1にToアドレスを記入していてTo_addressと名前付 以下、Cc_addressとSubjectも同様にしています。 本文の文章は何行かあり、途中で空白行も入れたいのですが、そこまでまだ手がつけられていません。 本文の文章が3行あるとすると、このマクロではComment1、Comment2、Comment3と名前付しています。 Sub SendEmail() Dim OlApp As Outlook.Application Dim mItem As Outlook.MailItem Dim cell As Range Dim Subj As String Dim EmailAddr As String Dim Recipient As String Dim Msg As String Dim Message As String Dim Sender As String Dim Comments As String Dim Comments2 As String Dim report As String Worksheets("Sheet1").Activate 'Create Outlook object  Set OutlookApp = New Outlook.Application 'Get the data Subj = Range("Subject") EmailAddr = Range("To_address") CCAddr = Range("Cc_address") Body = Range("Comment1") & ("Comment2") & ("Comment3") 'Compose message Msg = Msg & Comment1 & vbCrLf & vbCrLf Msg = Msg & Comment2 & vbCrLf & vbCrLf Msg = Msg & "Best regards," & vbCrLf & vbCrLf 'Create Mail Item Set mItem = OutlookApp.CreateItem(olMailItem) With mItem .To = EmailAddr .CC = CCAddr .BCC = BCCAddr .Subject = Subj .Body = Msg .Display End With End Sub 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 >Msg = Msg & Comment2 = "<BR>" & "<A HREF=""http://検索</b></A> " 落ち着いて!                「= 」が入ると、False になります。 'Compose message Msg = "<font face=""Arial""><font size=2>" Msg = Msg & Comment1 & "<BR><BR><BR>" Msg = Msg & Comment2 & "<A HREF=""http://google.co.jp/""><b>goole検索</b></A> " Msg = Msg & Comment3 & "<BR><BR><BR>" Msg = Msg & Comment4 & "<BR><BR><BR><BR>" Msg = Msg & "Best regards," & "<BR><BR>" Msg = Msg & "</font></font>"  "<A HREF=""http://google.co.jp/""><b>goole検索</b></A> "             ↑            ↑        リンク先アドレス     リンク名 (表示はずれるかもしれません)

515131
質問者

お礼

一人でテンパッてしまってすみません。。。 そうですよね、=じゃだねですよね。。 'Compose message Msg = "<font face=""Arial""><font size=2>" Msg = Msg & Comment1 & "<BR><BR><BR>" Msg = Msg & Comment2 & "<BR><BR><BR>" Msg = Msg & Comment3 & "<A HREF=""http://**web:858/sites/~%7d""></b></A> " & "<BR><BR>" Msg = Msg & Comment4 & "<BR><BR><BR><BR>" Msg = Msg & "Best regards," & "<BR><BR>" Msg = Msg & "</font></font>" とやるとリンクではなく文章に。。。 上記マクロではシェアポイントのアドレスはhttpから始まって長々3行程で最後の文字が7dです。 PCにも疎かった私が、仕事で突然マクロを作成する業務を与えられ右も左もわからない状態で。。。 本を買って一から初めているのですが全然馴染めなくて、それでここのサイトでお世話になる事3回目なのですが、文字の羅列やらで本当にテンパってしまっているうえに何回も質問して本当にすみません。。。 Wendy02さんにも本当に感謝しております。あともう少し、お付き合いいただければ幸いです。 すみません・・・宜しくお願い致します!

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 >出来ました!! >アドレスをテキスト形式で定義し直して そうですね。そのほうが、コードでごちゃごちゃ書くよりも、確かです。 出来たそうで、良かったですが、こちらから、少しお聞きしたいのですが。 実は、こちらは、そうしたシステムを構築する話を聞かれたのですが、管理する側の問題もあって、やめておいたらと言ってしまったのです。 実は、私は、SharePointは、使ったことがありません。サーバー自体にセキュリティがある限りは、直ハイパーリンクを書いても、サーバーの中から外には出来ても、外から中には出来ないのではありませんか。試したことがないので、これに関しては、良く分かりません。

515131
質問者

お礼

こんにちは。 ネットやPCに関して詳しくないのできちんと回答できているかわからないですが・・・ 私の今回のsharePointは社内のある部が所有・管理しているもので、そこに対してのアクセス権限を付与されていればアクセスできるものなので、おそらくWendy02さんが想像されているようなアドレス同士(ネット同士)ではありません。 なのでサーバーの中から外には出来ても、外から中には出来ないのではというのとは違い社内レベルです。 回答になっていますかね? なっていなかったらすみません。。。

515131
質問者

補足

お返事がないので大丈夫だったでしょうか? 締め切りボタンを押しますので、お礼をと思いまして。 どうもありがとうございました!!

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 >リンクではなく文章に。。。 文章が対象とされてしまうということですね。 >Msg = Msg & Comment3 &"<A HREF=""http://**web:858/sites/~%7d""><b>「表示する内容」</b></A>"&"<BR><BR>" 「表示する内容(TextToDisplay)」ハイパーリンクで表示されるテキスト--が必要ですね。[<b>......</b></A>] いらない場合は、同じ内容のアドレスとか。 なお、作成画面だけでは、Outlook の場合は、セキュリティが働いて、ハイパーリンクが成功しているのか分からないかもしれませんが、こちらで、実際の送信・受信して、ハイパーリンクが成功しているか確認していますから、まず間違いないです。 それと、 #3で書いた、「VB型で作る方法は、他の人の方法も、だいたい同じようです。」というのは、実は、有名なコンピュータの会社が書いていた、実際のコードを参考にしていますので、作り方自体は間違いはないはずです。 なお、Outlook VBAのマニュアルは、かなり値段の高いものですし、内容も慣れないせいか、かなり難しいです。VBAも、Access, Excel 以外は、なかなか手の届かない世界だと思います。私は、Office VBAに関わり過ぎて、一体、何に時間を費やしているのだろう、と思うことがあります。マニュアルも、Developer クラスのものは高い割には、そんなに真剣に読んでいません。いずれ、こういうものは、他に変わる日も近いと思うと、集中できません。

515131
質問者

お礼

Wendy02さん こんにちは。 同じアドレスを繰り返すのも試しても出来ません。。。 >「表示する内容(TextToDisplay)」ハイパーリンクで表示されるテキスト--が必要ですね。[<b>......</b></A>] というのはどういう事でしょうか? 用語に詳しくないのでわからないのですが、 httpのアドレスの末尾に。<b>......</b></A>が必要で、なおかつ....部分の名前が必要という事でしょうか? シェアポイントではどこを見ればわかりますでしょうか? すみません。

515131
質問者

補足

出来ました!! アドレスをテキスト形式で定義し直して、Wendyさんの教えていただいた通りにアドレスを繰り返して、いろいろやってみたら出来ました。 本当にありがとうございました! ありがとうございました!

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 例えば、 CommentAD = "<BR>" & "<A HREF=""http://google.co.jp/""><b>goole検索</b></A> " HyperLink は、こんなものを、Comment の中に入れてやれば良いわけです。VB型で作る方法は、他の人の方法も、だいたい同じようです。コードだけをみると、少し分かりにくいですね。

515131
質問者

お礼

ありがとうございます。 早速やってみたのですが 'Compose message Msg = Msg & Comment1 & "<BR><BR><BR>" Msg = Msg & Comment2 = "<BR>" & "<A HREF=""http://検索</b></A> " Msg = Msg & Comment3 & "<BR><BR><BR>" Msg = Msg & Comment4 & "<BR><BR><BR>" Msg = Msg & "Best regards," & vbCrLf & vbCrLf 'Create Mail Item Set mItem = OutlookApp.CreateItem(olMailItem) With mItem .To = EmailAddr .CC = CCAddr .BCC = BCCAddr .Subject = Subj .HTMLBody = Msg .Display End With End Sub でやってみたところ 文字がArialではなくゴシックになっていて、リンクもリンクがとけて通常の文章になっており、Comment1が表示されません。 私のマクロは、どこが間違っているのでしょうか? すみません・・・・

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >メールのフォントをArialにしたい場合は設定はなんと書けばいいのでしょうか? 前回の、テキスト形式のメールには、基本的には、フォントの種類というものが存在しないので、相手の設定まかせですが、こちらでフォントの種類の指定が必要なら、HTML形式ファイルにしないといけません。 そこで以下の部分は変わります。'Arial' は、Windows のデフォルトのフォントの種類で、もっとも確実なフォントの種類ですね。フォントファイルが入っていなくても表示するだったと思います。フォントサイズは、2 =>10, 3 =>12 という大きさになります。 'Compose message Msg = "<font face=""Arial""><font size=2>" Msg = Msg & Comment1 & "<BR><BR><BR>" Msg = Msg & Comment2 & "<BR><BR>" Msg = Msg & Comment3 & "<BR><BR><BR>" Msg = Msg & Comment4 & "<BR><BR><BR><BR>" Msg = Msg & "Best regards," & "<BR><BR>" Msg = Msg & "</font></font>" 'Create Mail Item Set mItem = OutlookApp.CreateItem(olMailItem) With mItem .To = EmailAddr .CC = CCAddr .BCC = BCCAddr .Subject = Subj .HTMLBody = Msg 'ここを変える .Display End With

515131
質問者

お礼

早々のお返事ありがとうございます。 試してみましたら、別の問題が出てきまして、 Comment1、3は普通の英語なので、今教えていただいた設定でうまくいったのですが Comment2が、リンク先(社内で使用しているシェアポイントのhttp://から始まっているアドレスになりますが、そこがアドレス扱いではなく普通の英語文のようになってしまってリンクが溶けています。 Msg = Msg & Comment1 & "<BR><BR><BR>" Msg = Msg & Comment2 & Comment2 & vbCrLf & vbCrLf Msg = Msg & Comment3 & "<BR><BR><BR>" とComment2だけ変更するのかなとやってみたのですが、出来ませんでした。 どうすれば宜しいでしょうか? 度々すみません。。。 どうぞ宜しくお願い致します。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 この行がヘンです。 >Body = Range("Comment1") & ("Comment2") & ("Comment3") Comment1 = Range("Comment1").Value Comment2 = Range("Comment2").Value Comment3 = Range("Comment3").Value としておいて、 Msg = Msg & Comment1 & vbCrLf & vbCrLf Msg = Msg & Comment2 & vbCrLf & vbCrLf Msg = Msg & Comment3 & vbCrLf & vbCrLf Msg = Msg & "Best regards," & vbCrLf & vbCrLf とすればよいと思います。 Body という変数はいらないです。(Body という変数は予約語としてバッティングしませんが、こうした変数名は使わないほうがよいです。) それと、一般的に、Nameオブジェクトの名前-定義-登録は、VBAでは、ワークシートから、引っ張って使わないほうがよいです。トラブル発生の元になります。名前-定義は、一見、固定のように見えますが、いくつかの条件が重なると、移動してしまいます。一回トラブると、さっぱりエラーの原因が読めなくなります。 明示的に、Range("A1") などとしたほうがよいです。ここの掲示板でいろんなトラブルを見てきて言っているのですが、いくら私が言っても、初級レベルの人ですと、耳を貸さない人がほとんどですが、注意だけは与えておきます。説明すると、難しくなります。

515131
質問者

お礼

Wendy02さん ありがとうございます。ご指摘いただきましたように変更してみました。きちんと出来ました!ありがとごいざます。 あと一点だけお伺いしたいのですが、メールのフォントをArialにしたい場合は 設定はなんと書けばいいのでしょうか? 名前-定義-登録、きちんと書き換えました!下記に載せますね。 Sub SendEmail() Dim OlApp As Outlook.Application Dim mItem As Outlook.MailItem Dim cell As Range Dim Subj As String Dim EmailAddr As String Dim Recipient As String Dim Msg As String Dim Message As String Dim Sender As String Dim Comments As String Dim Comments2 As String Dim report As String Worksheets("Sheet1").Activate 'Create Outlook object Set OutlookApp = New Outlook.Application 'Get the data Subj = Range("I10") EmailAddr = Range("I4") CCAddr = Range("I7") Comment1 = Range("I13").Value Comment2 = Range("I15").Value Comment3 = Range("I17").Value Comment4 = Range("I20").Value 'Compose message Msg = Msg & Comment1 & vbCrLf & vbCrLf & vbCrLf Msg = Msg & Comment2 & vbCrLf & vbCrLf Msg = Msg & Comment3 & vbCrLf & vbCrLf & vbCrLf Msg = Msg & Comment4 & vbCrLf & vbCrLf & vbCrLf & vbCrLf Msg = Msg & "Best regards," & vbCrLf & vbCrLf 'Create Mail Item Set mItem = OutlookApp.CreateItem(olMailItem) With mItem .To = EmailAddr .CC = CCAddr .BCC = BCCAddr .Subject = Subj .Body = Msg .Display End With End Sub

関連するQ&A

  • メールにファイルを添付する or メールに表を貼り付ける マクロ

    こんにちは。 同じ質問を一週間ほど前にしたのですが、その後もわかっていなくて、どなたかご存知の方がいらっしゃればご教示いただけないでしょうか? 宜しくお願い致します。 送りたいメールの形は 数行の文章のあとに、表を貼り付け、また数行の文章という形式です。 Outlookメールでメールを立ち上げて Comment1と2は文章ですのでエクセルのコラムを引っ張ってくるようにしているのですが、 Comment3部分に別のエクセルにある表をメタ貼りし、Comment4でまた文書を引っ張ってくるとさせたいのですが Comment3部分の動きが出来ません。 Dim OlApp As Outlook.Application Dim mItem As Outlook.MailItem Dim cell As Range Dim Subj As String Dim EmailAddr As String Dim Recipient As String Dim Msg As String Dim Message As String Dim Sender As String Dim Comments As String Dim Comments2 As String Dim report As String ’日付の設定 DMY = Range("b_date") DM = Format(Range("b_date").Value, "mmdd") Worksheets("mail").Activate 'Create Outlook object Set OutlookApp = New Outlook.Application 'Get the data Subj = Range("B69") & "_" & DM EmailAddr = Range("B63") CCAddr = Range("B66") Comment1 = Range("H63").Value Comment2 = Range("H65").Value Comment3 = この辺りがわかりません Comment4 =Range("H67").Value 'Compose message Msg = "<font face=""Arial""><font size=2>" Msg = Msg & Comment1 & "<BR><BR><BR>" Msg = Msg & Comment2 & "<BR><BR><BR>" Msg = Msg & Comment3 & "<BR><BR><BR>" Msg = Comment4 & "<BR><BR><BR><BR>" Msg = Msg & "Best regards," & "<BR><BR>" Msg = Msg & "</font></font>" 'Create Mail Item Set mItem = OutlookApp.CreateItem(olMailItem) With mItem .To = EmailAddr .CC = CCAddr .BCC = BCCAddr .Subject = Subj .HTMLBody = Msg .Display End With End Sub もしくは、貼り付けるのではなく、Rドライブに保存したファイル(表が記載してあるもの)を添付するという形式でも構いません。 宜しくお願い致します。

  • マクロ Outlook送信メールにエクセルの表を貼り付ける方法

    こんにちは。 送りたいメールの形は 数行の文章のあとに、表を貼り付け、また数行の文章という形式です。 Outlookメールでメールを立ち上げて Comment1と2は文章ですのでエクセルのコラムを引っ張ってくるようにしているのですが、 Comment3部分に別のエクセルにある表をメタ貼りし、Comment4でまた文書を引っ張ってくるとさせたいのですが Comment3部分の動きが出来ません。 Dim OlApp As Outlook.Application Dim mItem As Outlook.MailItem Dim cell As Range Dim Subj As String Dim EmailAddr As String Dim Recipient As String Dim Msg As String Dim Message As String Dim Sender As String Dim Comments As String Dim Comments2 As String Dim report As String '日付の設定 DMY = Range("b_date") DM = Format(Range("b_date").Value, "mmdd") Worksheets("mail").Activate 'Create Outlook object Set OutlookApp = New Outlook.Application 'Get the data Subj = Range("B69") & "_" & DM EmailAddr = Range("B63") CCAddr = Range("B66") Comment1 = Range("H63").Value Comment2 = Range("H65").Value Comment3 = この辺りがわかりません Comment4 =Range("H67").Value 'Compose message Msg = "<font face=""Arial""><font size=2>" Msg = Msg & Comment1 & "<BR><BR><BR>" Msg = Msg & Comment2 & "<BR><BR><BR>" Msg = Msg & Comment3 & "<BR><BR><BR>" Msg = Comment4 & "<BR><BR><BR><BR>" Msg = Msg & "Best regards," & "<BR><BR>" Msg = Msg & "</font></font>" 'Create Mail Item Set mItem = OutlookApp.CreateItem(olMailItem) With mItem .To = EmailAddr .CC = CCAddr .BCC = BCCAddr .Subject = Subj .HTMLBody = Msg .Display End With End Sub どなたかご存知ではないでしょうか? 毎回で申し訳ございませんが、どうぞ宜しくお願い致します。

  • Outlook2013自動送信が出来ません。

    はじめまして、いつもお世話になっております。 excel vba の学習を始めたばかりの初心者です。 あるサイトで自動でoutloook2013を起動しファイルを添付して送信するマクロを 見つけ送信しようとしましたが、『コンパイルエラー』の為、上手くいきません。 どなたか画像をご確認いただき、修正方法をご教示いただきたく存じます。 よろしくお願いいたします。 以下がコンパイルエラーの出たプロシージャ(抜粋) 黄色のライン→Sub sendmail_sample1() 反転→Dim outlookObj As Outlook.Application 'Outlookで使用するオブジェクト生成 以下がコンパイルエラーの出たプロシージャ(全体) Sub sendmail_sample1() '---コード1|outlookを起動する Dim toaddress, ccaddress, bccaddress As String '変数設定:To宛先、cc宛先、bcc宛先 Dim subject, mailBody, credit As String '変数設定:件名、メール本文、クレジット、添付 Dim outlookObj As Outlook.Application 'Outlookで使用するオブジェクト生成 Dim mailItemObj As Outlook.MailItem 'Outlookで使用するオブジェクト生成 '---コード2|差出人、本文、署名を取得する--- toaddress = Range("B2").Value 'To宛先 ccaddress = Range("B3").Value 'cc宛先 bccaddress = Range("B4").Value 'bcc宛先 subject = Range("B5").Value '件名 mailBody = Range("B6").Value 'メール本文 credit = Range("B7").Value 'クレジット '---コード3|メールを作成して、差出人、本文、署名を入れ込む--- Set outlookObj = CreateObject("Outlook.Application") Set mailItemObj = outlookObj.CreateItem(olMailItem) mailItemObj.BodyFormat = 3 'リッチテキストに変更 mailItemObj.To = toaddress 'to宛先をセット mailItemObj.CC = ccaddress 'cc宛先をセット mailItemObj.BCC = bccaddress 'bcc宛先をセット mailItemObj.subject = subject '件名をセット '---コード4|メール本文を改行する mailItemObj.Body = mailBody & vbCrLf & vbCrLf & credit 'メール本文 改行 改行 クレジット '---コード5|自動で添付ファイルを付ける--- Dim attached As String Dim myattachments As Outlook.Attachments 'Outlookで使用するオブジェクト生成 Set myattachments = mailItemObj.Attachments attached = Range("B9").Value '添付ファイル myattachments.Add attached attached = ThisWorkbook.Path & "outlookメール操作.xlsm" '---コード6|メールを送信する--- 'mailItemObj.Save '下書き保存 mailItemObj.Display 'メール表示(ここでは誤送信を防ぐために表示だけにして、メール送信はしない) '---コード7|outlookを閉じる(オブジェクトの解放)--- Set outlookObj = Nothing Set mailItemObj = Nothing

  • VBAでエクセルの文をメールに転記

    当方エクセル2016使用しています。 エクセルのVBAで、outlookのメールを自動作成したいです。 エクセルの E2に宛先 E3に件名 E4~E6に本文が入っており、 下記VBAでoutlookに各データが入る様にはできました。 しかしエクセルでは文字のサイズや色が異なっているものが、 outlook本文に反映されません。 (1行単位だったり、文字単位だったりでサイズや色が異なる) エクセルに表示されているそのままを outlook本文に表示させるにはどうしたら良いでしょうか。 ******************************** Sub Macro1() Dim toaddress As String Dim subject As String Dim mailbody As String Dim outlookObj As outlook.Application Dim mailItemObj As outlook.mailItem toaddress = Range("E2").Value subject = Range("E3").Value mailbody = Range("E4").Value mailbody = mailbody & vbCrLf & Range("E5").Value mailbody = mailbody & vbCrLf & Range("E6").Value Set outlookObj = CreateObject("Outlook.Application") Set mailItemObj = outlookObj.CreateItem(olMailItem) mailItemObj.BodyFormat = olFormatHTML mailItemObj.To = toaddress mailItemObj.subject = subject mailItemObj.body = mailbody mailItemObj.display Set outlookObj = Nothing Set mailItemObj = Nothing End Sub

  • Excel VBA basp21でメール送信エラー

    メール送信エラーとなってしまいます。 ”Cant connect Server 11004” 同アカウントでメーラーからの送受信は成功しております。 原因はSMTP設定の関係だと思うのですが、どのようにコードを書き足せば良いのでしょうか。 また参照設定は完了しています。 ご存知のかたご回答をよろしくお願いします。 コードは以下です。 Private Sub cmd送信_Click() Dim bobj As Object Dim svname As String Dim id As String Dim pass As String Dim msg As Variant '送信チェック用 Dim strMLadr As String Dim strDPadr As String Dim strPW As String 'SMTPサーバ名:ポート番号:タイムアウト秒 svname = "サーバー:587:60" 'ログインID id = "" 'パスワード pass = "" 'オブジェクトを作成 Set bobj = CreateObject("basp21") '宛先 mailto = "" '送信者 strMLadr = "" '(送信者のメールアドレス' strDPadr = "テスト" '(送信者の表示文字列) strPW = "" '(送信者メールアドレスのパスワード) mailfrom = strDPadr & "<" & strMLadr & ">" & vbTab & id & ":" & strPW '件名 subj = "送信テスト" '本文 改行はvbCrLf body = "おはようございます。" & vbCrLf & "今日は良い天気ですね。" 'メール送信 msg = bobj.SendMail(svname, mailto, mailfrom, subj, body, "") ' 送信チェック If msg <> "" Then MsgBox "送信できませんでした。" & vbCrLf & msg, vbOKOnly + vbCritical, "エラー" Else MsgBox "送信に成功しました。", vbOKOnly + vbInformation, "完了" End If End Sub

  • Accessから複数アドレスにメール送信

    かなり初歩的な質問なのかもしれませんが、どうしても進まないのでどなたかご教授お願い致します。 access2003からBasp21を使用してメール送信フォームを作ってます。複数アドレスに一括で送れるように、宛名フォームから氏名を選択(例として3件)すると、メール送信フォームの「bcc」ボックスに、 "bcc" & vbTab & "abc@xx.com" & vbTab & "def@xx.jp" & vbTab & "ghi@xx.com" と入るようにし、送信ボタンクリックで下記のようなコードを書いてます。 Dim bobj As Object Dim svname As String Dim ID As String Dim Mailto As String Dim MailFrom As String Dim subj As String Dim Body As String Dim pass As String Dim msg As Variant '送信チェック用 'SMTPサーバ名:ポート番号:タイムアウト秒 svname = Me.[smtpサーバー] & ":" & Me.[ポート番号] & ":" & Me.[タイムアウト秒] 'ログインID ID = Me.[ログインID] 'パスワード pass = Me.[パスワード] 'オブジェクトを作成 Set bobj = CreateObject("basp21") '宛先 Mailto = Me.[bcc] '送信者 MailFrom = Me.[送信者] & "<" & ID & ">" & vbTab & ID & ":" & pass '件名 subj = Me.[件名]   '本文 Body = Me.[テキスト169] 'メッセージの送信 msg = bobj.SendMail(svname, Mailto, MailFrom, subj, Body) ' 送信チェック If msg <> "" Then MsgBox "送信できませんでした。" & vbCrLf & msg, vbOKOnly + vbCritical, "エラー" Else MsgBox "送信しました", vbOKOnly + vbInformation, "完了" End If これを実行すると、 「送信できませんでした。 555 5.5.4 Unsupported option: & to "bcc" & vbTab & "abc@xx.com" & vb」 というようなメッセージが出て送信できません。 Mailto = Me.[bcc] の所を、 Mailto ="bcc" & vbTab & "abc@xx.com" & vbTab & "def@xx.jp" & vbTab & "fhi@xx.com" にすれば送信できるのですが、送信先は毎回変わるので Me.[bbc] にアドレスを代入して送信できるようにするにはどうすればいいのでしょうか?

  • エクセルVBAでOutlookメールの書式を変える

    エクセル2010です。 下記のようなコードでOutlookメールを作成したとき、たとえば  "ABC株式会社" だけを赤字で太文字にするにはどう書けばよいのでしょうか? Sub TEST001()   Dim oApp As Object   Dim objMAIL As Object   Dim strMOJI(1) As String   On Error Resume Next   Set oApp = GetObject(, "Outlook.Application")   On Error GoTo 0   If oApp Is Nothing Then     Set oApp = CreateObject("Outlook.Application")   End If   Set objMAIL = oApp.CreateItem(0)   strMOJI(0) = "こんにちは!" & vbCrLf & _   "色付けテストです。" & vbCrLf & _   "よろしくおねがいします。" & vbCrLf   strMOJI(1) = vbCrLf & _   "以上です。" & vbCrLf & _   "ABC株式会社" & vbCrLf & _   "emaxemax"   objMAIL.To = "xxxx@xxx.co.jp"   objMAIL.CC = "yyyy@xxx.co.jp"   objMAIL.Subject = "テスト"   objMAIL.Body = strMOJI(0) & strMOJI(1)   objMAIL.Display End Sub

  • BASP21を使ってEXCELからメールの送信

    BASP21を使ってEXCELからメールの送信をしたいのですが、できません。 自分なりに調べた結果、下記のコードになったのですが、どこかおかしいのでしょうか? エラー表示は次になります。 530 5.7.1 client was not authenticated from メールアドレス よろしくお願いいたします。 Sub ボタン2_Click() ''[送信]ボタン Dim bobj, msg As String, i As Long Dim Server As String, Mailto As String, MailFrom As String Dim Subject As String, Attach As String, Body As String On Error Resume Next Set bobj = CreateObject("basp21") ''BASP21オブジェクト ''BASP21がインストールされているかどうかを判定する If Err = 429 Then MsgBox "BASP21がインストールされていません。", vbCritical Exit Sub End If ''必須データのチェック Server = "mail.○○○.com:587:60" ''SMTPサーバー Mailto = "○○○@hotmail.co.jp" ''宛先 MailFrom = "△△△@×××.co.jp" ''差出し人 Subject = "更新連絡" ''タイトル Body = "システムが更新しました" ''本文 msg = bobj.SendMail(Server, Mailto, MailFrom, Subject, Body, Attach) Set bobj = Nothing If msg <> "" Then MsgBox msg, vbExclamation Else MsgBox "メールを送信しました。", vbInformation End If End Sub

  • エクセルでOutlookのメールを作成

    エクセルでOutlookのメールを作成しようとしています。 一応、以下のコードでできるようです。 質問は、メール本文中の ABC という文字だけを赤い太字にする方法です。教えてください。 Sub test01() Dim mi As Object ' MailItem Dim wdDoc As Object ' Word.Document Dim olApp As Object ' Outlook.Application Set olApp = CreateObject("Outlook.Application") Set mi = olApp.CreateItem(0) mi.To = "test@abc.co.jp" ' 送り先 mi.BodyFormat = 2 ' メールを HTML 形式にする mi.Display ' メールを表示する Set wdDoc = olApp.ActiveInspector.WordEditor ' メールの Word エディタを取得する wdDoc.Windows(1).Document.Range.Text = "本文本文本文本文本文1" _ & vbCrLf & "本文本文本文本文本文2" _ & vbCrLf & "本文ABC本文本文3" With wdDoc.Windows(1).Document.Range.Font .Name = "Meiryo UI" ' メール本文のフォントを "Meiryo UI" .Size = 11 ' フォントサイズを 11 に設定する End With End Sub

  • エクセルからOUTLOOKでメール送信:2

    ●前回下記の質問を書かせていただきました。 ---------- エクセルに複数件のデータを記載してあります。 A列 に メールアドレス B列 に 件名 C列 に 本文A D列 に 本文B があるときに連続してメールを立ち上げ送信したいです。 いろいろ試してみましたが全く動きませんでした。 お手隙の際にでもお教え下さい。 マクロのサンプルソースがあると助かります。 よろしくお願いいたします。 ---------------- ●下記の回答をいただきメールの送信までは出来ました。 ---------------- Sub ボタン1_Click() Dim myOLApp As Object ' Dim myDATA As MailItem '### OUTLOOKのオブジェクトを作成後、メールを新規作成する。 Set myOLApp = CreateObject("Outlook.Application") For i=2 To 5 Set myDATA = myOLApp.CreateItem(olMailItem) '### メールの宛先、題名、本文、添付ファイルを設定する。 '(宛先のアドレス) myDATA.to = Range("A" & i).Value ' myDATA.CC = Range("D33").Value myDATA.Subject = Range("B" & i).Value myDATA.Body = Range("C" & i).Value & CHAR(10) & Range("D" & i).Value '### メールを送信 myDATA.Send Next '### お約束の後始末。 Set myDATA = Nothing Set myOLApp = Nothing End Sub こんな感じでしょうか。 For i=2 To 5 と 2行目から5行目です。 うまくいくようでしたら For i=2 To Range("A" &Rows.Count).End(xlUp).Row とでも変更してください。 なんといっても失敗すると大変なリスクが発生するプログラムです。 十分に実験してから運用してください。 ------------------------ ●メール送信は問題なくできておりましたが、  他のCSVリストよりエクセルにデータを引っ張ってきて  メールの送信を使用とした所 システムエラーです 80004005 エラーを特定できません。 と言ったエラーが出てくるようになりました。 多分他のシートから引っ張ってくる関数がジャマをしているとは思うのですが、 何かこのエラーを回避する方法はございますでしょうか? お教え下さい。

専門家に質問してみよう