• 締切済み

ExcelVBAからメール本文を取得できません

ExcelのVBAからOutlookのメール本文を取得できません。 エクセル上のデータを自動でOutlookのメール本文にとばすプログラムを作成しています。 Outlookを開き、宛先、件名までは転記できるのですが、本文転記の時にエラーがでます。 <本文転記のプログラム> If Range("A1") = 1 Then .body = Range("B1") ElseIf Range("A1") = 2 Then .body = Range("B1") & vbCrLf & Range("B2") ElseIf Range("A1") = 3 Then .body = Range("B1") & vbCrLf & Range("B2") & vbCrLf & Range("B3") Else .body = Range("B1") & vbCrLf & Range("B2") & vbCrLf & Range("B3") & vbCrLf & Range("B4") End if <エラー内容> (1)A1=1以外はエラーが出ない (2)A1=1の時にエラーが出るPCと、エラーが出ず正常に動くPCがある。 ※何れのPCもWindows10 <質問内容> エラーがでるPCと出ないPCがあるのはなぜでしょうか。 エラーが出ないようにするにはどうしたらよいでしょうか。 ご教示よろしくお願い致します。

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

コードが部分的にしか掲示されていないこと どのコード部分でどのようなエラーになるのかの説明が無いので 深追いができません。 少なくとも掲示されたソースコード部分には 問題があるようには思えません。 掲示された情報だけを素直に受け取れば、なにか、 outlookの設定、バージョン、状態、OS (あるいは常駐したセキュリティソフトが疑えるかもしれません。) など、環境に依存した問題が起きているのだろうと思いますが、 それ以上にはわかりません。 VBAを使ってsmtpプロトコルでメールを送信したい。 ということであれば、 WindowsOSに標準搭載された、 CDO(Microsoft Collaboration Data Objects) を使う方法を私は推奨します。 これなら、 実行PCにoutlookなどメールクライアントは不要です。 むろん、outlookに依存することもありません。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_080.html に、送信用として Function SendMailByCDO... が掲示されていますので これに必要な引数たちを与えて実行すれば 容易に送信できます。

  • skp026
  • ベストアンサー率45% (1010/2238)
回答No.1

メールの形式はどのようになっているか確認済みでしょうか。 状態はBodyFormatプロパティで取得と設定ができます。 このプロパティの詳細は以下です。 https://msdn.microsoft.com/ja-jp/vba/outlook-vba/articles/mailitem-bodyformat-property-outlook 他の環境でエラーが出ても良いように、 取得して、いずれかに表示などすると状況が分かるかもしれません。 あとは他の人からの回答を期待するか、 以下のようなMicrosoftのVBAフォーラムの利用です。 https://social.msdn.microsoft.com/Forums/ja-JP/home?forum=vbajp あまりお役にたてなくてごめんなさい。

utsusemihana
質問者

お礼

VBAフォーラムを利用したら、解決しました。ありがとうございました。