2011-01-21 62 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,“对象变量或With未设置块”,在该行分配SaveForLater。如果我修改这一行,像这样

运行时错误消失:

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

但是,如果我修改这一行,像这样它再次出现奇特:

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

为什么这些线路不同的行为?什么是通过名称引用泛型对象的项属性的正确方法,其中名称是字符串变量?

+0

您是否尝试过使用变的字符串,而不是为你的“场”的变量? – 2011-01-22 18:33:04

回答

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 
相关问题