2017-10-25 24 views
1

OutlookのVSTOアドインに変換するVBAスクリプトがあります。 VBAでOutlook VSTOアドインカスタムルール/スクリプト

私はその後、私はこの方法を選択することができ、「スクリプトを実行します」とのルールを作成するときにポップアップ表示さ

Public Sub DruckeAnhaenge(oMail As Outlook.MailItem) 

と呼ばれる方法があります。これは "ThisOutlookSession.DruckeAnhaenge"と呼ばれます。

Visual Studioで、まったく同じメソッドを持つVSTOアドインを作成しましたが、もう表示されません。

起動メソッドがこのアドインから呼び出されます(MsgBoxでチェックされています)。だから私の質問は、どのように私はVBAエディタにあるようにルール/スクリプトとしてこのメ​​ソッドを得ることができるのですか?

ここにアドインのコード全体があります。

Public Class ThisAddIn 

    Private Sub ThisAddIn_Startup() Handles Me.Startup 
     MsgBox("Add In wird erfolgreich ausgeführt") 
    End Sub 

    Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown 

    End Sub 

    Private Declare Function ShellExecute Lib "shell32.dll" Alias _ 
     "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, 
     ByVal lpFile As String, ByVal lpParameters As String, 
     ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long 

    Private WithEvents Items As Outlook.Items 

    Public Sub DruckeAnhaenge(oMail As Outlook.MailItem) 
     On Error Resume Next 
     Dim colAtts As Outlook.Attachments 
     Dim oAtt As Outlook.Attachment 
     Dim sFile As String 
     Dim sDirectory As String 
     Dim sFileType As String 

     sDirectory = "C:\Attachments\" 

     'Set colAtts = oMail.Attachments 

     If oMail.Attachments.Count Then 
      For Each oAtt In oMail.Attachments 

       ' This code looks at the last 4 characters in a filename 
       sFileType = LCase$(Right$(oAtt.FileName, 4)) 

       Select Case sFileType 

       ' Add additional file types below 
        Case ".xls", ".doc", ".pdf" 
         sFile = sDirectory & oAtt.FileName 
         oAtt.SaveAsFile(sFile) 
         ShellExecute(0, "print", sFile, vbNullString, vbNullString, 0) 
       End Select 
      Next 
     End If 
    End Sub 
End Class 

答えて

1

Outlookでは、COMアドインをルールに割り当てることはできません。したがって、OOMが提供する対応するイベントを処理する必要があります。その場合、新しいアイテムが受信トレイで受信されたときに起動されるApplicationクラスのNewMailExイベントを処理する必要があります。 NewMailExイベントは、新しいメッセージが受信トレイに到着し、クライアントルール処理が行われる前に発生します。 EntryIDCollection配列に返されたエントリIDを使用してGetItemFromIDメソッドを呼び出してアイテムを処理することができます。それから、DruckeAnhaengeメソッドを呼び出してそこに項目を渡すことができます。

関連する問題