Fermer une application Word lancée sous Internet Explorer

franc106 Messages postés 2 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 5 novembre 2004 - 5 nov. 2004 à 12:47
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 - 5 nov. 2004 à 21:01
Bonjour,
Dans le cadre d'une application intranet (java et I.E.), qui permet d'ouvrir des documents Word, Je ne parviens pas dans une macro à conclure par la fermeture du document et fermer Word.
La commande Application.quit ne fonctionne pas . VBA me dit que "cette méthode ou propriété n'est pas disponible car ce document est dans une autre application". Merci beaucoup.

4 réponses

thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
5 nov. 2004 à 14:15
tu peux essayer ça,
dans ce code on recherche la fenetre par le texte qui est affiché en haut dans la partie bleu de la fenetre et si elle est trouvé on envoi l'evenement de fermeture (le PostMessage )

je pense que ce qui t'interresse c'est le PostMessage peut etre que la methode pour trouver la fenetre ne te convient pas ( le FindWindow ) dans ce cas va voir mon code
http://www.vbfrance.com/code.aspx?id=27262
ce code liste toutes les fenetres visible sur le bureau windows, ça te donnera sans doute des idées pour identifier la fenetre que tu veux fermer

met ca dans un form et defini la variable MyFenetreName

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Sub Form_Load()

dim MyFenetreName as string

MyFenetreName = "Nom de la fenetre"

'ferme la fenetre trouvée
WinWnd = FindWindow(vbNullString, MyFenetreName)
ShowWindow WinWnd, SW_SHOWNORMAL
PostMessage WinWnd, WM_CLOSE, 0&, 0&

End Sub
0
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
5 nov. 2004 à 14:17
excuse moi il faut aussi rajouter ces constantes :

Const SW_SHOWNORMAL = 1
Const WM_CLOSE = &H10
Const WM_COMMAND = 273
Const BN_CLICKED_YES = 6
Const BN_CLICKED_NO = 7
0
franc106 Messages postés 2 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 5 novembre 2004
5 nov. 2004 à 17:37
Bonsoir,

J'ai appliqué ta solution sans résultat. En fait, j'ai créé une form dans laquelle j'ai copié ton code.
En pas à pas, cette form ,appelée Userform1, s'affiche au milieu de mon document Word et j'en reste là.
Pas de postmessage !

J'ai peut-être zappé quelque chose...

Sinon l'idée de base est bonne. Je vais regarder tes sources à l'adresse indiquée.

Doit-on passer par une form. N'existe t-il pas des instructions liées aux fermetures de fenêtre windows qu'on pourrait inclure dans la macro AutoExit() ?

Merci et à +
0
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
5 nov. 2004 à 21:01
je crois avoir compris tu veux fermer le document qui contient la macro de fermeture de ce meme document ?

est ce que un simple "end" ne marcherait pas pour fermer le document qui contient ta macro ?

dans la solution que je t'ai proposé, si ta macro est incluse dans le document word qui doit etre fermé essaye de faire

PostMessage me.hwnd, WM_CLOSE, 0&, 0&

autrement si tu reessaye tel quel la solution proposé, lorsque, en mode pas a pas, tu as passé la ligne
WinWnd = FindWindow(vbNullString, MyFenetreName)
tu dois avoir WinWnd different de 0 car c'est la valeur de ton Handle(ca veut dire que la fonction a bien trouvé ta fenetre), si elle est egal a 0 c'est que le titre de la fenetre ouverte que tu veux fermer n'est pas le bon ou mal orthographié, ou pas complet.
0
Rejoignez-nous