Outlook VBA 日本人に必ずYesといわせるメールを作成する

# 注意
この機能によって送信されても、 Outlook.com live.com hotmail.com のメールアドレスでは投票できません。ただし投票オプションをつけて送信することはOutlook.exeからは可能となります。

[ドキュメント /Office クライアントの開発 /Outlook /　 Outlook プライマリ相互運用機能アセンブリ リファレンス /方法 /メール / メール アイテムに投票オプションを追加する](https://docs.microsoft.com/ja-jp/office/client-developer/outlook/pia/how-to-add-voting-options-to-a-mail-item)

- 選択肢はYesNoのような2肢択一だけはなく多肢択一が可能
- 選択肢の文字列はセミコロンで切る。最後の文字もセミコロンを最後に（これはレジストリで決まっているため違う場合もあり得る）
- C#ではなくVB、VBAでも可能

>メッセージの投票オプションは、メッセージ受信者に選択肢の一覧を示して回答を追跡するために使用します。投票オプションをプログラムで作成するには、値の一覧をセミコロン区切りで記述した文字列を MailItem オブジェクトの VotingOptions プロパティに設定します。 VotingOptions プロパティの値は、受信メッセージのリボンの [ 返信] グループの [ 投票] コマンドに表示されます。

>以下の例の OrderPizza は、新しいメール メッセージに投票オプションを作成します。 OrderPizza は、まず MailItem を作成し、VotingOptions プロパティを "Cheese; Mushroom; Sausage; Combo; Veg Combo" に設定して、Subject プロパティを "Pizza Order" に設定します。 "Pizza Order" メッセージを送信すると、受信者には投票オプションが表示されます。 回答を受診するたびに、差出人の送信済みアイテム フォルダーのメッセージの ~~[追跡]~~表示タブで[確認] にすると、受診者の選択内容が集計されます。

追跡ではない。ウソを言ってはいけない。マイクロソフトの解説ってどうしてウソを言うのかなあ。

```c#
using Outlook = Microsoft.Office.Interop.Outlook;

private void OrderPizza()
{
Outlook.MailItem mail = (Outlook.MailItem)Application.CreateItem(
Outlook.OlItemType.olMailItem);
mail.VotingOptions = “Cheese; Mushroom; Sausage; Combo; Veg Combo;”
mail.VotingResponse = “Sausage;”`
mail.Subject = “Pizza Order”;
mail.Display(false);
}
```

###投票に対する返答の方法
Outlook2010を使った説明だが、あまり変わらないので、これでOK。、
https://www.wanichan.com/pc/outlook/2010/2/08.html
送信者と送信日時の間にクリックしてくださいの指示が出るので、そこで投票する。
またVBAを使わない場合は投票、確認オプションで設定する。
紹介しているサイトでは投票、確認オプションで選択肢を設定する場合、最後をセミコロンで区切っていない
`はい;いいえ:たぶん`
となっているが、
`はい;いいえ;たぶん;`
とした方がよい。なぜなら、これはセミコロン区切りの配列としてOutlookは扱っているので、要素は必ず区切り文字で区切って要素を明示すべきだからだ。

https://support.office.com/ja-jp/article/%e3%83%a1%e3%83%bc%e3%83%ab-%e3%83%a1%e3%83%83%e3%82%bb%e3%83%bc%e3%82%b8%e3%81%ae%e8%aa%bf%e6%9f%bb%e3%81%ab%e5%9b%9e%e7%ad%94%e3%81%99%e3%82%8b-3392cff4-686c-4d61-a4f0-401a54ed9d43?ns=OUTLOOK&version=90&ui=ja-JP&rs=ja-JP&ad=JP
###これはVBAでできる
https://docs.microsoft.com/ja-jp/office/client-developer/outlook/pia/how-to-add-voting-options-to-a-mail-item

[VotingOptions プロパティ (Outlook)](https://docs.microsoft.com/ja-jp/office/vba/api/outlook.mailitem.votingoptions)
‎2017‎年‎06‎月‎08‎日
メールメッセージの投票オプションを含む区切られた文字列を指定する文字列を設定または返します。 値の取得と設定が可能です。

```vb
Sub votingoptionitem()
'For Outlook
Dim myMaiLItem As .MailItem
Set myMaiLItem = CreateItem(olMailItem)
With myMaiLItem
.To = "-@-"
.Subject = "【確認】"
.Body = "投票をお願いします。" & vbCrLf & "どれか一つ選んでください"
.VotingOptions = "yes;no;True;But;"
.Display
End With
```

###何も考えないとYesで返せるVotingResponce
[VotingResponse プロパティ (Outlook)](https://docs.microsoft.com/ja-jp/office/vba/api/outlook.mailitem.votingresponse)
‎2017‎年‎06‎月‎08‎日
このプロパティは、通常、元のメッセージに対する返信のVotingOptions プロパティによって返される区切られた値の1つに設定されます。
区切られた値に設定する


####日本人に必ずYesといわせる投票メール(初期設定がYes)
なおVotingResponceがVotingOptionsより後でなければいけないということもないようだ。
こうしておくと送信者自身がはいになる。
このため、だれからも返信がこなくても1名ははいになる。

```vb
Sub votingoptionitem()
'For Outlook
Dim myMaiLItem As MailItem
Dim DT As Date
DT = Date + 3
Set myMaiLItem = CreateItem(olMailItem)
With myMaiLItem
.To = "-@-"
.Subject = "【確認】"
.Body = "投票をお願いします。" & vbCrLf & "どれか一つ選んでください" & vbCrLf & Format(DT, "yyyy/mm/dd") & "までにお返事を頂けない場合は「はい」として処理します。"
.VotingOptions = "はい;まあね;遠慮します;"
.VotingResponse = "はい;"
.Display
End With
End Sub
```

###StackOverFlowも同様の方法がある
https://stackoverflow.com/questions/25216028/how-to-detect-and-approve-of-voting-buttons-in-outlook-vba
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13181282118
###VBAを使わない手法
[電子メール メッセージで調査を実施して結果を確認する](https://support.office.com/ja-jp/article/%E9%9B%BB%E5%AD%90%E3%83%A1%E3%83%BC%E3%83%AB-%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%A7%E8%AA%BF%E6%9F%BB%E3%82%92%E5%AE%9F%E6%96%BD%E3%81%97%E3%81%A6%E7%B5%90%E6%9E%9C%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B-4d10e079-8ea1-489a-a79c-18cb71ae12dd)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126919/085e833d-f8cf-1ca3-0afa-3f6483201c75.png)

これがVBAを使わない手法だが、画像は変更履歴となっているが、文中は「確認」となっている。
当方では「確認」で出てくる。
確かに以前は変更履歴だったかもしれない。