2015-10-10 7 views
1

J'ai écrit un script VBA pour Outlook 2010. Ce script a pour but de nettoyer certains éléments des tâches et des contacts de l'utilisateur. Cela doit être fait après une migration vers une nouvelle solution de gestion client. Comme Exchange est connecté à la nouvelle solution, certains éléments sont doublés. Nous devons donc supprimer les éléments de Outlook. Idéalement, cela se ferait sur le serveur Exchange mais nous n'avons pas accès directement à celui-ci ...Déploiement du script VBA Outlook 2010

Mon script fonctionne déjà mais mon problème réside dans la distribution de ce script. Nous n'avons pas d'accès direct aux ordinateurs de ces personnes. Nous avons donc besoin d'un moyen de les empaqueter en téléchargement, de les faire fonctionner une fois depuis un lien dans un e-mail et de l'oublier. La plupart de ces utilisateurs n'ont pratiquement aucune connaissance en informatique. Idéalement, je ne veux pas que ce script reste dans Outlook après cette exécution.

j'ai cherché une solution, mais n'a rien trouvé ...

Voici mon script si cela aide. De plus, je ne suis pas un bon programmeur ... Donc, s'il y a une meilleure façon de le faire, n'hésitez pas à me le dire.

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 

Merci beaucoup!

+0

* Donc, s'il y a une meilleure façon de le faire, n'hésitez pas à me le dire. * - c'est ce que [codereview.se] est pour, avez-vous déjà essayé? –

Répondre

1

Les scripts VBA n'étaient pas conçus pour les déployer sur plusieurs ordinateurs. Si vous devez exécuter votre code sur plusieurs PC, vous devez développer un complément à la place. Les compléments peuvent être installés facilement par les utilisateurs comme n'importe quel autre programme Windows. Si le complément n'est plus requis, il peut être désinstallé ou désactivé à partir de la boîte de dialogue Compléments COM dans Outlook. Voir Walkthrough: Creating Your First VSTO Add-In for Outlook pour commencer rapidement.