Outlook (全般)

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

 
(Windows 10 Home : Outlook 2013)
Outlookでのメッセージ作成方法の違いによるVBAの挙動の違い
投稿日時: 20/11/03 12:02:11
投稿者: YamajiKameKame

お世話になります.
いつも拝見し参考にさせていただいております!
 
私はOutlookのVBAで送付アドレスに自動でBCCに自分のアドレスを入れるなどの機能を実装して使っています.その際には,「ThisOutlookSession」に記述しています.(下記のようなコードです).
 
通常は「新しい電子メール」でメッセージを作成していますが,OSでファイルを右クリック→送る→メール でメッセージを作成する場合には,送信時に機能しません.
 
ファイルを右クリック→送る→メールでも「新しい電子メール」で作成したメールと同様にコードを自動実行させるには,どのようにしたらよいのでしょうか?
 
ご教示の程,よろしくお願いいたします.
 
 
-------------------------
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim objMe As Recipient
        Set objMe = Item.Recipients.Add(“メールアドレス”)
        objMe.Type = olBCC
        objMe.Resolve
        Set objMe = Nothing
End Sub
 
 

回答
投稿日時: 20/11/04 08:44:59
投稿者: Suzu

引用:
OSでファイルを右クリック→送る→メール でメッセージを作成する場合には,送信時に機能しません
 
ファイルを右クリック→送る→メールでも「新しい電子メール」で作成したメールと同様にコードを自動実行させるには,どのようにしたらよいのでしょうか?

 
VBAでないといけませんか?
 
 
元々、右クリックの メール送信は
C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\SendTo
にある、Mail Recipient.MAPIMail ファイルの中身は、【Mail】だけです。
 
ですので、メール作成画面の立ち上げまでであり、
なのです。
 
 
簡単なのは、ショートカットを作成します。
先ほどの C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\SendTo にて
右クリック 「新規作成」-「ショートカット」
 
「項目の場所を入力してください」 にて、
mailto:xxxxx@domain.ne.jp
の様に、mailto: タグを使い、
メールアドレスを指定したショートカットを 右クリックメニューに 追加します。

投稿日時: 20/11/04 10:29:09
投稿者: YamajiKameKame

Suzuさん,丁寧なご回答ありがとうございます!
 
>VBAでないといけませんか?
 
宛先の自動挿入以外に,送信者が社外ドメインか否かのチェック,添付書類の種類のチェックなどの機能を入れていて,ぜひともVBAでThisOutlookSessionに記述した内容を動作させたいのです.
 
>C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\SendTo 中にショートカットを作成
 
ご提示いただいた方法で作ってみたのですが,ファイルを右クリック→送る で表示されません.
再起動もしてみましたがダメで,別に問題があるのかもしれません.
 
いずれにせよ,考えていなかった発想でして,大変勉強になりました.重ねてお礼申し上げます.

回答
投稿日時: 20/11/04 17:21:47
投稿者: Suzu

引用:
ファイルを右クリック→送る で表示されません.
再起動もしてみましたがダメで,別に問題があるのかもしれません.

 
パスは合っていますか?
管理者権限を持ったユーザーでしょうか?
 
ファイル名を指定して実行 にて
『shell:sendto』でも、「送る」のフォルダを開く事が可能です。
そちらでも試してみてください。
 
 
そもそも、ここに入れられなければ、「送る」に表示できないですから・・
当方としてはお手上げになります。
 
 
「送る」に表示できる事を前提として・・
 
VBS を作成し その中で、
・WScript.Shell を使用し、Cmd.exe から、Outlook をコマンドラインスイッチ付きにて呼び出す
 
【Microsoft Office 製品のコマンド ライン スイッチ】
https://support.microsoft.com/ja-jp/office/microsoft-office-%E8%A3%BD%E5%93%81%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89-%E3%83%A9%E3%82%A4%E3%83%B3-%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81-079164cd-4ef5-4178-b235-441737deb3a6#ID0EAACAAA=Outlook
 
 
ファイルを右クリックし 送る の際の、ファイルは
---------------------------------------
Set objArgs = WScript.Arguments
 
If objArgs.Count > 0 Then
  MsgBox objArgs(0)
End If
---------------------------------------
の様な形で取得可能です。
 
・どうせVBSを使用するなら、その中で、OUTLOOK をオートメーションにて操作する事も可能ですね。
 
※Outlook は使用していないので、サンプルコードは提示できません。

投稿日時: 20/11/05 12:33:42
投稿者: YamajiKameKame

Suzuさん,再度のご回答ありがとうございます!
 
>パスは合っていますか?
管理者権限を持ったユーザーでしょうか?
 
社用のPCなので,純然たる管理者でのログインではないのですが,権限はあるようです.
 
>そもそも、ここに入れられなければ、「送る」に表示できないですから・・
当方としてはお手上げになります。
 
問題の「メール受信者」や新たに作った「フォルダーへのショートカット」,「ワードのショートカット」は出し入れして,表示も変化るのですが,お教えいただいた「mailto:xxxxx@domain.ne.jp」のようなショートカットは入れられても表示がされません.
アプリケーションのショートカット以外は表示されない仕様なのかと思います.
 
>「送る」に表示できる事を前提として・・
>VBS を作成し その中で、
・WScript.Shell を使用し、Cmd.exe から、Outlook をコマンドラインスイッチ付きにて呼び出す
 
ですから,Suzuさんがご教示くださった方法で作成したスクリプトは表示されて使えると思われます.
お教えいただいた方法は,私が今までやったことのない方法なので,直ぐに出来ませんので,勉強して実施してみます.
 
出来上がったら報告いたします.
ありがとうございました.

回答
投稿日時: 20/11/05 14:50:49
投稿者: Suzu

引用:
問題の「メール受信者」や新たに作った「フォルダーへのショートカット」,「ワードのショートカット」は出し入れして,表示も変化るのですが,お教えいただいた「mailto:xxxxx@domain.ne.jp」のようなショートカットは入れられても表示がされません.
アプリケーションのショートカット以外は表示されない仕様なのかと思います.

そう言う事なのですね。
すみません。出来る「だろう」で、よく確認せずに投稿しておりました。
mailtoの、URLショートカットは、確かに表示されませんね。
すみませんでした。
 
どんな物を、SendToに入れても 表示されない と受け取ってしまいました。
 
表示されるのであれば、
VBSを使用せずに、OUTLOOK.EXE へのショートカットとする方法もありそうですね。

投稿日時: 20/11/07 12:24:43
投稿者: YamajiKameKame

Suzuさん,ご回答ありがとうございます!
 
未経験の作業でしたが,以下のコードを書いたVBscriptファイルを作り,ショートカットをshell:sendtoで表示されるフォルダに入れることで,「右クリック→送る→“VBscriptショートカット”」で作成した新規メッセージで,OutlookのVBAを全て実行できるように出来ました.
.Outlookを起動していなくても,ちゃんとVBAが動きます.
 
---------------------------------------------------------------
Set objArgs = Wscript.Arguments
  
If objArgs.Count > 0 Then
 
    Set ws = CreateObject("WScript.Shell")
    ws.Run "outlook.exe /a " & """" & objArgs(0) & """"
    Set ws = Nothing
 
End If
---------------------------------------------------------------
 
ありがとうございました!!
Suzuさんのご指導が無ければたどり着けませんでした.
 
>VBSを使用せずに、OUTLOOK.EXE へのショートカットとする方法もありそうですね.
 
残念ながらこれは動きませんでした.
 
 
心残りなのは,Unicode文字(例えば中国語)が入っているファイル名だとエラーが出てしまうことです.
ws.Run "cmd.exe /c chcp 65001" といったコマンドプロンプトの文字コードを変えるコードをOutlook操作前に入れても駄目でした.
これは今後の課題です.
 
ただ,私が作ったVBAを主に使うのは中国語OSなのでエラーは出ないと予想されます.また,エラーが出るということはその方法では送れないということで,普通に新規メッセージを作ってファイルをドラッグ アンド ドロップして添付すればいいのですが.