2016-09-09 11 views
0

以下のコードを.oftファイル/電子メールで開くようにします。.oftのオープン時にコードを実行

ランタイム91エラーが発生しました。

Public WithEvents myItem As Outlook.MailItem 
Public EventsDisable As Boolean 

Private Sub Application_ItemLoad(ByVal Item As Object) 
    If EventsDisable = True Then Exit Sub 
    Set myItem = Item 
End Sub 


Private Sub myItem_Open(Cancel As Boolean) 
    EventsDisable = True 
    Dim Insp As Inspector 
    Dim obj As Object 
    Set Insp = Application.ActiveInspector 
    Set obj = Insp.CurrentItem 

    obj.HTMLBody = Replace(obj.HTMLBody, "XXXX", Format(Now + 14, "MMMM dd, yyyy")) 

    Set obj = Nothing 
    Set Insp = Nothing 

    EventsDisable = False 
End Sub 

最後のSub myItem_Openをパブリックサブとして手動で実行すると、完全に機能します。

+2

私は、Outlookは、これが問題であるかどうかが、Application_ItemLoad' ''に渡さItem'パラメータは常にあることを行っていない場合、私は確認できないので、インストールされていません。 'Outlook.MailItem'です。 – Comintern

+0

@Cominternあなたはもう少し具体的になりますか?アイテム自体は.oftファイルになります。それはMailItemとは見なされませんか?私のコードがどのようにしなければならないかの例を教えてください。 – MFranco

+0

私が言ったように、Outlookはありませんが、[これらのいずれか](https://msdn.microsoft.com/en-us/library/office/ff861573.aspx)になる可能性があります。 [ドキュメントはこちら](https://msdn.microsoft.com/en-us/library/office/ff868544.aspx)。 – Comintern

答えて

0

代わりにInspectors.NewInspectorイベントを使用する必要があります(InspectorsApplication.Inspectorsから取得できます)。

更新。トップ私の頭のオフ

Public WithEvents myInspectors As Outlook.Inspectors 

Private Sub Application_Startup() 
    set myInspectors = Application.Inspectors 
    MsgBox "Application_Startup" 
End Sub 

Private Sub myInspectors_NewInspector(ByVal insp As Inspector) 
    MsgBox "myInspectors_NewInspector" 
    Set obj = Insp.CurrentItem 
    obj.HTMLBody = Replace(obj.HTMLBody, "XXXX", Format(Now + 14, "MMMM dd, yyyy")) 
    Set obj = Nothing 
End Sub 
+0

私はここにあなたに従っているかどうかわかりません。私はInspを設定しています。 Application.ActiveInspectorに転送します。代わりにApplication.Inspectorsに設定し、DimをInspectors.NewInspectorとして宣言する必要がありますか? @DmitryStreblechenko – MFranco

+1

あなたが商品を開くまで、検査員はいません。 Inspectors.NewInspectorイベントを購読する必要があります。 OFTファイルが開いているときに起動します。次に、NewInspectorイベントハンドラに渡されたInspectorオブジェクトを使用して、Inspector.CurrentItemプロパティを読み取ることができます。 MailItemオブジェクトを取得したら、Bodyプロパティを置き換えることができます。 –

+0

例を挙げることはできますか?複雑である必要はありませんが、あなたのコードを簡単に使うことができます。助けてくれてありがとう。 – MFranco

関連する問題