jplausanne
Messages postés12Date d'inscriptionmercredi 17 décembre 2008StatutMembreDernière intervention 1 juillet 2012
-
28 juin 2012 à 16:29
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024
-
1 juil. 2012 à 14:45
Bonjour,
J'ai un module VB qui lit une table où les enregistrements contiennent un objet OLE (embedded). Pour chaque enregistrement: le document est ouvert (dans Word) et sauvegardé sur le disque.
A la première exécution cela fonctionne mais dès la deuxième, c'est l'erreur
" Erreur 462 : l'ordinateur serveur distant n'existe pas ou n'est pas disponible"
J'ai trouvé sur Internet (aussi sur le site de Microsoft) qu'il fallait qualifier les méthodes donc remplacer With ActiveDocument par quelque chose style WordApp.Activement document. Le problème c'est que la fenêtre Word est ouverte via les objets OLE (acOLEActivate et acOLEVerbOpen) et pas par l'ouverture d'un document (par exemple présent sur le disque) dans Word.
Comment dans ce cas de figure qualifier Activedocument de façon à éviter cette erreur 462 après la première exécution?
Extrait du code ci-dessous
Merci beaucoup d'avance
Do Until RecSet.EOF
DoCmd.OpenForm "Form Document OLE", , , stLinkCriteria, acFormEdit
Set ctl = Forms![Form Document Confidentiel OLE]![Document]
With ctl
.Action = acOLEActivate
.Verb = acOLEVerbOpen
End With
On Error Resume Next
Set WordApp = GetObject(ActiveDocument)
With ActiveDocument
.Activate
.SaveAs FileName:="c:\DocumentOLE.doc"' Ceci n'est qu'un exemple le fichier de sortie porte un nom différent pour chaque document
.close
.....
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 1 juil. 2012 à 02:17
Bonjour,
Essayes peut être WordApp.ActiveDocument, sinon, regardes en pas à pas quand le serveur OLE est déchargé.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
jplausanne
Messages postés12Date d'inscriptionmercredi 17 décembre 2008StatutMembreDernière intervention 1 juillet 2012 1 juil. 2012 à 10:49
Bonjour,
effectivement il faut bien jouer sur WordApp mais en modifiant le code donc en remplaçant
Set WordApp = GetObject(ActiveDocument ")
par
Set WordApp = GetObject(, "Word.Application")
sinon à l'exécution de
With WordApp.ActiveDocument
le système dira qu'il n'y a aucun document actif
Le code modifié est qui fonctionne est donc:
Set WordApp = GetObject(, "Word.Application")
If WordApp.Documents.Count >= 1 Then ' Vérifie qu'un document Word est bien ouvert
With WordApp.ActiveDocument
.Activate
.SaveAs FileName:="c:\DocumentOLE.doc"
. close
End With
Else
MsgBox "Aucun document n'est ouvert"
End If
Merci infiniment d'avoir pris le temps de répondre!
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 1 juil. 2012 à 14:45
Bonjour,
De rien :)
Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---