Macro pour exporter le calendrier complet outlook en format vcalendar (vcs)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 37 745 fois - Téléchargée 29 fois

Contenu du snippet

J'aurai aimé pouvoir trouver cette option directement dans Outlook, mais apparemment ce n'était pas prévu.
Il est possible d'enregistrer chaque événement un par un en format vcs (vCalendar) mais pas d'exporter tout le calendrier.
Voici donc une petite macro permettant d'exporter tous les événements dans un fichier qui peut ensuite être importé dans un agenda collectif en ligne (WebCalendar par exemple).
Il doit être assez simple d'en faire une version pour iCalendar.

Source / Exemple :


Sub export()

Dim dirLocation As String
   
    dirLocation = InputBox("Donnez un emplacement sur votre disque et un nom de fichier avec l'extsension .vcs (e.g., c:\cal.vcs). Vous pourrez importer ce fichier à partir de WEbcalendar")
    If dirLocation = Null Or Len(dirLocation) = 0 Then
        Exit Sub
    End If
    
    Dim objApplication As Outlook.Application
    Dim objNameSpace As Outlook.NameSpace
    Dim objAppointments As Outlook.MAPIFolder
    Dim objAppointment As Outlook.AppointmentItem
    Dim appointmentIndex As Integer

    Set objApplication = CreateObject("Outlook.Application")
    Set objNameSpace = objApplication.GetNamespace("MAPI")
    Set objAppointments = objNameSpace.GetDefaultFolder(olFolderCalendar)

    Open dirLocation For Output As #6
    Print #6, "BEGIN:VCALENDAR"
    Print #6, "PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN"
    Print #6, "VERSION:1.0"
    For appointmentIndex = 1 To objAppointments.Items.Count
        Set objAppointment = objAppointments.Items.item(appointmentIndex)
        Print #6, "BEGIN:VEVENT"
        If objAppointment.AllDayEvent = True Then
          Print #6, "TRANSP:1"
        End If
        Print #6, "DTSTART:" & Format(objAppointment.Start, "yyyymmdd") & "T" & Format(objAppointment.Start, "hhmmss") & "Z"
        Print #6, "DTEND:" & Format(objAppointment.Start, "yyyymmdd") & "T" & Format(objAppointment.Start, "hhmmss") & "Z"
        Print #6, "SUMMARY;ENCODING=QUOTED-PRINTABLE:" & objAppointment.Subject
        Print #6, "DESCRIPTION;ENCODING=QUOTED-PRINTABLE:" & objAppointment.Body
        Print #6, "PRIORITY:" & objAppointment.Importance
        Print #6, "END:VEVENT"
     
    Next
    Print #6, "END:VCALENDAR"
    Close #6
    MsgBox "Le calendrier a été exporté dans : " & dirLocation
    End Sub

Conclusion :


Bon, j'espère que ce sera utile à certains

A voir également

Ajouter un commentaire

Commentaires

tekila_bandita
Messages postés
248
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
15 mars 2007
8 -
C'est du VB, pas du VBS...
shmurz
Messages postés
6
Date d'inscription
mardi 8 février 2005
Statut
Membre
Dernière intervention
24 août 2010
-
C'est exactement ce que j'étais en train de chercher. Je vais voir s'il n'est pas possible de choisir un intervalle pour l'export du calendrier, plutôt que de tout sélectionner.
J'ai vu que la sélection d'événement se faisait par index, je vais chercher sans doute de ce côté-là.

++
cs_sayann
Messages postés
11
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
9 février 2009
-
Salut!
J'ai testé et ça marche du tonnerre en exécutant la macro à partir de microsoft visual basic. Mais essayant directement depuis outlook, il génère une erreur "Sub, Function ou Property non définie (erreur 35)".
Qu'est-ce que cela signifie ? Y a-t-il un moyen de corriger le problème ?
Merci d'avance
Sayann
coucou1953
Messages postés
2
Date d'inscription
mardi 4 juillet 2006
Statut
Membre
Dernière intervention
4 juillet 2006
-
Aucun problème pour exporter le calendrier au format vcs mais lors de l'importation du fichier vcs dans Outlook toutes les heures sont augmentées de 2 !

Quelqu'un peut-il m'expliquer pourquoi ?

Merci.
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16 -
heure locale <=> heure system, il faut convertir avant.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.