Re: encore plus dur -> Fermer fichier word s'il est ouvert...

Posté par Anak1 le 11/12/2006 14:24:31
Merci a tous !

Pour résoudre le pb, j'ai finalement fait une fonction EstOuvertFichierWord
(sfichierword -> Chemin+NomDufichier)
Elle propose de fermer la fenêtre et renvoi 1 si au final le fichier est resté ouvert.

Si y a 2 instances de word ca marche pas :(... tant pis :p

FONCTION EstOuvertFichierWord(sfichierword)                                  
QUAND EXCEPTION //cas ou l'utilisateur clique sur annuler dans word
	RENVOYER 1  // la méthode close() ne se déroule pas comme prévu
FIN

oWrd est un objet Automation dynamique
PosFichier est un entier
PosFichier=Position(sfichierword,"\",Taille(sfichierword),DepuisFin)
LeFichierWord est une chaîne=sfichierword[[PosFichier+1 A ]]

//On tente de récupérer une instance Word en cours
oWrd = ObjetActif("Word.Application")

//Si instance en cours on en lance une recherche
SI oWrd <> Null ALORS
	nDoc est un entier
	i est un entier 			
	nDoc = oWrd>>Documents>>Count()
	POUR i = 1 A nDoc
		SI Majuscule( oWrd>>Documents(i)>>Name ) = Majuscule(LeFichierWord) ALORS
			SI	OuiNon( "Le fichier " + LeFichierWord + " est déjà ouvert "+RC+" Voulez vous le fermer maintenant ?") ALORS
				oWrd>>Documents(i)>>close()
				libérer oWrd
				RENVOYER 0
			SINON
				RENVOYER 1
			FIN								
		FIN
	FIN
	libérer oWrd
FIN
RENVOYER 0


et je l'apelle comme ca

SI EstOuvertFichierExcel(Fic) ALORS
	RETOUR// le fichier est resté ouvert on ne fait rien
FIN
//traitement

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=17&topic_id=4819&post_id=20017