2011-01-21 6 views
1

私は特定のクラスに次のコードのようなものを含んでいるOutlook 2003のVBAアプリケーションを持っている:一般的なVBAオブジェクト変数のItemPropertyをプロパティ名でどのように参照しますか?

Sub SaveAttributes(objMail as Outlook.MailItem) 
Dim Field As String 
Dim SaveForLater As String 

Field = "Subject" 
SaveForLater = objMail.ItemProperties(Field).Value 

... 

End Sub 

私はなど、MeetingItemsを処理するためのアプリを延長したいのですが、私のようなコードを変更する考えそう:

Sub SaveAttributes(objGeneric as Object) 
... 

この修正は、ランタイムエラー91は、SaveForLaterを割り当てる行で、「変数または設定されていないブロックを持つオブジェクト」を生成します。

私はそうのようにその行を変更した場合、ランタイムエラーが消える:

SaveForLater = objGeneric.ItemProperties.Item("Subject").Value 

しかし、これと同様に、私はその行を変更した場合、それが妙に再表示されます:

SaveForLater = objGeneric.ItemProperties.Item(Field).Value 

は、なぜこれらの行は異なる動作をしますか?そして、汎用オブジェクトのアイテムプロパティを名前で参照する適切な方法は何ですか。名前は文字列変数ですか?

+0

はあなたの「フィールド」変数の代わりに文字列のバリアントを使用してみましたか? –

答えて

1

これが私の仕事:

Sub SaveAttributes(objGeneric As Object) 
    Dim Field As String 
    Dim SaveForLater As String 
    Dim itemProps As Outlook.ItemProperties 
    Dim itemProp As Outlook.ItemProperty 

    Field = "Subject" 

    Set itemProps = objGeneric.ItemProperties 
    Set itemProp = itemProps.Item(Field) 

    SaveForLater = itemProp.Value 

End Sub 
関連する問題