Bonsoir,
je cherche à automatiser une macro sur un Classeur Excel. Pour cela je passe par un VBScript et le planificateur de tâches.
Dans ce code je ferme et sauvegarde tous les classeurs Excel afin d'éviter que MonFichier soit déjà ouvert et me retrouver avec un fichier ouvert en lecture seul (j'aurais bien aimé faire autrement mais cela m'a apparu le plus simple pour l'instant) avant d'ouvrir MonFichier et d'y lancer la macro en question.
Quand je test ce script sans passer par le planificateur, en double cliquant dessus, tout ce passe bien, les classeurs se ferment si il y en a puis je "réouvre", Excel etc... Tout marche .
Mais lorsque je le lance depuis le planificateur, les autres classeurs ouvert ne sont pas fermés ce qui n'est pas dérangeant tant que ce n'est pas MonFichier. Mais voilà mon but est quand même d'éviter que cela puisse ce produire et là je colle à vrai dire.
Donc si vous pouvez m'aider, je vous en remercie d'avance.
Je suis sous Win7 avec Office 2013 x64.
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
25
26
27 Dim WbXl Dim AppXl On Error Resume Next ' je dois vérifier si excel est ouvert Set AppXl = GetObject(, "Excel.Application") ' cherche Excel If Not Err.number <> 0 then Set WbXl = AppXl.ActiveWorkbook AppXl.DisplayAlerts = False ' bloque les boites de dialogue et force le oui WbXl.Save AppXl.Visible = True 'WbXl.Close AppXl.Quit AppXl.DisplayAlerts = True End If j'ouvre mon classeur Set AppXl = WScript.CreateObject("EXCEL.application") AppXl.Visible = true Set WbXl = AppXl.Workbooks.Open ("C:\Users\MonFichier.xlsm") 'AppXl.run "maMacro" 'je lance ma macro 'le classeur se ferme depuis la macro AppXl.Quit Wscript.Quit ' je quitte le script Set AppXl = nothing Set WbXl = nothing
Partager