下書きメールを作成および保存する VBA スクリプトがあります。受信者を追加するには、リンクされた Excel テーブルから文字列を取得し、それを受信者オブジェクトに追加します。
受信者が 1 人の電子メールの場合、これは非常に効果的です。ユーザーが行う必要があるのは、下書きを開いて 5 秒間確認し、[送信] をクリックすることだけです。
この問題は、一度に複数の連絡先 (例: "a@aol.com; b@aol.com; c@aol.com") で発生します。ユーザーが [送信] をクリックすると、Outlook は [名前の確認] ダイアログをポップアップし、提案はありません。ユーザーは、[宛先] フィールドをクリックし、ダミーのセミコロンを入力して自動解決をトリガーすることで、これを回避できます。このプロセスでは一度に 100 通以上のメールが作成され、個別に確認する必要があるため、これは避けたいと思います。
ネットで調べてみると、false を返す Recipients.ResolveAll を見つけて試してみました。その理由は、Outlook が受信者の文字列全体を一度に解決しようとしていて、個別に解決しようとしないためだと思われます。私の質問は、Outlook でこの [名前の確認] ダイアログが表示されないようにするにはどうすればよいですか? メール文字列をループして個々のメールを解析する必要がありますか?
Sub CreateEmail(id as Integer)
Dim OlApp As Outlook.Application
Dim ObjMail As Outlook.MailItem
Dim Recipients As Outlook.Recipients
Dim CurrentRecipient As Outlook.Recipient
Set OlApp = CreateObject("Outlook.Application")
Set ObjMail = OlApp.CreateItem(olMailItem)
Set Recipients = ObjMail.Recipients
Dim StrEmailTo As String
StrEmailTo = CurrentDb.OpenRecordset( _
"Select [Emails] from LU_Contacts where id=" & id & ";").Fields(0)
Set CurrentRecipient = Recipients.Add(StrConv(StrEmailTo, 3))
CurrentRecipient.Type = olTo
...
Objmail.Save