Access 2000 : Erreur 462 (Word par automation)

Le
Monkeytoo
Bonsoir
je crée un doc word par automation sur clic d'un bouton mais lorsque
jeclique une seconde fois, je reçois l'erreur
Le serveur distant n'existe pas ou n'est pas disponible
à quoi est dû cette erreur ?
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Raymond [mvp]
Le #5033261
Bonjour.

normalement, tu dois pouvoir lancer plusieurs instances de word sur le même
fichier, le premier en modif et les autres en lecture seule. mais tout
dépend de la procédure que tu utilises pour lancer word .
peux-tu afficher ici ta procédure ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Monkeytoo" news:
Bonsoir
je crée un doc word par automation sur clic d'un bouton mais lorsque
jeclique une seconde fois, je reçois l'erreur
Le serveur distant n'existe pas ou n'est pas disponible
à quoi est dû cette erreur ?




Monkeytoo
Le #5032961
Dim objWord As Word.Application
Dim doc As New Word.document
Dim rst As New ADODB.Recordset

On Error Resume Next
Set objWord = CreateObject("Word.application")
If Err = 429 Then
Set objWord = New Word.Application
End If
On Error GoTo 0
With objWord
.Visible = True

Set doc = .Documents.Add("C:chemin" & document_libelle)
objWord.Activate
objWord.ActiveDocument.SaveAs chemin_base & "Docs" &
Var_Nom_Document
...
ici je transfère des données suivant signets
...
objWord.PrintOut (False)
objWord.Documents.Close
objWord.Quit
Set rst = Nothing
Set doc = Nothing
Set objWord = Nothing

"Raymond [mvp]" news:
Bonjour.

normalement, tu dois pouvoir lancer plusieurs instances de word sur le
même

fichier, le premier en modif et les autres en lecture seule. mais tout
dépend de la procédure que tu utilises pour lancer word .
peux-tu afficher ici ta procédure ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Monkeytoo" news:
Bonsoir
je crée un doc word par automation sur clic d'un bouton mais lorsque
jeclique une seconde fois, je reçois l'erreur
Le serveur distant n'existe pas ou n'est pas disponible
à quoi est dû cette erreur ?








Raymond [mvp]
Le #5032931
Vu que tu passes par createobject tu ne dois pas avoir cette erreur , mais
il faut simplifier ton code de départ, à mon avis, car tu n'auras jamais
l'erreur 429 avec createobject et si tu l'as le new word.application sera
aussi en erreur.

Dim objWord As Word.Application
Set objWord = CreateObject("Word.application")
If Err = 429 Then
Set objWord = New Word.Application
End If
On Error GoTo 0
With objWord
.Visible = True


je mettrais tout simplement:
Dim objWord as Object
Set objWord = CreateObject ("Word.Application")
With objWord
.Visible = True
' etc.........
il manque aussi le End With mais il doit être plus loin je pense ?
il faut bien penser qu'en cas d'erreur, il faut passer obligatoirement par
une séquence de mise à nothing des objets déclarés.
normalement la 2e instance de word doit te dire que le fichier doit être
ouvert en lecture seule, ainsi que la 3e etc...;
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Monkeytoo" news:%234hEV%
Dim objWord As Word.Application
Dim doc As New Word.document
Dim rst As New ADODB.Recordset

On Error Resume Next
Set objWord = CreateObject("Word.application")
If Err = 429 Then
Set objWord = New Word.Application
End If
On Error GoTo 0
With objWord
.Visible = True

Set doc = .Documents.Add("C:chemin" & document_libelle)
objWord.Activate
objWord.ActiveDocument.SaveAs chemin_base & "Docs" &
Var_Nom_Document
...
ici je transfère des données suivant signets
...
objWord.PrintOut (False)
objWord.Documents.Close
objWord.Quit
Set rst = Nothing
Set doc = Nothing
Set objWord = Nothing


Monkeytoo
Le #5032871
j'ai toujours la même erreur quand j'arrive sur cette ligne :
If ActiveDocument.Bookmarks.Exists("IW_Agence_Logo") = True Then
.Bookmarks("IW_Agence_Logo").Range.InlineShapes.AddPicture chemin_base &
"imageslogo.jpg"

"Raymond [mvp]" news:
Vu que tu passes par createobject tu ne dois pas avoir cette erreur , mais
il faut simplifier ton code de départ, à mon avis, car tu n'auras jamais
l'erreur 429 avec createobject et si tu l'as le new word.application sera
aussi en erreur.

Dim objWord As Word.Application
Set objWord = CreateObject("Word.application")
If Err = 429 Then
Set objWord = New Word.Application
End If
On Error GoTo 0
With objWord
.Visible = True


je mettrais tout simplement:
Dim objWord as Object
Set objWord = CreateObject ("Word.Application")
With objWord
.Visible = True
' etc.........
il manque aussi le End With mais il doit être plus loin je pense ?
il faut bien penser qu'en cas d'erreur, il faut passer obligatoirement par
une séquence de mise à nothing des objets déclarés.
normalement la 2e instance de word doit te dire que le fichier doit être
ouvert en lecture seule, ainsi que la 3e etc...;
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Monkeytoo" news:%234hEV%
Dim objWord As Word.Application
Dim doc As New Word.document
Dim rst As New ADODB.Recordset

On Error Resume Next
Set objWord = CreateObject("Word.application")
If Err = 429 Then
Set objWord = New Word.Application
End If
On Error GoTo 0
With objWord
.Visible = True

Set doc = .Documents.Add("C:chemin" & document_libelle)
objWord.Activate
objWord.ActiveDocument.SaveAs chemin_base & "Docs" &
Var_Nom_Document
...
ici je transfère des données suivant signets
...
objWord.PrintOut (False)
objWord.Documents.Close
objWord.Quit
Set rst = Nothing
Set doc = Nothing
Set objWord = Nothing






Raymond [mvp]
Le #5032851
Il faut mettre des on error car si tu cliques 2 fois sur le bouton word,
fatalement, des erreurs vont se produire étant donné que le même fichier est
ouvert d'un côté en modification et de l'autre en lecture seule. dans ta
séquence de traitement des erreurs il faudra faire un close de l'instance en
erreur.
la meilleure solution serait de tester si une instance word est en cours et
dans ce cas ne pas relancer une 2e instance.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Monkeytoo" news:
j'ai toujours la même erreur quand j'arrive sur cette ligne :
If ActiveDocument.Bookmarks.Exists("IW_Agence_Logo") = True Then
.Bookmarks("IW_Agence_Logo").Range.InlineShapes.AddPicture chemin_base &
"imageslogo.jpg"



Monkeytoo
Le #5032791
est-ce que
objWord.Activate = False
est suffisant pour clore l'instance ?
parce que lorsque la procédure événementielle est terminée, je lière tout
objWord.Documents.Close
objWord.Quit
Set rst = Nothing
Set doc = Nothing
Set objWord = Nothing
donc je ne sais pas quoi mettre d'autre pour clore l'instance pour pouvoir
en ré-ouvrir une si je clique sur le bouton

"Raymond [mvp]" news: #
Il faut mettre des on error car si tu cliques 2 fois sur le bouton word,
fatalement, des erreurs vont se produire étant donné que le même fichier
est

ouvert d'un côté en modification et de l'autre en lecture seule. dans ta
séquence de traitement des erreurs il faudra faire un close de l'instance
en

erreur.
la meilleure solution serait de tester si une instance word est en cours
et

dans ce cas ne pas relancer une 2e instance.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Monkeytoo" news:
j'ai toujours la même erreur quand j'arrive sur cette ligne :
If ActiveDocument.Bookmarks.Exists("IW_Agence_Logo") = True Then
.Bookmarks("IW_Agence_Logo").Range.InlineShapes.AddPicture chemin_base &
"imageslogo.jpg"







Raymond [mvp]
Le #5032751
objWord.Activate = False ne fermera pas l'instance. on ne l'utilise jamais.
ce que tu mets est suffisant pour clore l'instance. à condition qu'il n'y
ait pas un message word qui attend un click de l'opérateur.
pour être sûr que tu es bien en modification (instance unique) je
commencerais par envoyer un espace en fin de fichier et si erreur ça veut
dire qu'on ne peut pas écrire.
ça ne changera pas le problème que word posera la question à l'opérateur,
s'il veut bien ouvrir le fichier en lecture seule.
je ne vois qu'une solution, tester si une instance est en cours tout
simplement par le GetObject et si pas d'erreur sur le getobject, tout
fermer. faire un peu le contraire de ce qu'on fait d'habitude.
dans le genre:

Dim objWord as Object
on error goto CestOK
Set objWord = GetObject ("Word.Application")
msgbox " il y a déja word en ligne"
tous les set nothing à mettre ici
exit sub
cestOK:
on error ........;
Set objWord = CreateObject ("Word.Application")
With objWord
.Visible = True

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Monkeytoo" news:
est-ce que
objWord.Activate = False
est suffisant pour clore l'instance ?
parce que lorsque la procédure événementielle est terminée, je lière tout
objWord.Documents.Close
objWord.Quit
Set rst = Nothing
Set doc = Nothing
Set objWord = Nothing
donc je ne sais pas quoi mettre d'autre pour clore l'instance pour pouvoir
en ré-ouvrir une si je clique sur le bouton


Monkeytoo
Le #5032731
avec ce bout de code, j'obtiens l'erreur :
erreur d'exécution : -2147221020 (800401e4)
Erreur d'automation
syntaxe incorrecte
et je m'arrête sur la ligne
Set objWord = GetObject ("Word.Application")

"Raymond [mvp]" news:
objWord.Activate = False ne fermera pas l'instance. on ne l'utilise
jamais.

ce que tu mets est suffisant pour clore l'instance. à condition qu'il n'y
ait pas un message word qui attend un click de l'opérateur.
pour être sûr que tu es bien en modification (instance unique) je
commencerais par envoyer un espace en fin de fichier et si erreur ça veut
dire qu'on ne peut pas écrire.
ça ne changera pas le problème que word posera la question à l'opérateur,
s'il veut bien ouvrir le fichier en lecture seule.
je ne vois qu'une solution, tester si une instance est en cours tout
simplement par le GetObject et si pas d'erreur sur le getobject, tout
fermer. faire un peu le contraire de ce qu'on fait d'habitude.
dans le genre:

Dim objWord as Object
on error goto CestOK
Set objWord = GetObject ("Word.Application")
msgbox " il y a déja word en ligne"
tous les set nothing à mettre ici
exit sub
cestOK:
on error ........;
Set objWord = CreateObject ("Word.Application")
With objWord
.Visible = True

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Monkeytoo" news:
est-ce que
objWord.Activate = False
est suffisant pour clore l'instance ?
parce que lorsque la procédure événementielle est terminée, je lière
tout


objWord.Documents.Close
objWord.Quit
Set rst = Nothing
Set doc = Nothing
Set objWord = Nothing
donc je ne sais pas quoi mettre d'autre pour clore l'instance pour
pouvoir


en ré-ouvrir une si je clique sur le bouton






Raymond [mvp]
Le #5032601
autant pour moi:

Set objWord = GetObject("C:chemin" & document_libelle & ".doc",
"Word.Application")
ou
Set objWord = GetObject( , "Word.Application")

excuses.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Monkeytoo" news:u%
avec ce bout de code, j'obtiens l'erreur :
erreur d'exécution : -2147221020 (800401e4)
Erreur d'automation
syntaxe incorrecte
et je m'arrête sur la ligne
Set objWord = GetObject ("Word.Application")


Monkeytoo
Le #5032591
désolé mais ici l'erreur c'est
429
un composant activex ne peut pas créer d'objet

"Raymond [mvp]" news: #
autant pour moi:

Set objWord = GetObject("C:chemin" & document_libelle & ".doc",
"Word.Application")
ou
Set objWord = GetObject( , "Word.Application")

excuses.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Monkeytoo" news:u%
avec ce bout de code, j'obtiens l'erreur :
erreur d'exécution : -2147221020 (800401e4)
Erreur d'automation
syntaxe incorrecte
et je m'arrête sur la ligne
Set objWord = GetObject ("Word.Application")






Publicité
Poster une réponse
Anonyme