こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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があるのはなぜでしょうか。
エラーが出ないようにするにはどうしたらよいでしょうか。

ご教示よろしくお願い致します。

投稿日時 - 2018-04-18 18:27:21

QNo.9489908

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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...
が掲示されていますので
これに必要な引数たちを与えて実行すれば
容易に送信できます。

投稿日時 - 2018-04-19 20:44:39

ANo.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

あまりお役にたてなくてごめんなさい。

投稿日時 - 2018-04-18 19:29:39

お礼

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

投稿日時 - 2018-04-24 13:38:14

あなたにオススメの質問