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

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")
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
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!