1

Office 2013 で Outlook メールの下書きを作成するために使用した Excel の既存の VBA コード スニペットがあります。次のコードを検討してください。これは正常に機能し、作成後に Outlook 内でメールを手動で送信できました。

Dim objOLOutlook As New Outlook.Application
Dim objOLMail As Outlook.MailItem

Set objOLMail = objOLOutlook.CreateItem(olMailItem)
objOLMail.SentOnBehalfOfName = WsMtrx.Cells(2, 2).Value
objOLMail.To = .Cells(i, 2).Value
objOLMail.CC = .Cells(i, 3).Value
objOLMail.Sensitivity = WsMtrx.Cells(3, 2).Value
objOLMail.Importance = WsMtrx.Cells(4, 2).Value
objOLMail.Subject = dicHtmlText.Item(.Cells(i, 6).Value & "Subject")
objOLMail.BodyFormat = olFormatPlain
objOLMail.HTMLBody = getHtmlText(.Cells(i, 6).Value, .Cells(i, 5).Value, .Cells(i, 4).Value, .Cells(i, 10).Value, i, arrSignatur)
objOLMail.Save

Office 365 (クラウド内の Exchange サーバー) に切り替えましたが、同じコードを使用してメールを作成しますが、メールを送信するとエラーが発生します。

Outlook エラー メッセージ

Outlook のプロパティで、「電子メール アドレス」フィールドではなく、「表示名」フィールドにのみ電子メール アドレスが表示されることに気付きました。

Outlook のプロパティ

手動で作成されたメールが適切に機能している場合、「表示名」フィールドと「電子メール アドレス」フィールドに電子メール アドレスが表示され、「電子メール タイプ」フィールドに「SMTP」が表示されます。

Outlook のプロパティ

オートコンプリートキャッシュを無駄にクリアするなど、すでにいくつかのことを試しました。電子メール アドレスを正しく設定するために Excel/VBA 内でできることはありますか? それとも、修正する必要があるのはサーバー側の問題/設定ですか?

4

1 に答える 1

1

私は最終的に自分で解決策を見つけました:

Dim recipient As Outlook.recipient

For Each recipient In objOLMail.Recipients
    recipient.Resolve
Next

objOLMail.Save

実際にはかなり単純です。どういうわけか、以前は必要ではなかったすべての受信者を明示的に解決する必要があります。

于 2016-11-18T14:29:09.853 に答える