Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Outlook 2010 VBA脚本部署_Vba_Deployment_Outlook_Outlook 2010 - Fatal编程技术网

Outlook 2010 VBA脚本部署

Outlook 2010 VBA脚本部署,vba,deployment,outlook,outlook-2010,Vba,Deployment,Outlook,Outlook 2010,我为Outlook 2010编写了一个VBA脚本。此脚本的目的是为用户清除任务和联系人中的某些元素。这需要在迁移到新的客户机管理解决方案之后完成。由于Exchange已连接到新解决方案,因此某些项目会加倍,因此我们需要从outlook中删除这些项目。理想情况下,这将在Exchange服务器上完成,但我们无法直接访问它 我的脚本已经在运行,但我的问题在于所述脚本的分发。我们无法直接访问这些人的电脑,所以我们需要的是一种将其打包下载的方法,让他们从电子邮件中的链接运行一次,然后忘记它。大多数用户几乎

我为Outlook 2010编写了一个VBA脚本。此脚本的目的是为用户清除任务和联系人中的某些元素。这需要在迁移到新的客户机管理解决方案之后完成。由于Exchange已连接到新解决方案,因此某些项目会加倍,因此我们需要从outlook中删除这些项目。理想情况下,这将在Exchange服务器上完成,但我们无法直接访问它

我的脚本已经在运行,但我的问题在于所述脚本的分发。我们无法直接访问这些人的电脑,所以我们需要的是一种将其打包下载的方法,让他们从电子邮件中的链接运行一次,然后忘记它。大多数用户几乎没有计算机知识。理想情况下,我不希望该脚本在执行一次后仍保留在Outlook中

我寻找解决办法,但什么也没找到

这是我的剧本,如果有帮助的话。而且,我不是一个好的程序员。。。因此,如果有更好的方法,请毫不犹豫地告诉我

Private Sub CleanUp()
Dim TaskFolder As Folder
Set TaskFolder = Session.GetDefaultFolder(olFolderTasks)
Dim Task As TaskItem
Dim objProperty As Outlook.UserProperty
Dim uProperty As String
Dim collTasks As New Collection

Dim ContactFolder As Folder
Set ContactFolder = Session.GetDefaultFolder(olFolderContacts)
Dim Contact As ContactItem
Dim objPropertyCLS As Outlook.UserProperty
Dim uPropertyCLS As String
Dim collContacts As New Collection

uProperty = "crmxml"
uPropertyCLS = "crmLinkState"

For Each Task In TaskFolder.Items
    Set objProperty = Task.UserProperties.Find(uProperty, Outlook.OlUserPropertyType.olText)
    If objProperty Is Nothing Then
        Debug.Print "objProperty is Nothing"
    ElseIf InStr(objProperty, "phonecall") > 0 Then
            collTasks.Add Task
    ElseIf InStr(objProperty, "letter") > 0 Then
        collTasks.Add Task
    ElseIf InStr(objProperty, "fax") > 0 Then
        collTasks.Add Task
    End If
Next

For Each Contact In ContactFolder.Items
    Set objPropertyCLS = Contact.UserProperties.Find(uPropertyCLS, Outlook.OlUserPropertyType.olNumber)

    If objPropertyCLS Is Nothing Then
        Debug.Print "objPropertyCLS is Nothing"
    ElseIf Not objPropertyCLS Is Nothing Then
        collContacts.Add Contact
    End If
Next

For Each Task In collTasks
    Task.Delete
Next

For Each Contact In collContacts
    Contact.Delete
Next
End Sub

非常感谢

VBA脚本不是为在多台PC上部署而设计的。如果需要在多台PC上运行代码,则必须开发一个外接程序。用户可以像其他Windows程序一样轻松地安装外接程序。如果不再需要外接程序,可以从Outlook中的“COM外接程序”对话框中取消安装或禁用该外接程序。请确保快速开始

因此,如果有更好的方法,请毫不犹豫地告诉我这就是为什么,你试过了吗?