Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Bibliothèques tierces
Bibliothèques tierces Forum d'entraide pour les autres bibliothèques non présentes dans la distribution standard de Python
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/07/2012, 15h38   #1
JonathanMQ
Invité régulier
 
Inscription : novembre 2009
Messages : 50
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 50
Points : 8
Points : 8
Par défaut pywin32 :: Appeler Macro dans Outlook

Bonjour,

J'essaie actuellement d'appeler une macro dans mon Outlook 2003, j'ai installé pywin32 et j'ai fouillé longuement sur internet mais je ne trouve pas de solution qui fonctionne.

Code :
1
2
3
4
5
 
class OutL:
    def __init__(self):
    oOutlook = win32.gencache.EnsureDispatch("Outlook.Application")
    oOutlook.run('maFonction')
J'ai aussi essayé

Code :
1
2
3
4
5
6
 
class OutL:
    def __init__(self):
    oOutlook = win32.gencache.EnsureDispatch("Outlook.Application")
    o = oOutlook.Application
    o.run('maFonction')
J'ai toujours le même problème

AttributeError: '<win32com.gen_py.Microsoft Outlook 11.0 Object Library._Application instance at 0x21542128>' object has no attribute 'run'

Auriez-vous une idée pour appeler directement une macro VBA via Python ?

Merci
JonathanMQ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2012, 16h50   #2
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 697
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 697
Points : 4 526
Points : 4 526
Citation:
Auriez-vous une idée pour appeler directement une macro VBA via Python ?
L'API COM de win32 est la même pour tous les "langages".
La question est "comment faire avec VB ou C#?" puis traduire en Python.

Ceci dit, appeler une macro VB depuis l'extérieur pour Word, Excel, Outlook,... est toujours un peu différent voire "non supporté", "mal documenté",...

- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 03/07/2012, 17h24   #3
JonathanMQ
Invité régulier
 
Inscription : novembre 2009
Messages : 50
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 50
Points : 8
Points : 8
????

En C#, j'ai appelé ma macro comme ceci.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
                Type mtype;
 
               Outlook.Application oApp = new Outlook.Application();
 
                mtype = oApp.GetType();
                string[] strArr;
                strArr = new string[5];
                strArr[0] = "Courriel@Destinaire.com";
                strArr[1] = "";
                strArr[2] = "";
                strArr[3] = "Titre";
                strArr[4] = "Contenu";
                mtype.InvokeMember("MaFonction", System.Reflection.BindingFlags.InvokeMethod, null, oApp, strArr);

Et sa fonctionne #1

Il n'y a pas de façon d'appeler les mêmes methodes en python, je ne vois donc pas votre point, ni même l'intêret de votre réponse qui n'en est pas une mais merci pareil
JonathanMQ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2012, 18h15   #4
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 697
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 697
Points : 4 526
Points : 4 526
Salut,

Vu le code qui "marche", la traduire en Python par oOutlook.MaFonction(...) devrait suffire i.e. laisser la couche win32com effectuer le mapping de la fonction et de ses arguments avec la couche COM plutôt que de le faire "explicitement" comme dans le code C#


Mais je doute que vous ayez trouvé cela dans la documentation µSoft, i.e c'est juste un hack.

- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2012, 15h23   #5
Nouk_Lea
Invité régulier
 
Inscription : février 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 25
Points : 8
Points : 8
Voilà :

Code :
1
2
3
4
5
6
7
8
9
10
11
import win32com.client 
import os
 
o = win32com.client.Dispatch("Outlook.Application")
destinataires = "nom1@email.com ; nom2@email.com"
cc = "nom3@email.com"
bcc = ""
sujet = "Le sujet du message"
message = "Le contenu du message \nBlablablablabla \nYadiyadiyada"
fileCompletePath = r"D:\temp\monFichier.txt"
o.FnSendMailSafe(destinataires, cc, bcc, sujet, message, fileCompletePath)
Nouk_Lea est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 02h02.


 
 
 
 
Partenaires

Hébergement Web