Instance existe

Le
Jacques
Bonjour,

Débutant avec le VBA de Word, j'aimerai savoir si une instance de word est
déjà ouverte. J'ouvre un document avec un UserForm et j'aimerai gérer la
fermeture de Word.

Si l'utilisateur travaille déjà dans Word, j'aimerai ne fermer que mon
document sinon, fermer le document ainsi que Word.

Je suppose qu'il me faut savoir si Word est déjà ouvert ou pas et agir en
conséquence.

Une petite aide pour détecter si une instance est déjà ouverte serait la
bienvenue.à


Merci de vos réponses


Jacques
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Dav
Le #2476921
Bonsoir/jour Jacques

Voici ma proposition.

Sub instance()
Dim WordApp As Word.Application
Dim WordFonctionnePas As Boolean

WordFonctionnePas = False
On Error Resume Next
Set WordApp = GetObject(, "Word.Application") 'recherche d'erreur lors de la
prise en main de l'applicaiton Word
If Err.Number <> 0 Then 'Si erreur il y à...
WordFonctionnePas = True 'Alors Word ne fonctionnait pas
Set WordApp = CreateObject("Word.Application") 'et une instance est donc
créée
End If

With WordApp
.Documents.Add
.Selection.TypeText "Blabalbalblalal"
.ActiveDocument.SaveAs "C:MonDocWord.doc"
.ActiveDocument.Close
If .Documents.Count = 0 Then WordApp.Quit 'si il n'y a pas d'autre
document ouvert alors l'application est fermée sinon elle est laissée
ouverte.
End With
Set WordApp = Nothing

End Sub

A voir maintenant si cela te convient.
Je n'ai pas réutilisé la variable "WordFonctionnePas" car je trouve que
c'est un peu dangeureux. Au départ peut-être que l'utilisateur ne travaille
sur Word mais par la suite il peut ouvrir d'autres documents. Donc "IF
Documents.count = O alors quit sinon quit pas"

Dis nous si cela te convient.

Dav

"Jacques" discussion :
Bonjour,

Débutant avec le VBA de Word, j'aimerai savoir si une instance de word est
déjà ouverte. J'ouvre un document avec un UserForm et j'aimerai gérer la
fermeture de Word.

Si l'utilisateur travaille déjà dans Word, j'aimerai ne fermer que mon
document sinon, fermer le document ainsi que Word.

Je suppose qu'il me faut savoir si Word est déjà ouvert ou pas et agir en
conséquence.

Une petite aide pour détecter si une instance est déjà ouverte serait la
bienvenue.à


Merci de vos réponses


Jacques






Geo
Le #2482641

Si l'utilisateur travaille déjà dans Word, j'aimerai ne fermer que mon
document sinon, fermer le document ainsi que Word.


dans tous les cas vous fermez votre document.
Ensuite fermez Word s'il n'y a plus de document.
ActiveDocument.Close
If Documents.Count = 0 Then
Application.Quit
End If

--
A+

Dav
Le #2482631
Re...

En voyant la réponse de Geo je dois préciser que je suis tout de suite parti
dans l'idée que tu devais créer une instance de Word depuis une autre
application (Excel par exemple)
Ce qui n'est peut-être pas forcément le cas.
Comme j'ai dû récemment créer une instance de Word depuis Excel j'ai tout de
suite pensé à ça.

Dav


"Dav"
Bonsoir/jour Jacques

Voici ma proposition.

Sub instance()
Dim WordApp As Word.Application
Dim WordFonctionnePas As Boolean

WordFonctionnePas = False
On Error Resume Next
Set WordApp = GetObject(, "Word.Application") 'recherche d'erreur lors de
la prise en main de l'applicaiton Word
If Err.Number <> 0 Then 'Si erreur il y à...
WordFonctionnePas = True 'Alors Word ne fonctionnait pas
Set WordApp = CreateObject("Word.Application") 'et une instance est
donc créée
End If

With WordApp
.Documents.Add
.Selection.TypeText "Blabalbalblalal"
.ActiveDocument.SaveAs "C:MonDocWord.doc"
.ActiveDocument.Close
If .Documents.Count = 0 Then WordApp.Quit 'si il n'y a pas d'autre
document ouvert alors l'application est fermée sinon elle est laissée
ouverte.
End With
Set WordApp = Nothing

End Sub

A voir maintenant si cela te convient.
Je n'ai pas réutilisé la variable "WordFonctionnePas" car je trouve que
c'est un peu dangeureux. Au départ peut-être que l'utilisateur ne
travaille sur Word mais par la suite il peut ouvrir d'autres documents.
Donc "IF Documents.count = O alors quit sinon quit pas"

Dis nous si cela te convient.

Dav

"Jacques" discussion :
Bonjour,

Débutant avec le VBA de Word, j'aimerai savoir si une instance de word
est
déjà ouverte. J'ouvre un document avec un UserForm et j'aimerai gérer la
fermeture de Word.

Si l'utilisateur travaille déjà dans Word, j'aimerai ne fermer que mon
document sinon, fermer le document ainsi que Word.

Je suppose qu'il me faut savoir si Word est déjà ouvert ou pas et agir en
conséquence.

Une petite aide pour détecter si une instance est déjà ouverte serait la
bienvenue.à


Merci de vos réponses


Jacques








Geo
Le #2482611

Re...

En voyant la réponse de Geo je dois préciser que je suis tout de suite parti dans
l'idée que tu devais créer une instance de Word depuis une autre application (Excel par
exemple)
Ce qui n'est peut-être pas forcément le cas.


C'est peut être vous qui avez raison, on ne comprend pas toujours la
même chose en lisant une question.
C'est l'avantage des forums, chacun y apporte ce qu'il sait.

--
A+

Jacques
Le #2510461
Merci à vous deux !

Grâce à vos commentaires, j'ai pu régler mon problème. Effectivement c'est en
ouvrant le document que je voulais vérifier s'il y avait déjà une instance...!
Il y aura toujours une instance puisque j'ouvre un fichier doc !! Donc pour
savoir si un utilisateur a déjà ouvert un document, je compte le nombre de
documents ouverts. S'il n'y en a qu'un ...c'est le mien et donc je peux fermer
Word, s'il y en a au moins deux, cela veut dire que l'utilisateur a déjà ouvert
Word pour y travailler et donc je ne ferme que mon document !

Jacques


"Geo" news:

Si l'utilisateur travaille déjà dans Word, j'aimerai ne fermer que mon
document sinon, fermer le document ainsi que Word.


dans tous les cas vous fermez votre document.
Ensuite fermez Word s'il n'y a plus de document.
ActiveDocument.Close
If Documents.Count = 0 Then
Application.Quit
End If

--
A+





Publicité
Poster une réponse
Anonyme