OVH Cloud OVH Cloud

Questions Macroteuses

6 réponses
Avatar
JièL Goubert
Bonjour à tous et surtout aux macroteurs, voire développeur

une appli assez particulière à besoin que word (97) ne puisse pas être
fermé. Est-il possible d'empécher de quitter Word ? VBA voire VB accepté.

une autre question, commnent est-il possible de vérifier si word 2003
est lancé ?

J'explique, l'appli en question ne peut fonctionner qu'avec Word 97 mais
"temporairement" Word 97 ET 2003 sont installés tout les 2. Lorsque
cette appli est lancé il faut empécher l'ouverture de 2003 et empécher
la fermeture de 97. Je sais pas si je suis clair, mais si vous avez des
idées ou besoins de précisions, dites moi.

Merci d'avance

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr

6 réponses

Avatar
Circé
Hello JièL,

Tu me fais peur, t'es en train de jouer ta carte AMIS ?...
ou bien tu t'exerces au métier de la tentation ?...

JièL Goubert vient de nous annoncer :
Bonjour à tous et surtout aux macroteurs, voire développeur

une appli assez particulière à besoin que word (97) ne puisse pas
être fermé. Est-il possible d'empécher de quitter Word ? VBA voire VB
accepté.


Je pense que tu peux "surcharger" certaines commandes de Word comme :

Sub FichierFermerOuQuitter()
Sub FichierFermer()
Sub FenDocFermeture()

Par contre je sèche sur la fermeture de l'application... Il me semble
que c'est un sujet qui a été traité chez Flo... Jette un coup d'oeil
chez elle.

une autre question, commnent est-il possible de vérifier si word 2003
est lancé ?

J'explique, l'appli en question ne peut fonctionner qu'avec Word 97
mais "temporairement" Word 97 ET 2003 sont installés tout les 2.
Lorsque cette appli est lancé il faut empécher l'ouverture de 2003 et
empécher la fermeture de 97. Je sais pas si je suis clair, mais si
vous avez des idées ou besoins de précisions, dites moi.


Pfffuiittt !!! Je donne ma langue au chat et aux macroteurs de tout
poil qui se promène par nuit sans lune... ;-)

Bonne nuit !

Circé

Merci d'avance


Avatar
ClémentMarcotte
Bonjour,

une appli assez particulière à besoin que word (97) ne puisse pas être
fermé. Est-il possible d'empécher de quitter Word ? VBA voire VB accepté.



Il doit y avoir un moyen, mais Word 97, c'est trop loin dans ma mémoire.

une autre question, commnent est-il possible de vérifier si word 2003
est lancé ?



Testé avec VB6 et Word 2002. Plus de Word 97 pour tester. J'ai réussi à
ouvrir Word 2002 avec un fichier et à le fermer et réouvrir ensuite. Je
présume qu'en changeant le chemin d'accès dans l'instruction Shell pour
pointer vers l'exécutable de Word 97, cela devrait aller.

(À première vue ça devrait aller presque directement dans VBA. Va falloir
que je teste pour VbScript)

Sub EstCeQuIlYAUnWordDansLaSalle()
On Error GoTo cestpasbeauca
Dim appword As Object, lavaleur As Integer
lavaleur = 0
Set appword = GetObject(, "word.application")
If lavaleur = 0 Then
'Si lavaleur est positive, Word 97 a été
'ouvert avec Shell et ne peut pas
'répondre à automation.

If appword.version > 8 Then
'si la version est plus grande que 8, c'est au moins Office 2000
'On ferme le Word existant et on ouvre Word 97
'avec son fichier spécial
'ajuster le chemin d'accès pour winword 97
appword.quit
lavaleur = Shell("C:Program FilesMicrosoft
OfficeOffice10WINWORD.EXE C:copieCV22005ACompta.doc", vbMaximizedFocus)
End
End If
End If
Exit Sub
cestpasbeauca:
Select Case Err.Number
Case 429
'Il n'y a pas de Word d'ouvert
'ouverture de Word 97
'à la condition d'ajuster le chemin
'd'accès pour Word 97. (Lancer le bon Word)


lavaleur = Shell("C:Program FilesMicrosoft OfficeOffice10WINWORD.EXE
C:copieCV22005ACompta.doc", vbMaximizedFocus)
End
Case Else
End Select
End Sub


"JièL Goubert" a écrit dans le
message de news:
Bonjour à tous et surtout aux macroteurs, voire développeur

J'explique, l'appli en question ne peut fonctionner qu'avec Word 97 mais
"temporairement" Word 97 ET 2003 sont installés tout les 2. Lorsque
cette appli est lancé il faut empécher l'ouverture de 2003 et empécher
la fermeture de 97. Je sais pas si je suis clair, mais si vous avez des
idées ou besoins de précisions, dites moi.

Merci d'avance

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr


Avatar
Anacoluthe
Bonjour JièL !

'JièL Goubert' nous a écrit ...
une appli assez particulière à besoin que word (97) ne puisse pas être
fermé. Est-il possible d'empécher de quitter Word ? VBA voire VB accepté.
une autre question, commnent est-il possible de vérifier si word 2003
est lancé ?
J'explique, l'appli en question ne peut fonctionner qu'avec Word 97 mais
"temporairement" Word 97 ET 2003 sont installés tout les 2. Lorsque
cette appli est lancé il faut empécher l'ouverture de 2003 et empécher
la fermeture de 97. Je sais pas si je suis clair, mais si vous avez des
idées ou besoins de précisions, dites moi.


Compris la question mais pas le pourquoi. Le mieux serait que
l'application use par automation d'une instance WD97 invisible
exclusivement pour elle. Il est possible de surveiller le système
avec la collection des objets Tasks si une instance WD2003 gêne
cette appli. Mais faudrait en savoir un peu plus sur cette appli :
pourquoi ne peut-elle faire avec WD2003 ce qu'elle faisait avec WD97 ??
On dirait le truc bien classique : je ne touche pas au vieux code
alors je patche, je patche, je patche tralalilala :-) )))

Anacoluthe
« Je ne cherche pas à connaître les réponses,
je cherche à comprendre les questions. »
- CONFUCIUS

Avatar
JièL Goubert
Bonjour à tous et merci pour vos réponses... je vous donnes quelques
précisions (enfin le peu que j'ai)

L'appli en question utilise des modèles 97 (sur le serveur :-((( mais j'y
reviendrais)et il est actuellement impossible de les passer en 2003 car tout
les postes ne sont pas équipés, donc pb de conversion des modèles.

L'appli est un truc spécifique qui utilise Word pour qqchose, mais pas moyen
de savoir quoi exactement et elle est actuellement figée en terme de
développement, d'ou l'obligation d'avoir Word 97 en plus d'Office 2003 sur le
poste pour cette appli jusqu'a ce qu'elle évolue.

La solution actuelle est un développement en VB6 qui teste l'existance de
Word 97 en mémoire et le réouvre si l'utilisateur le ferme. Il y a aussi
quelques macros dans 97...

--
JièL / Jean-Louis GOUBERT
FAQ Outlook http://faq.outlook.free.fr
Avatar
Geo
Bonjour JièL Goubert


[..]
L'appli est un truc spécifique qui utilise Word pour qqchose, mais
pas moyen de savoir quoi exactement


C'est le hic, sinon la solution d'anacoluthe : une nouvelle instance,
éventuellement invisible est nickel.
Tu sais ce qu'on dit : en informatique pour obtenir qu'une porte soit
fermée on ne regarde pas avant si elle est ouverte, on la ferme.
Oui, bon ça peut donner lieu à interprétation, tu fais le truc pour une
porte ouverte :-)

--

A+

Avatar
Anacoluthe
Bonjour !

'JièL Goubert' nous a écrit ...
Lorsque cette appli est lancé il faut empécher l'ouverture de 2003


Tiens ça m'a rappelé depuis qu'il faut faire ça avec des scripts
WMI. En voici un exemple tiré du Script Center MS.

Attention c'est assez redoutable ! :-p
Ce script interdit purement et simplement l'utilisation de Word !!!
(Si Word est déjà lancé, ça en interdit une nouvelle instance)

Copie dans un fichier texte le script entre les lignes -------
Nomme ce fichier "Interdire Word.VBS" sur le bureau
Exécute le fichier 'Interdire Word.VBS' en double-cliquant dessus
Sauf éventuelle alerte de l'antivirus ou autre sécurité paniqués
devant un vbscript, il ne se passe strictement rien...
Mais essaye maintenant de lancer Word ou d'ouvrir un document...
(Win 2000/XP ou Win98+WSH )

---------------------------------------------------------------------
' Interdit de lancer Word !
' il faut tuer WScript.exe pour que s'achève l'interdiction !
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & _
strComputer & "rootcimv2")

Set colMonitoredProcesses = objWMIService. _
ExecNotificationQuery("select * from __instancecreationevent " _
& " within 1 where TargetInstance isa 'Win32_Process'")
i = 0

Do While i = 0
Set objLatestProcess = colMonitoredProcesses.NextEvent
If objLatestProcess.TargetInstance.Name = "WINWORD.EXE" Then
objLatestProcess.TargetInstance.Terminate
wscript.echo "Interdiction d'utiliser Word !"
End If
Loop
---------------------------------------------------------------------

A+

Anacoluthe
« La dictature est une forme autoritaire de la démocratie
dans laquelle tout ce qui n'est pas obligatoire est interdit. »
- Léo CAMPION