2016-08-19 10 views
1

ExcelワークブックのOutlooks 'ThisOutlookSession'に保存されているプロシージャを呼び出そうとしています。残念ながら、Newer Outlook 2010アプリはMSオフィス製品間のapplication.run *SubName*との互換性がありません。新しい電子メールが作成されたことを検出したとき(WithEvents)

有人ステーションが必要な「.send」のセキュリティメッセージのために、Outlooksの代わりに電子メールを送信するExcelスクリプトを完了するオプションはありません。 (&会社のポリシーからセキュリティ設定を変更することができませんでし)

現在のワークフローを...

- ユーザが対象に「コマンド」で私に電子メールを送信&添付ファイル

- イベントリスナー発見し、成功しましたExcelで処理さ

Private WithEvents Items As Outlook.Items 
& 
Private Sub Items_ItemAdd(ByVal Item As Object) 

-onceは、私が自動的銭に戻って、このデータを取得しようとしていますOutlookで聴くために、以下のヘッダーを含む添付ファイルにExcelのルーチンを実行しますder。 (これが問題の場所です)

私は返信メールを作成して準備するために、レイトバインディングをExcelで使用しています。それは '.send'の前の一歩です。私は、理想的にはSendKeysステートメントを避けたいのですが、これは他のワークブックで同時に作業すると完全に信頼できないためです。 Excelで

...

Sub test() 
Dim aOutlook As Object 
Dim aEmail As Object 

Set aOutlook = CreateObject("Outlook.Application") 
Set aEmail = aOutlook.CreateItem(0) 

aEmail.To = "My email address" 
aEmail.Subject = "Testing" 
aEmail.Body = "Testing" 
aEmail.display 

End Sub 

私は延々とOutlookがExcelはMSDNページに記載されているイベントで、この新しい電子メールを作成し認識するために取得しようとしてきました。私は以下のコードのようなものは、新しいメールアイテムを識別するために必要なものだと思うが、Outlook.mailItemの下でプリセット宣言のほとんどを使って成功することはない。

Private WithEvents NewItem As Outlook.mailItem 

あなたは溶液または私は誰もが将来的にこれを必要とする場合、解決

+1

downvotedので、私は私の質問を向上させることができる理由、教えてください場合 – Xiphos

答えて

1

を追求するための代替のアイデアを持っているなら、私に知らせてください。セキュリティ警告をバイパスし、送信キーに依存しません。

Excelはメールを準備して表示します。準備が整ったら、Outlookからの 'Onイベント'はメールアイテムが読み込まれたときに 'To'アドレスを認識し、そこから引き継ぐことができます。

注記正しい電子メールが送信されていることを確認するために、item.subject内の特定のコードなど、より多くのパラメータを追加する必要があります。 Excelで

:Outlookで

Sub test() 
Dim aOutlook As Object 
Dim aEmail As Object 

Set aOutlook = CreateObject("Outlook.Application") 
Set aEmail = aOutlook.CreateItem(0) 

aEmail.To = "[email protected]" 
aEmail.Subject = "Testing" 
aEmail.Body = "testing" 
aEmail.Display 

End Sub 

Public WithEvents myItem As Outlook.mailItem 

Private Sub Application_ItemLoad(ByVal Item As Object) 
    If (TypeOf Item Is mailItem) Then 
     Set myItem = Item 
    End If 
End Sub 

Private Sub myItem_Open(Cancel As Boolean) 

If myItem.To = "[email protected]" Then 
    MsgBox "Detected" 
    myItem.Send 
End If 

End Sub 
関連する問題