【发布时间】:2022-11-02 06:17:54
【问题描述】:
我正在 Outlook VBA 中创建一个宏,旨在将联系人从我的默认联系人文件夹复制到另一个联系人文件夹,以用户定义字段的值为条件。当引用内置字段的值时,代码会按需要工作。但是,在尝试引用用户定义字段的值时会出现问题。我的代码似乎无法到达现场。
在这里,当引用联系人的标题时(“标题”是一个内置字段),VBA 立即找到它,没有问题。
Sub copyitem() ' Copy and move all contacts from default folder "Contacts" to "Contacts.1.01
Dim olookitem As Object
Dim olookname As NameSpace
Dim olookfldr As folder
Dim destfolder As folder
Dim olookcontactitem As ContactItem
Dim mycopieditem As ContactItem
Set olookname = Application.GetNamespace("MAPI")
Set olookfldr = olookname.GetDefaultFolder(olFolderContacts)
Set destfolder = olookfldr.Folders("Contacts.1.01")
For Each olookitem In olookfldr.items
If olookitem.Class = olContact And olookitem.Title = "Mr." Then
Set olookcontactitem = olookitem
Set mycopieditem = olookitem.Copy
mycopieditem.Move destfolder
End If
Next
End Sub
但是,当尝试引用在用户定义字段中定义的联系人属于我办公室的哪个团队(名为“团队”的列)时,我的宏无法识别它。代码如下。
Sub copyitem() ' Copy and move all contacts from default folder "Contacts" to "Contacts.1.01
Dim olookitem As Object
Dim olookname As NameSpace
Dim olookfldr As folder
Dim destfolder As folder
Dim olookcontactitem As ContactItem
Dim mycopieditem As ContactItem
Dim Myproperty As Object
Set olookname = Application.GetNamespace("MAPI")
Set olookfldr = olookname.GetDefaultFolder(olFolderContacts)
Set destfolder = olookfldr.Folders("Contacts.1.01")
Set Myproperty = olookfldr.UserDefinedProperties.Find("Team")
Set MyP = olookfldr.UserDefinedProperties
' MsgBox (MyP.item(1).Name)
For Each olookitem In olookfldr.items
If olookitem.Class = olContact And MyP.item(9).Name = "Accounting" Then
Set olookcontactitem = olookitem
Set mycopieditem = olookitem.Copy
mycopieditem.Move destfolder
End If
Next
End Sub
【问题讨论】:
-
为什么每次循环都需要检查文件夹的属性?