Outlook VBA疑难解答

问题描述:

我有下面的VBA代码块,它应该为我的默认文件夹中的每个联系人创建一个带有名字的弹出框。Outlook VBA疑难解答

Sub DeleteaContact() 
    Dim myOutlook As Outlook.Application 
    Dim myInformation As NameSpace 
    Dim myContacts As Items 
    Dim myItems As ContactItem 

    Set myOutlook = CreateObject("Outlook.Application") 
    Set myInformation = myOutlook.GetNamespace("MAPI") 
    Set myContacts = myInformation.GetDefaultFolder(olFolderContacts).Items 

    For Each myItems In myContacts 
     MsgBox (myItems.FirstName) 
    Next 

End Sub 

由于某种原因,我在循环结束时出现零星类型不匹配错误。

任何人都可以谈谈这个问题,为什么?

尝试改变:

MsgBox (myItems.FirstName)

到:

MsgBox myItems.FirstName

为VBA不喜欢不必要的括号

文件夹可以存储更多的不仅仅是数据键入” d期望。更改myItems到

Dim myItems As Object 

,并更改消息框

Debug.Print TypeName(myItems) 

然后检查即时窗口(CTL + G),看看是否有任何项目都没有ContactItem。如果你确定你有那里不是联系人,你只需要测试它。保持myItems为对象,而是使用如下代码

If TypeName(myItems) = "ContactItem" Then 
    MsgBox myItems.FirstName 
End If 

一般来说,我离开我的变量类型为特定项目(如ContactItem),而我写的代码,然后将它们转换所有对象时,我完成了。这样,您可以在编码时获得Intellisense的好处。