Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Création d'un RV dans calendrier d'une personne Exchange 2000 à partir d'un programme.

3 réponses
Avatar
jean-michel
Bonjour et merci pour cette première réponse.

Nous avons donc pris cette orientation d'utiliser Outlook.Mapi
Cela nous mène plus loin que CDO puisque nous arrivons à créer un RV à
partir d'un EXE dévellopé en Windev.
Cet EXE fonctionne à partir de 2 postes XP et créé bien un RV dans un
calendrier d'un destinataire nommé. Sur mon serveur 2000 de production,
ainsi que sur un autre poste XP, j'obtiens l'erreur :

Automation/ActiveX à renvoyé l'erreur suivante :
Erreur 8004010F : Echec de l'opération du client en tentant de lire la
propriété <GetSharedDefaultFolder>

Je ne vois pas bien d'où vient ce problème après pas mal de recherches.
Si des idées ?

Mon serveur 2000 est équipé de outlook2000 qui fonctionne (accès à la
BAL sur Exchange). J'ai mis à jour Outlook en version 2003 -> aucun
changement.

Merci d'avance pour vos réponses et/ou liens. Je pense que cette
problématique a déjà été posée de nombreuses fois et que les réponses
seront les bienvenues.

Merci d'avance.


> Bonjour,
>
> Il est plus simple (et plus pérenne) de passer par le modèle object Outlook
> que CDO.
>
> Dans le modèle objet Outlook, tu as une méthode GetSharedDefaultFolder qui
> te permet d'ouvrir le dossier d'un autre utilisateur.
> Ensuite pour créer un RDV, tu n'as plus qu'à ajouter un élément à ce
> dossier.
>
> Cidessous un exemple vbscript tiré de l'aide du modèle objet Outlook et
> enrichi pour la création de RDV
>
> Set myRecipient = olNameSpace.CreateRecipient("Poum Lagaffe")
> myRecipient.Resolve
> If myRecipient.Resolved Then
> Set PoumContactsFolder = olNameSpace.GetSharedDefaultFolder
> (myRecipient, olFolderContacts)
> End If
> Set MyMeetings = PoumContactsFolder.items
>
> Set MyNewMeeting = MyMeetings.add
> MyNewMeeting.Subject = "Réu de travail"
> MynewMeeting.location="Bureau"
> Mynewmeeting.start=...
> Mynewmeeting.end=...
> ...
> MynewMeeting.save
>
> Laurent
>
>
> "jean-michel" <nomail@yahoo.fr> a écrit dans le message de news:
> mn.bb307d6274d6dffb.41605@yahoo.fr...
>> Bonjour.
>>
>> J'ai besoin de créer des rendez-vous dans le calendrier de personnes dans
>> Exchange 2000. Le point d'entrée semble l'utilisation d'un objet COM CDO.
>> Quelqu'un a-t-il déjà réalisé cela ? Où puis-je trouver des éléments ?
>>
>> Le développement peut être fait en VB, Windev/Webdev. Toutes infos utiles
>> me conviendraient.
>>
>> Merci d'avance.
>>
>>

3 réponses

Avatar
Laurent Francfort [MS]
Bonjour,

Tout d'abord nous déconseillons l'installation d'Outlook sur un serveur.

Ensuite dans l'installation d'Outlook, as-tu bien pris l'option "vbscript"
(ou qqe chose comme ça) ?

Laurent

"jean-michel" a écrit dans le message de news:

Bonjour et merci pour cette première réponse.

Nous avons donc pris cette orientation d'utiliser Outlook.Mapi
Cela nous mène plus loin que CDO puisque nous arrivons à créer un RV à
partir d'un EXE dévellopé en Windev.
Cet EXE fonctionne à partir de 2 postes XP et créé bien un RV dans un
calendrier d'un destinataire nommé. Sur mon serveur 2000 de production,
ainsi que sur un autre poste XP, j'obtiens l'erreur :

Automation/ActiveX à renvoyé l'erreur suivante :
Erreur 8004010F : Echec de l'opération du client en tentant de lire la
propriété <GetSharedDefaultFolder>

Je ne vois pas bien d'où vient ce problème après pas mal de recherches.
Si des idées ?

Mon serveur 2000 est équipé de outlook2000 qui fonctionne (accès à la BAL
sur Exchange). J'ai mis à jour Outlook en version 2003 -> aucun
changement.

Merci d'avance pour vos réponses et/ou liens. Je pense que cette
problématique a déjà été posée de nombreuses fois et que les réponses
seront les bienvenues.

Merci d'avance.


Bonjour,

Il est plus simple (et plus pérenne) de passer par le modèle object
Outlook que CDO.

Dans le modèle objet Outlook, tu as une méthode GetSharedDefaultFolder
qui te permet d'ouvrir le dossier d'un autre utilisateur.
Ensuite pour créer un RDV, tu n'as plus qu'à ajouter un élément à ce
dossier.

Cidessous un exemple vbscript tiré de l'aide du modèle objet Outlook et
enrichi pour la création de RDV

Set myRecipient = olNameSpace.CreateRecipient("Poum Lagaffe")
myRecipient.Resolve
If myRecipient.Resolved Then
Set PoumContactsFolder = olNameSpace.GetSharedDefaultFolder
(myRecipient, olFolderContacts)
End If
Set MyMeetings = PoumContactsFolder.items

Set MyNewMeeting = MyMeetings.add
MyNewMeeting.Subject = "Réu de travail"
MynewMeeting.location="Bureau"
Mynewmeeting.start=...
Mynewmeeting.end=...
...
MynewMeeting.save

Laurent


"jean-michel" a écrit dans le message de news:

Bonjour.

J'ai besoin de créer des rendez-vous dans le calendrier de personnes
dans Exchange 2000. Le point d'entrée semble l'utilisation d'un objet
COM CDO. Quelqu'un a-t-il déjà réalisé cela ? Où puis-je trouver des
éléments ?

Le développement peut être fait en VB, Windev/Webdev. Toutes infos
utiles me conviendraient.

Merci d'avance.










Avatar
jean-michel
Bonjour.

Après de nombreuses (mais infructeuses) recherches, je pense que la
piste à suivre viendrai de l'identification du compte qui ouvre la
session outlook.mapi

En effet, on ne précise pas de profil "outlook" lorsqu'on demande à
ouvrir le calendrier d'un utilisateur nommé.

Côté install d'outlook, je ne vois rien de particulier.

Pour info, voici notre code avec l'erreur 8004010f qui en résulte (sauf
à partir de 2 PCs sur lesquels cela fonctionne !) :

CONSTANT
olMailItem = 0
olFolderCalendar = 9
FIN

oApplication est un objet Automation "Outlook.Application"
oNameSpace est objet Automation dynamique //Outlook.NameSpace
oMailItem est objet Automation dynamique //Outlook.MailItem
oRecipient est objet Automation dynamique //Outlook.Recipient
oMapiFolder est objet Automation dynamique //Outlook.MAPIFolder
oAppointmentItem est objet Automation dynamique
//Outlook.AppointmentItem
//Dim strMsg As String

cNom est une chaîne = "nom_user"
oNameSpace = oApplication>>GetNamespace("MAPI")
oMailItem = oApplication>>CreateItem(olMailItem)
oRecipient = oMailItem>>Recipients>>Add(cNom)
oRecipient>>Resolve()
SI oRecipient>>Resolved ALORS
oMapiFolder =
oNameSpace>>GetSharedDefaultFolder(oRecipient,olFolderCalendar)
oAppointmentItem = oMapiFolder>>Items>>Add
oAppointmentItem>>Subject = "En congé"
oAppointmentItem>>Start = "02/27/2006 14:30:00"
oAppointmentItem>>End = "02/27/2006 15:30:00"
oAppointmentItem>>Save()
FIN

PS : il s'agit de code Windev

Merci encore une fois pour votre assistance. Sur le net, je trouve
beaucoup de personnes ayant ce besoin mais sans trouver de procédure
fonctionnelle. On y croit quand même et on persévère. ;o)

Merci pour vos conseils :-)



Bonjour,

Tout d'abord nous déconseillons l'installation d'Outlook sur un serveur.

Ensuite dans l'installation d'Outlook, as-tu bien pris l'option "vbscript"
(ou qqe chose comme ça) ?

Laurent

"jean-michel" a écrit dans le message de news:

Bonjour et merci pour cette première réponse.

Nous avons donc pris cette orientation d'utiliser Outlook.Mapi
Cela nous mène plus loin que CDO puisque nous arrivons à créer un RV à
partir d'un EXE dévellopé en Windev.
Cet EXE fonctionne à partir de 2 postes XP et créé bien un RV dans un
calendrier d'un destinataire nommé. Sur mon serveur 2000 de production,
ainsi que sur un autre poste XP, j'obtiens l'erreur :

Automation/ActiveX à renvoyé l'erreur suivante :
Erreur 8004010F : Echec de l'opération du client en tentant de lire la
propriété <GetSharedDefaultFolder>

Je ne vois pas bien d'où vient ce problème après pas mal de recherches.
Si des idées ?

Mon serveur 2000 est équipé de outlook2000 qui fonctionne (accès à la BAL
sur Exchange). J'ai mis à jour Outlook en version 2003 -> aucun
changement.

Merci d'avance pour vos réponses et/ou liens. Je pense que cette
problématique a déjà été posée de nombreuses fois et que les réponses
seront les bienvenues.

Merci d'avance.


Bonjour,

Il est plus simple (et plus pérenne) de passer par le modèle object
Outlook que CDO.

Dans le modèle objet Outlook, tu as une méthode GetSharedDefaultFolder
qui te permet d'ouvrir le dossier d'un autre utilisateur.
Ensuite pour créer un RDV, tu n'as plus qu'à ajouter un élément à ce
dossier.

Cidessous un exemple vbscript tiré de l'aide du modèle objet Outlook et
enrichi pour la création de RDV

Set myRecipient = olNameSpace.CreateRecipient("Poum Lagaffe")
myRecipient.Resolve
If myRecipient.Resolved Then
Set PoumContactsFolder = olNameSpace.GetSharedDefaultFolder
(myRecipient, olFolderContacts)
End If
Set MyMeetings = PoumContactsFolder.items

Set MyNewMeeting = MyMeetings.add
MyNewMeeting.Subject = "Réu de travail"
MynewMeeting.location="Bureau"
Mynewmeeting.start=...
Mynewmeeting.end=...
...
MynewMeeting.save

Laurent


"jean-michel" a écrit dans le message de news:

Bonjour.

J'ai besoin de créer des rendez-vous dans le calendrier de personnes
dans Exchange 2000. Le point d'entrée semble l'utilisation d'un objet
COM CDO. Quelqu'un a-t-il déjà réalisé cela ? Où puis-je trouver des
éléments ?

Le développement peut être fait en VB, Windev/Webdev. Toutes infos
utiles me conviendraient.

Merci d'avance.












Avatar
Laurent Francfort [MS]
Bonjour,

Pour utiliser la methode GetSharedDefaultFolder, il faut forcément que tu
aies ouvert une session avec le système de messagerie, ce qui ressemble à ça
(en vbscript) :

Set MyOutlook = CreateObject("Outlook.application")
Myoutlook.getnamespace("Mapi").Logon "Nom du profil","",False, False

Le profil étant un paramètrage stocké dans le registre, indiquant à quelle
BAL tu veux te connecter. Il faut que le compte sous lequel tu es loggué ait
accès à la BAL

Dans ton code, je ne vois pas l'instanciation de l'objet Outlook et
l'ouverture de session. Soit tu ne l'as pas copié les 2 lignes de code, soit
c'est fait implicitement, et ça ne m'étonne pas que ça génère un problème.

Tu as deux solutions :
- Soit tu te créés manuellement le profil une fois pour toutes sur la
machine (en allant dans panneau de config --> courrier).
- Soit tu peux utiliser une technique particulière de création de profil à
la volée, mais celle-ci n'est pas accessible à travers le modèle objet
Outlook, uniquement à travers le modèle object CDO. Si tu veux faire comme
ça, il faut :
- Ouvrir une session à la volée avec CDO
- Ouvrir une session via Outlook, en indiquant que tu veux utiliser la
session déjà ouverte


Pour la technique d'ouverture à la volée, ça ressemble à ça :
Set MyMapi = CreateObject("Mapi.Session")
' On ouvre la session CDO avec création de profil à la volée
MyMapi.Logon "","",False, True,,,<ServerExchange> & vblf & <Nom de la BAL>

Set MyOutlook = CreateObject("Outlook.application")
' On ouvre la session Outlook en indiquant que si une session existe déjà,
on l'utilise (c'est le deuxième False)
Myoutlook.getnamespace("Mapi").Logon "Nom du profil","",False, False

Attention, il faut que l'option Objets de données de collaboration soit
installée sur la machine, ce n'est pas fait par défaut avec l'install
d'Outlook

Laurent


"jean-michel" a écrit dans le message de news:

Bonjour.

Après de nombreuses (mais infructeuses) recherches, je pense que la piste
à suivre viendrai de l'identification du compte qui ouvre la session
outlook.mapi

En effet, on ne précise pas de profil "outlook" lorsqu'on demande à ouvrir
le calendrier d'un utilisateur nommé.

Côté install d'outlook, je ne vois rien de particulier.

Pour info, voici notre code avec l'erreur 8004010f qui en résulte (sauf à
partir de 2 PCs sur lesquels cela fonctionne !) :

CONSTANT
olMailItem = 0
olFolderCalendar = 9
FIN

oApplication est un objet Automation "Outlook.Application"
oNameSpace est objet Automation dynamique //Outlook.NameSpace
oMailItem est objet Automation dynamique //Outlook.MailItem
oRecipient est objet Automation dynamique //Outlook.Recipient
oMapiFolder est objet Automation dynamique //Outlook.MAPIFolder
oAppointmentItem est objet Automation dynamique //Outlook.AppointmentItem
//Dim strMsg As String

cNom est une chaîne = "nom_user"
oNameSpace = oApplication>>GetNamespace("MAPI")
oMailItem = oApplication>>CreateItem(olMailItem)
oRecipient = oMailItem>>Recipients>>Add(cNom)
oRecipient>>Resolve()
SI oRecipient>>Resolved ALORS
oMapiFolder =
oNameSpace>>GetSharedDefaultFolder(oRecipient,olFolderCalendar)
oAppointmentItem = oMapiFolder>>Items>>Add
oAppointmentItem>>Subject = "En congé"
oAppointmentItem>>Start = "02/27/2006 14:30:00"
oAppointmentItem>>End = "02/27/2006 15:30:00"
oAppointmentItem>>Save()
FIN

PS : il s'agit de code Windev

Merci encore une fois pour votre assistance. Sur le net, je trouve
beaucoup de personnes ayant ce besoin mais sans trouver de procédure
fonctionnelle. On y croit quand même et on persévère. ;o)

Merci pour vos conseils :-)



Bonjour,

Tout d'abord nous déconseillons l'installation d'Outlook sur un serveur.

Ensuite dans l'installation d'Outlook, as-tu bien pris l'option
"vbscript" (ou qqe chose comme ça) ?

Laurent

"jean-michel" a écrit dans le message de news:

Bonjour et merci pour cette première réponse.

Nous avons donc pris cette orientation d'utiliser Outlook.Mapi
Cela nous mène plus loin que CDO puisque nous arrivons à créer un RV à
partir d'un EXE dévellopé en Windev.
Cet EXE fonctionne à partir de 2 postes XP et créé bien un RV dans un
calendrier d'un destinataire nommé. Sur mon serveur 2000 de production,
ainsi que sur un autre poste XP, j'obtiens l'erreur :

Automation/ActiveX à renvoyé l'erreur suivante :
Erreur 8004010F : Echec de l'opération du client en tentant de lire la
propriété <GetSharedDefaultFolder>

Je ne vois pas bien d'où vient ce problème après pas mal de recherches.
Si des idées ?

Mon serveur 2000 est équipé de outlook2000 qui fonctionne (accès à la
BAL sur Exchange). J'ai mis à jour Outlook en version 2003 -> aucun
changement.

Merci d'avance pour vos réponses et/ou liens. Je pense que cette
problématique a déjà été posée de nombreuses fois et que les réponses
seront les bienvenues.

Merci d'avance.


Bonjour,

Il est plus simple (et plus pérenne) de passer par le modèle object
Outlook que CDO.

Dans le modèle objet Outlook, tu as une méthode GetSharedDefaultFolder
qui te permet d'ouvrir le dossier d'un autre utilisateur.
Ensuite pour créer un RDV, tu n'as plus qu'à ajouter un élément à ce
dossier.

Cidessous un exemple vbscript tiré de l'aide du modèle objet Outlook et
enrichi pour la création de RDV

Set myRecipient = olNameSpace.CreateRecipient("Poum Lagaffe")
myRecipient.Resolve
If myRecipient.Resolved Then
Set PoumContactsFolder = olNameSpace.GetSharedDefaultFolder
(myRecipient, olFolderContacts)
End If
Set MyMeetings = PoumContactsFolder.items

Set MyNewMeeting = MyMeetings.add
MyNewMeeting.Subject = "Réu de travail"
MynewMeeting.location="Bureau"
Mynewmeeting.start=...
Mynewmeeting.end=...
...
MynewMeeting.save

Laurent


"jean-michel" a écrit dans le message de news:

Bonjour.

J'ai besoin de créer des rendez-vous dans le calendrier de personnes
dans Exchange 2000. Le point d'entrée semble l'utilisation d'un objet
COM CDO. Quelqu'un a-t-il déjà réalisé cela ? Où puis-je trouver des
éléments ?

Le développement peut être fait en VB, Windev/Webdev. Toutes infos
utiles me conviendraient.

Merci d'avance.