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 
+0

那么问题是什么?当您逐步浏览代码时,代码的哪一行出现意外失败或行为异常? –

+0

问题是我不知道我需要写在objContact中选择文件夹中的项目联系人,我试过这个:'sFilter =“[CompanyName ='BEIS'”Set objContact = objContactsFolder.Items。查找(sFilter)objContact.Delete'但没有任何反应:(。 –

+0

所以你试图把一个断点,并通过你的代码? –

你的过滤器是错误的。你缺少“]”:

sFilter = "[CompanyName] = 'BEIS'" 
+0

我用记事本++编辑我的脚本,我认为它没有“断点”我添加了“ ]但是它的结果没有任何反应,我找到了一个替代品!我不知道为什么,但是在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' –

+0

但是您不会从Notepad ++运行代码,对不对?当在任一Office应用程序中从VBA运行时,您可以设置断点。 –

+0

现在我在VBA中运行脚本的一部分(用于删除联系人和脚本的部分正在工作)以及VBS中的其他部分。 在我的VBS中看起来像这样:从Excel中运行宏“删除器”删除具有CompanyName =“BEIS”的旧联系人,当完成时;运行VBS命令添加新联系人'。这意味着我不需要有断点。 –