Outlook联系人的过滤器CompanyName =“...”
我开始编写代码,但我不知道需要在变量objContact中编写什么来选择文件夹中的项目联系人。Outlook联系人的过滤器CompanyName =“...”
我想:
sFilter = "[CompanyName= 'BEIS'"
Set objContact = objContactsFolder.Items.Find(sFilter)
objContact.Delete
目前我的代码看起来像这样:
Sub ChangeCompanyName()
Dim objContactsFolder 'As Outlook.MAPIFolder
Dim objContacts 'As Outlook.Items
Dim strCo 'As String
Dim objContact 'As Object
Dim iCount 'As Integer
' Set
Set objOutlook = CreateObject("Outlook.Application")
Set objNameS = objOutlook.GetNamespace("MAPI")
Set objContactsFolder = objNameS.GetDefaultFolder(olContactItem)
Set objContacts = objContactsFolder.Items
' Delete Contact if company names = strCo
strCo = "BEIS"
Set objContact = ???
For Each objContact In objContacts
If TypeName(objContact) = "ContactItem" Then
If objContact.CompanyName = strCo Then
objContact.Delete
End If
End If
Next
' Clean up
Set objContact = Nothing
Set objContacts = Nothing
Set objContactsFolder = Nothing
End Sub
你的过滤器是错误的。你缺少“]”:
sFilter = "[CompanyName] = 'BEIS'"
我用记事本++编辑我的脚本,我认为它没有“断点”我添加了“ ]但是它的结果没有任何反应,我找到了一个替代品!我不知道为什么,但是在Excel/Outlok VBA中我的脚本正在工作,所以我要使用这个命令来运行宏:Set objExcel = CreateObject (“Excel.Application”) Set oShell = CreateObject(“WScript.Shell”) Set wb = objExcel.Workbooks.Open(“C:\ TEST \ Deleter.xls”) objExcel.Run“'Deleter.xls “!删除器” wb.Close objExcel.Quit oShell.Run“taskkill/im EXCEL.exe”,,True' –
但是您不会从Notepad ++运行代码,对不对?当在任一Office应用程序中从VBA运行时,您可以设置断点。 –
现在我在VBA中运行脚本的一部分(用于删除联系人和脚本的部分正在工作)以及VBS中的其他部分。 在我的VBS中看起来像这样:从Excel中运行宏“删除器”删除具有CompanyName =“BEIS”的旧联系人,当完成时;运行VBS命令添加新联系人'。这意味着我不需要有断点。 –
那么问题是什么?当您逐步浏览代码时,代码的哪一行出现意外失败或行为异常? –
问题是我不知道我需要写在objContact中选择文件夹中的项目联系人,我试过这个:'sFilter =“[CompanyName ='BEIS'”Set objContact = objContactsFolder.Items。查找(sFilter)objContact.Delete'但没有任何反应:(。 –
所以你试图把一个断点,并通过你的代码? –