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的好处。