Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MACRO POUR EXPORTER LE CALENDRIER COMPLET OUTLOOK EN FORMAT VCALENDAR (VCS)


Information sur la source

Catégorie :VBScript Classé sous : outlook, calendrier, complet, vcalendar, exporter Niveau : Débutant Date de création : 23/02/2006 Vu : 21 162

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

Description

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

  • 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
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
 

Commentaires et avis

signaler à un administrateur
Commentaire de tekila_bandita le 24/02/2006 15:47:57

C'est du VB, pas du VBS...

signaler à un administrateur
Commentaire de shmurz le 01/03/2006 14:07:12

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à.

++

signaler à un administrateur
Commentaire de sayann le 07/03/2006 14:31:47

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

signaler à un administrateur
Commentaire de coucou1953 le 04/07/2006 10:33:50

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.

signaler à un administrateur
Commentaire de BruNews le 04/07/2006 11:04:08 administrateur CS

heure locale <=> heure system, il faut convertir avant.

signaler à un administrateur
Commentaire de coucou1953 le 04/07/2006 13:03:32

Merci.

C'est la conclusion à laquelle je suis parvenu.

signaler à un administrateur
Commentaire de dlimouzin le 20/08/2006 13:38:54

Celà ne marche pas pour moi : Outlook 2003
L'erreur est : Incompatibilité de type et se produit à la ligne 25
Set objAppointment = objAppointments.Items.item(appointmentIndex)

MS aurait-il changé des choses dans ses versions récentes ?
Amicalement et A+

signaler à un administrateur
Commentaire de PtiteFille le 22/08/2006 17:56:07

Le code fonctionne très bien avec outlook 2003
Le seul problème que je rencontre est :

Le contenu des evenements ne s'importe pas forcement. Cela ne respecte pas la charte Vcs.
Il faut que devant les retour chariot il y ait =0d=0a.
Mais je n'arrive pas a le faire.
Ca se met toujours au mauvais endroit.

Quelqu'un peu m'aider ?

Merci

signaler à un administrateur
Commentaire de thaca59 le 25/03/2007 20:02:12

Je souhaiterais récuperer les données d'un calendrier outlook dans excel pour pouvoir completer un petit programme de notes de frais que j'ai écrit. Mes connaissances sont assez limitées mais je pense que le code ci-dessus ne doit pas être très éloigné de ce que je veux faire. Quelqu'un peut-il me donner la solution ?
Merci d'avance.

signaler à un administrateur
Commentaire de sophie_net le 21/04/2007 16:35:53

au fait, ptite erreur ligne 31:
c'est plutôt
Print #6, "DTEND:" & Format(objAppointment.End, "yyyymmdd") & "T" & Format(objAppointment.End, "hhmmss") & "Z"
il me semble,non?

signaler à un administrateur
Commentaire de yoshitsune56 le 25/04/2007 11:34:29

Bonjour,
Ce code marche très bien mais je voulais savoir si quelqu'un avait une idée pour que l'affichage (couleurs, police,catégories créées...) soit aussi sauvegardé?
Merci d'avance...

signaler à un administrateur
Commentaire de FABMC2 le 08/06/2007 22:31:27

Très bien, n'exporte pas les rdv périodiques.

J'ai trouvé une aide microsoft à ce sujet mais qui concerne outlook 97 (propriété IncludeRecurrences)

Je ne l'ai pas testé sous Outlook 97 mais sous 2003 et ça ne fonctionne pas!!! mille millions de sabords!

Voici le bout de code pour info...si quelqu'un a une solution ...

  ' Set the IncludeRecurrences property to make sure all of the
   ' recurring appointments are also included in the collection.
   myItems.IncludeRecurrences = True

Exemple au complet :

Sub GetRecurrences()
   ' This example is VBA automation code and assumes you have the
   ' Outlook Object Library referenced.
   Dim myOlApp As Outlook.Application
   Set myOlApp = New Outlook.Application
   ' Set myItems to all of the items in the folder
   Set myItems = myOlApp.ActiveExplorer.CurrentFolder.Items
   ' Sort the collection based on the start date/time of the appt.
   myItems.Sort "[Start]"
   ' Set the IncludeRecurrences property to make sure all of the
   ' recurring appointments are also included in the collection.
   myItems.IncludeRecurrences = True
   ' Display one of the recurring appointments which have been included.
   MsgBox "The fifth instance of the recurring appointment " &amp; _
      "occurs on:" & myItems.Item(5).Start
End Sub


signaler à un administrateur
Commentaire de flyjodel le 14/01/2008 20:55:42

Sub exportCSV()


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")
    ExportStart = InputBox("indiquez la date de début au format YYYYMMDD")
    ExportEnd = InputBox("indiquez la date de fin au format YYYYMMDD")
    
    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)
        If (Format(objAppointment.Start, "yyyymmdd") >= ExportStart And Format(objAppointment.End, "yyyymmdd") <= ExportEnd) Then
            
            Print #6, "BEGIN:VEVENT"
            
            If objAppointment.AllDayEvent = True Then
                Print #6, "TRANSP:1"
            End If
            
            
            a = Format(DateAdd("h", -1, objAppointment.Start), "hhmmss")
            MsgBox (a)
            
            
            Print #6, "DTSTART:" & Format(objAppointment.Start, "yyyymmdd") & "T" & Format(DateAdd("h", -1, objAppointment.Start), "hhmmss") & "Z"
            Print #6, "DTEND:" & Format(objAppointment.End, "yyyymmdd") & "T" & Format(DateAdd("h", -1, objAppointment.End), "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"
        End If
    
    Next
    Print #6, "END:VCALENDAR"
    Close #6
    MsgBox "Le calendrier a été exporté dans : " & dirLocation


End Sub

signaler à un administrateur
Commentaire de flyjodel le 14/01/2008 20:59:28

le problème vient de ce que le fuseau horaire (ou le décalage heure d'hiver  / heure d'été ) n'est pas pris en compte dans Outlook, il exporte les heures locales mais le format VCS ne connait que les heures TU. Donc en hiver il manque toujours une heure, et en été deux. Il faut remplacer le "-1" par "-2" dans mon nouveau code pour l'utiliser en été.

D'autre part, j'ai modifié le code pour pouvoir exporter seulement une plage de dates.
Je ne peux pas modifier le commentaire précédent qui est parti un peu vite, ne tenez pas compte des lignes "            a = Format(DateAdd("h", -1, objAppointment.Start), "hhmmss")
            MsgBox (a)" qui n'étaient là que pour tester.

Je cherche une fonction qui renvoie le fuseau horaire utilisé, ça existe dans VBA ?

signaler à un administrateur
Commentaire de flyjodel le 14/01/2008 21:20:59

pour faire avancer un peu le schmilibilik, j'ai trouvé ici http://www.ietf.org/rfc/rfc2445.txt des infos sur les fuseaux horaires et comment les utiliser: chercher le texte suivant, page 137

     BEGIN:VCALENDAR
     PRODID:-//RDU Software//NONSGML HandCal//EN
     VERSION:2.0
     BEGIN:VTIMEZONE
     TZID:US-Eastern
     BEGIN:STANDARD
     DTSTART:19981025T020000
     RDATE:19981025T020000
     TZOFFSETFROM:-0400
     TZOFFSETTO:-0500
     TZNAME:EST
     END:STANDARD
     BEGIN:DAYLIGHT
     DTSTART:19990404T020000
     RDATE:19990404T020000
     TZOFFSETFROM:-0500
     TZOFFSETTO:-0400
     TZNAME:EDT
     END:DAYLIGHT
     END:VTIMEZONE
     BEGIN:VEVENT
     DTSTAMP:19980309T231000Z
     UID:guid-1.host1.com
     ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com
     ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:
      MAILTO:employee-A@host.com
     DESCRIPTION:Project XYZ Review Meeting
     CATEGORIES:MEETING
     CLASS:PUBLIC
     CREATED:19980309T130000Z
     SUMMARY:XYZ Project Review
     DTSTART;TZID=US-Eastern:19980312T083000
     DTEND;TZID=US-Eastern:19980312T093000
     LOCATION:1CP Conference Room 4350
     END:VEVENT
     END:VCALENDAR

signaler à un administrateur
Commentaire de sebastienserre le 16/07/2008 10:24:23

Bonjour,

Il y a t'il un lien explixcant comment importer cette macro dans Outlook 2007 ?

Cordialement

signaler à un administrateur
Commentaire de olicam1 le 31/10/2008 18:06:26

salut à tous

quelqu'un saurait-il transposer ce code pour enregistrer l'agenda au format html dans un répertoire spécifique ? J'ai besoin d'une macro qu'on peut executer par une touche Ctrlxxx ou bien une macro qui s'execute sur une action particulière.

Merci

signaler à un administrateur
Commentaire de lagon100 le 19/11/2008 20:29:26

Pour ceux à qui ça interesse encore, pour que l'heure soit en GMT il faut remplacer les lignes ci-dessus (Outlook 2007) :

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"

par ---->

Print #6, "DTSTART:" & Format(objAppointment.StartUTC, "yyyymmdd") & "T" & Format(objAppointment.StartUTC, "hhmmss") & "Z"
        Print #6, "DTEND:" & Format(objAppointment.EndUTC, "yyyymmdd") & "T" & Format(objAppointment.EndUTC, "hhmmss") & "Z"

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

outlook 2002 : exporter des elements du calendrier [ par hydrocephale ] bonjour,j'ai besoin d'exporter regulierement vers une feuille excel un certain nombre d'elements du calendrier d'outlook. cela se fait sans probleme e Extraction du calendrier outlook en vcalendar par une marco [ par sayann ] Bonjour,J'aimerai pouvoir g&#233;n&#233;rer automatiquement un fichier vcalendar &#224; l'aide d'une macro, &#224; partir de outlook 2003 et cela pour Automatisation de l'enregistrement en page web du calendrier Outlook [ par xxxLISAxxx ] Bonjour, Je travaille sous Outlook 2003 et je cherche &#224; automatiser l'enregistrement en page web du calendrier....L'id&#233;al serait que la pa Ouvrir une application outlook et afficher le calendrier [ par GuyRev ] Bonjour,VBAAvec ce code j'active Outlookmail mais serai-t-il possible d'afficher directement le calendrier ?Application.ActivateMicrosoftApp xlMicroso Ecrire dans 2 outlook en meme temps [ par billytalent ] Bonjour a tousune question farfelue :est il possible de remplir le calendrier de deux outlook en meme temps ?je m explique :le calendrier Outlook 2003 VBA choix d'un calendrier outlook pour inserer des RDVS [ par jldancet ] Bonjour,J'ai un bout de code qui me permet d'envoyer de Excel dans Outlook calendrier un paquet de rendez-vous, le probleme est qu'ils vont toujours d macro outlook pour calendrier [ par dieutoto ] bonjour,je cherche désèpérement une macro pour outlook 2002 qui copierai certain élement d'un "calendrier A" (uniquement ceux qui appartiennent à une extraction outlook, utilisation des champs [ par desbutes ] BonjourJ'espère être dans la bonne thématique, sinon désoléAvant je gerais mes deplacements en ligne avec une inteface PHP et une base mysql ,le tout  Export auto calendrier Outlook [ par Ma2004 ] Bonjour à tous !Est-il possible via une macro d'exporter les tâches du calendrier Outlook ? On peut le faire via les menus mais je voudrais l'automati Exporter messages de Outlook [ par fdiedler2000 ] BonjourEst il possible d'exporter tous ses messages de sa boite au lettre Outlook dans un fichier .psd ?Merci


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,905 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.