begin process at 2012 02 13 21:00:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VBScript

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

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


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

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

Auteur : lettredinfo

Ecrire un message privé
Commentaire sur cette source (19)
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


 Sources de la même categorie

Source avec Zip Source avec une capture RECHERCHE & SAUVEGARDE DES FICHIERS PAR LEURS EXTENSIONS par hackoo
Source avec Zip Source avec une capture [VBS] SPLASH SCREEN EN VBSCRIPT par hackoo
Source avec Zip Source avec une capture [VBS] GOOGLE EASTER EGGS par hackoo
Source avec Zip Source avec une capture FILE2COMPARE: COMPARAISON DE DEUX FICHIERS LIGNE PAR LIGNE par hackoo
Source avec Zip Source avec une capture [VBS] COMMENT CRÉER UN DOSSIER ET LE PROTÉGER PAR MOT DE PAS... par hackoo

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CALENDRIER EN VBA POUR EXCEL 2010 par nounou94
Source avec Zip Source avec une capture LES FONCTIONS DATE PAR L'EXEMPLE. par pasquet78
Source avec Zip Source avec une capture CALENDRIER, MODE D'EMPLOI par pasquet78
Source avec Zip Source avec une capture SYNCHRONISATION DES SOUS CALENDRIERS OUTLOOK DANS LE CALENDR... par Sbt
AJOUT D'UN RDV DANS UN "SOUS CALENDRIER D'OUTLOOK" par mpsi

Commentaires et avis

Commentaire de tekila_bandita le 24/02/2006 15:47:57

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

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

++

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

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.

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

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

Commentaire de coucou1953 le 04/07/2006 13:03:32

Merci.

C'est la conclusion à laquelle je suis parvenu.

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+

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

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.

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?

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

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


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

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 ?

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

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

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

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"

Commentaire de adlbg le 21/02/2011 23:52:37

Bonjour,
Ayant de multiples doublons
j'ai exporté Outlook en cal.vcs;
j'ai créé un fichier Nouveau.vcs expurgé,
j'ai "délété" tous les Evénements dans Outlook
j'ai Importé le .vcs
Tout est bien
  SAUF QUE LES LETTRES NON COURANTES (accentuées, ç etc) ONT DISPARU dans Outlook

QUE FAIRE ?????
Remerciements
bien@vous

 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 Exporter les dates d'une bdd dans le calendrier outlook [ par rdeloozc ] Est ce que quelqu'un saurait comment exporter des dates présentes dans une table access dans le calendrier outlook??? Siq uelqu'un a une idée, je ser consulter en vb calendrier ajouté sur outlook [ par claude93 ] bonjour, je ne trouve pas comment aller consulter et modifier les rendez-vous en vb sur un calendrier ajouté Outlook. quelqu'un pourrait-il m'aider ? Exporter un calendrier outlook en html [ par max59172 ] Salut à tous, pour le boulot je dois créer l'exportation automatique d'un calendrier en html. Je pense donc créer un .bat qui supprime l'ancien calend mportation d'une table access dans le calendrier outlook [ par ls8ls8 ] Bonjour, J'exporte manuellement un fichier structuré .txt provenant d'un agenda Lotusnotes 6.02. Je le récupère dans access sous forme simplifiée (7 Exporter [ par sayann ] Bonjour, J'aimerai pouvoir extraire les données contenues dans un agenda/calendrier outlook à l'aide d'un script php. Quelqu'un a-t-il une idée ? J calendrier Outlook dans application web [ par donykas ] Bonjour, Salem Alaykom, l'un des modules de l'application web de mon PFE consiste à afficher la calendrier de planification des réunions de la socié Calendrier outlook en html [ par rigafr ] Bonjour, Je cherche un code en vbscript qui me permettrait "d'exporter" en html le calendrier d'une bal quelconque (évidemment j'ai les droits qu'il f Calendrier Outlook [ par juliencolomb ] Bonjour,Je fais une petite automatisation pour mon boulot sous OutlookLe principe j'ai régulièrement différentes taches sur une période de 3 semainesM


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,716 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales