Bonjour à tous,
J'ai déclarer une macro Word de cette forme là:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Sub merge(path As String) Dim i As Integer With Application.FileSearch .LookIn = path .FileName = "*.doc" .Execute For i = 1 To .FoundFiles.Count Documents.Open FileName:=.FoundFiles(i) Selection.WholeStory Selection.Copy Documents(2).Activate Selection.Paste Documents(1).Activate ActiveDocument.Close False Next i End With End Sub
Et j'aimerais appeler cette macro depuis un python, en lui passant en argument le fameux "path".
J'ai tenté avec ce code là:
Et ce qui me donne droit à un magnifique:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #!/bin/env python import glob import os import sys from win32com.client import Dispatch wrd = Dispatch('Word.Application') newDoc = Dispatch('Word.Document') path = "c:\\input" wrd.visible = 0 macro_to_run = "merge" print("Application de la macro " + macro_to_run) doc = wrd.Documents.Add newDoc.SaveAs("C:\\test.doc") wrd.Run(macro_to_run, (path,)) newDoc.SaveAs("C:\\toto.doc") newDoc.Close() wrd.Quit() print("Fin de l'application de la macro")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Traceback (most recent call last): File "C:\Documents and Settings\VMWare01\Bureau\pydocmerge.py", line 19, in <module> wrd.Run(macro_to_run, (path,)) File "<COMObject Word.Application>", line 14, in Run File "C:\Python32\lib\site-packages\win32com\client\dynamic.py", line 276, in _ApplyTypes_ result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args) pywintypes.com_error: (-2147352567, "Une exception s'est produite.", (0, None, None, None, 0, -2147352571), 2)
Où se trouve mon erreur? Dans la macro? Dans le python? Est-il seulement possible d’appeler des macros avec arguments?
Merci pour votre aide!
Partager