Pywin32 et Macro Word: comment passer des arguments?
Bonjour à tous,
J'ai déclarer une macro Word de cette forme là:
Code:
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à:
Code:
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") |
Et ce qui me donne droit à un magnifique:
Code:
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!