Outlook (全般)

Outlook 全般に関するフォーラムです。
Outlook Express、Windowsメールも含みます。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Microsoft 365)
投票ボタンの種類で転送先を自動設定したい件
投稿日時: 22/07/19 19:09:54
投稿者: アロハ

いつもお世話になります。
 
投票ボタン付きのメールを送信します。そのメールを受信した人は、投票ボタンの「参加」「不参加」を選択したときに、特定の人へ転送する仕組みを作りたいのですが、何をどうしたらいいのか困っています。
 
参考になるソースなどご教授いただきたいです。
 
どうぞよろしくお願い致します。

回答
投稿日時: 22/07/20 09:42:59
投稿者: Suzu

引用:
投票ボタンの種類で転送先を自動設定したい件

引用:
投票ボタンの「参加」「不参加」を選択したときに、特定の人へ転送する仕組み

 
「種類」とは、「参加」「不参加」 の事でしょうか?
 
「転送」とは、何を転送するのですか? このメールですか?
「特定の人」とは、固定の人?
   まさか、Mail を受信した人 のアドレス帳を参照して・・と言う話ではないですよね?
 
 
パッと思いついたのは、HTMLの mailto です。
転送と言うよりは、固定宛先へ、固定文の文面 を送る メーラーの新規メッセージ画面を起動する命令ですね。
「参加」/「不参加」 から察するに、それで良いのかな?
 
 
でも、わざわざ Outlook での質問と言うことは
 
メッセージで投票ボタンを使用する
https://support.microsoft.com/ja-jp/office/%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%A7%E6%8A%95%E7%A5%A8%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B-4d10e079-8ea1-489a-a79c-18cb71ae12dd
 
この辺りの事でしょうか?
 
 
当方、Outlook は 使用していないので詳しくは判りませんが・・

投稿日時: 22/08/10 12:14:28
投稿者: アロハ

Suzu様
 
いつも回答いただきありがとうございます。
 

引用:
「特定の人」とは、固定の人?
   まさか、Mail を受信した人 のアドレス帳を参照して・・と言う話ではないですよね?

説明を「特定の人」と省略してしまいましたが、あるシステムからoutlookを使用してメールを飛ばします。
@宛先・メール受信者が次に転送する宛先をシステムの画面上で指定します。
A画面上で登録された情報はデータベースへ登録します。メールアドレス等々
Bシステムの画面上から送信をクリックすると宛先の人にメールが送信されます。
 
Cメールを受信した人は内容を確認後、メールを転送する操作を自動化したい。←これが質問でした。
 
これに関しては、メールの件名やbodyの情報からsqlserverに繋いで次の転送先・定型文を自動で作り、送信するoutlookのマクロを作って解決しました。
 
次に問題になったのが、outlookのマクロの管理についてです。
vbaの内容に更新がかかったとき、更新ファイル(VbaProject.OTM)をユーザに配布する必要がありますが、それをユーザにさせるのは手間なので自動化したいと探ったときに、outlookのアドインを作る必要があるところまでたどり着きました。
それにはvisual studioが必要とのことですが、その環境は備わっているので作ることはできそうです。
しかし、少し勉強が必要なのでoutlookのアドインに関する情報(書籍など)あればご紹介いただきたいです。
 
又は更新ファイル(VbaProject.OTM)を自動配布する方法は何かありますでしょうか。
 
 
ご指導のほど、よろしくお願いします。

回答
投稿日時: 22/08/15 11:11:45
投稿者: Suzu

全体として
 
ユーザーA   システム 上 から
          ・宛先           【ユーザーB】
          ・ユーザーB が 転送すべき 【ユーザーC】
           を選択/登録し、
           【ユーザー B】 に対し メールを 送信する
 
ユーザーB    1.Outlook にて、メールを受信 し
        2.投票ボタンの「参加」「不参加」を押す
        3.「参加」「不参加」 の結果を     ← 『これがマクロ??』
          選択肢
           A)どこかのシステムに情報を送信する
           B)メール本文に記載し、メールを 次の人に送信するための本文を作成する
 
        4.受信したメール を転送する為の文章を作成 ← 『マクロ?』
 
        5.宛先に、指定された宛先を入れる     ←『マクロ?』
         A)そのメール内 に記載してある
         B)そのメールには 記載されていないが、
              システムを参照しシステムに登録されている【ユーザーC】
         C)そのメールには 記載されていないが、
             決まり事として決まっている 【ユーザーC】
 
        6. 作成されたメールを ユーザー C に送信する
 
ユーザーC   メールを受信する
 
こんな流れで、 ユーザーB の 動作 の 部分を マクロとして ユーザーB に配布するけど
それをアドインとして配布したいと言うこと?
 
 
1)ユーザーB はメールを ユーザーCに転送しなければならないのはどうしてでしょう?
 ユーザーA は ユーザーB が、ユーザーC に転送する事を指定しています。
 ユーザーA から直接 ユーザーB/ユーザーC に メールを送付してはいけないのでしょうか?
 
2)ユーザーB のマクロ更新をユーザーB に行って貰わなければならない?それをどうにか簡単にしたい?
  Outlook は 本当に判りませんが、
  あくまで、単体ファイルとして、【VbaProject.OTM】を更新すれば良いのですよね?
  VbaProject.OTM を含み、そのファイルを上書きする動作をする実行ファイルを送って
  実行して貰えば良いと思います。
 
3)なぜ、Outlook & マクロ なのでしょうか?
  HTMLメール & MailTo あたり を使い、
  Bから C へ送る 文章を、システムの段階で HTML として埋め込んでおくのであれば
  メールという選択肢も 判らないではないですが、
 
  Outlook なのですから、グループウェアとして使用できますよね?
  スケジュール共有や、会議の出席依頼 を 使ってはダメなのでしょうか?
 
  メーラーが、Outlook で統一できていない のであれば、
  SQLServer を参照 している のであれば、WEBフォームを表示するサーバーを立てても良いのでは?
  WEBフォーム 上で、ユーザーB が出席 登録したら、
   ユーザーC へ WEBフォームへのログイン通知
      ユーザーB が 出席予定した旨
     ユーザーC の出席可否 の確認
  を行えば良いのだと思います。
 
メール & 転送 の 必要性に疑問を感じます。

投稿日時: 22/08/31 01:21:34
投稿者: アロハ

Suzu様
  
いつも回答いただきありがとうございます。

引用:
1)ユーザーB はメールを ユーザーCに転送しなければならないのはどうしてでしょう?
 ユーザーA は ユーザーB が、ユーザーC に転送する事を指定しています。
 ユーザーA から直接 ユーザーB/ユーザーC に メールを送付してはいけないのでしょうか?

これは仕様の話になりますが、ユーザーCはユーザーBが確認したメールしか受け取りたくないからです。用は段階承認です。
引用:
2)ユーザーB のマクロ更新をユーザーB に行って貰わなければならない?それをどうにか簡単にしたい?
  Outlook は 本当に判りませんが、
  あくまで、単体ファイルとして、【VbaProject.OTM】を更新すれば良いのですよね?
  VbaProject.OTM を含み、そのファイルを上書きする動作をする実行ファイルを送って
  実行して貰えば良いと思います。

これに関しては、VbaProject.OTM & VBS で解決しました。
引用:
3)なぜ、Outlook & マクロ なのでしょうか?

単にメールを転送するわけではなく、現在どこまで転送されているのか追跡する為や何時転送したかなど転送のタイミングでSQL Serverに接続して該当するレコードに記録します。また添付ファイルのエクセルに転送記録を書き込むなどVBAの要素が多いからです。
 
結果、VbaProject.OTM とリボンにマクロを実行する転送ボタンを表示するユーザ設定ファイルを同時に配布することで進めることにしました。
 
ただ、VbaProject.OTM を更新する際にOutlookを終了する必要があります。※Outlook起動中はVbaProject.OTMを上書きできない為。
cn.Open "Provider ・・・
rs.Open "テーブル1", cn
 
あれこれ処理・・・
アップデート用スクリプト起動
 
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
Application.Quit ←ここ
すると、実行時エラー_3709「この操作を実行するために接続を使用できません。このコンテキストで閉じているかあるいは無効です。」となり、Outlookが正常終了してくれません。
うまくデータベースと切断できていないようですが、何が原因かわかりますでしょうか。
 
ご指導のほど、よろしくお願いします。

回答
投稿日時: 22/08/31 10:08:12
投稿者: Suzu

引用:
すると、実行時エラー_3709「この操作を実行するために接続を使用できません。このコンテキストで閉じているかあるいは無効です。」となり、Outlookが正常終了してくれません。
うまくデータベースと切断できていないようですが、何が原因かわかりますでしょうか。

原因は判りません。テストもできませんが何かが動作中に、
Outlookを終了しようとしてエラーになっているのは間違いないでしょう。
 
VBS を配布しているなら、そのVBS をローカルに保存して貰い
Outlook終了後、VBS を実行して貰えば良いのでは?
 
 
引用:
これは仕様の話になりますが、ユーザーCはユーザーBが確認したメールしか受け取りたくないからです。用は段階承認です。

引用:
引用:
3)なぜ、Outlook & マクロ なのでしょうか?

単にメールを転送するわけではなく、現在どこまで転送されているのか追跡する為や何時転送したかなど転送のタイミングでSQL Serverに接続して該当するレコードに記録します。また添付ファイルのエクセルに転送記録を書き込むなどVBAの要素が多いからです。

 
仕様と言われるなら、「そうですか」としか言えません。
 
個人的には 仕組み自体として疑問があります。グループウェアを使えばもっと簡潔に済むだろうなと。
アクセスや承認のタイミングをログとして記録する機能も当然備わっています
各クライアントのローカルマシン側でマクロファイルを更新の様な事もしなくて済みます。

回答
投稿日時: 22/09/01 13:43:48
投稿者: taitani
投稿者のウェブサイトに移動

別な切り口でもよいなら。 (SQL Server など DB がある前提なら)
Microsoft 組織アカウントをお持ちであれば、Power Apps や Power Automate を利用したほうが、
Low Code でも作成できますし、メンテナンスも VBA よりは簡易ではないかと。
 
https://powerapps.microsoft.com/ja-jp/
https://powerautomate.microsoft.com/ja-jp/
 
データ (可視) 化するのであれば、Power BI もいいですよ。

投稿日時: 22/09/04 23:16:36
投稿者: アロハ

Suzu様 taitani様
 
コメントありがとうございます。

引用:
うまくデータベースと切断できていないようですが、何が原因かわかりますでしょうか。

原因がわかりました。
Application.Quitの後もVbaProject.OTMは終了することなく実行し続けます。したがって、実行時エラー_3709「この操作を実行するために接続を使用できません。このコンテキストで閉じているかあるいは無効です。」はその後に続くデータベースとのやり取りで発生していました。
なので、単純にApplication.Quitの後にgoto Exit Sub とキチンと終了することで解決しました。どうもお騒がせしました。
引用:
個人的には 仕組み自体として疑問があります。グループウェアを使えばもっと簡潔に済むだろうなと。
アクセスや承認のタイミングをログとして記録する機能も当然備わっています
各クライアントのローカルマシン側でマクロファイルを更新の様な事もしなくて済みます。

疑問に思われましてもこちらとしては、「そうですか」としか言えません。
確かに世の中には便利なものがあってそれを利用することで簡潔に済むかもしれませんね。
その予算があればですが。導入費、保守費は莫大ですよ?それらは考慮されておられますか?
マクロファイルの更新に関しては確かにデメリットではありますが、そんなに頻繁に更新することもないと想定できたのでこの方法に至っております。VBSが動くので自動で更新はしますが。
根本を覆すようなご意見も勉強になりますが、まずは直面している質問に向き合っていただきたいです。
引用:
別な切り口でもよいなら。 (SQL Server など DB がある前提なら)
Microsoft 組織アカウントをお持ちであれば、Power Apps や Power Automate を利用したほうが、
Low Code でも作成できますし、メンテナンスも VBA よりは簡易ではないかと。

今回の内容はRPA化しなくても解決できたので、ご意見だけ参考にさせていただきます。