2017-03-20 12 views
1

MailItemを関数で渡す方法を検索しています。MailItemを関数に渡す

例:MailItemのSubjectを抽出する関数を呼び出したいとします。

Function testpassing(myMail As Outlook.MailItem) As Actions 
    MsgBox (myMail.Subject) 
End Function 

Sub passing() 
    Dim myItem As Outlook.MailItem 
    Set myItem = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items(1) 

    MsgBox (myItem.Subject) '<~ Work correctly 
    testpassing (Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items(1)) '<~ Run-time error 438 Object doesn't support this property or method 
    testpassing (myItem)  '<~ Run-time error 438 Object doesn't support this property or method 
End Sub 

新しいVBAの見通し。助けてください。感謝:)

+0

'testpassing'と呼ばれるコードを表示してください – Dai

+0

また、' Function'は実際には何も返さない - それも問題の一部であるかもしれません。 – Dai

+0

私はmyItemを次のように定義しています:Dim myItem as Outlook.MailItem/Set myItem = myNamespace.GetDefaultFolder(olFolderInbox).Items(1) – TuanLaDaPoet

答えて

1

testpassing myItemそしてtestpassing Application.GetNamespace("MAPI").GetDefaultFolder(olFolderIn‌​box).Items(1)

もあなたが参照によってまたは値によって手続き(関数またはサブ)に引数を渡すことができByRef and ByVal

に見て、それを呼び出します。

いつものようにハッピーコーディング:-)

1

フォルダには異なるアイテムタイプが含まれている可能性があります。アイテムタイプ(メッセージクラス)を最初に確認することをおすすめします。

If Item(1).Class = OlObjectClass.olMail Then 
    ' 
End If 

詳細については、How to: Programmatically Determine the Current Outlook Itemを参照してください。

+0

それは良い点でもあります。 – 0m3r

+0

ありがとうございます。私はそれを得た:D – TuanLaDaPoet