Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Access 2000 : Erreur 462 (Word par automation)

11 réponses
Avatar
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 ?

10 réponses

1 2
Avatar
Raymond [mvp]
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" a écrit dans le message de
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 ?




Avatar
Monkeytoo
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]" a écrit dans le message de
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" a écrit dans le message de
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 ?








Avatar
Raymond [mvp]
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" a écrit dans le message de
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


Avatar
Monkeytoo
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]" a écrit dans le message de
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" a écrit dans le message de
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






Avatar
Raymond [mvp]
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" a écrit dans le message de
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"



Avatar
Monkeytoo
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]" a écrit dans le message de
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" a écrit dans le message de
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"







Avatar
Raymond [mvp]
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" a écrit dans le message de
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


Avatar
Monkeytoo
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]" a écrit dans le message de
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" a écrit dans le message de
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






Avatar
Raymond [mvp]
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" a écrit dans le message de
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")


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

"Raymond [mvp]" a écrit dans le message de
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" a écrit dans le message de
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")






1 2