cs_buzzo
Messages postés29Date d'inscriptionjeudi 20 janvier 2005StatutMembreDernière intervention30 novembre 2006
-
1 juin 2006 à 22:01
cs_buzzo
Messages postés29Date d'inscriptionjeudi 20 janvier 2005StatutMembreDernière intervention30 novembre 2006
-
9 juin 2006 à 19:29
Bonjour à tous,
J'ai un petit problème qui dépasse mes connaissances actuelles en VB.
J'ai dévellopé un programme (en VB) qui utilise word pour créer divers documents, cela se résume à de l'écriture de texte et un copié collé depuis excel.
Mon code trouvé avec bonheur sur vbFrance commence ainsi :
Dim docword As New Word.Application
Set docword = CreateObject("word.application")
docword.Visible = True
docword.DisplayAlerts = False
Pas de problèmes lors de la première exécution de la fonction. Mon programme vie sa vie ensuite et lorsque je relance une seconde fois cette fonction et quand le programme execute la ligne "docword.Selection.PageSetup.TopMargin = CentimetersToPoints(0.7)"
il s'arrête et m'affiche le message d'erreur suivant :
Erreur d’exécution ‘462’ :
Le serveur distant n’existe pas ou n’est pas disponible
Alors je me suis demandé si je fermais correctement word et il me semble que c'est le cas, car entre deux exécution word disparait des processus.
si je quitte mon programme, que je le relance la première exécution fonctionne à nouveau normalement et rebelotte...
Quelqu'un aurait une idée sur l'erreur que je commet ?
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 2 juin 2006 à 08:39
Ton message apparaît parce que le server Word a probablement disparu et que tu essayes de l'appeler.
1) Ouvrir le serveur Word
2) Début de boucle
3) Ajouter un document
4) Ecrire dans le document
5) Fermer le document actif
6) Fin de boucle
7) Fermer le serveur Word
Dim docword As New Word.Application
Set docword = CreateObject("word.application")
docword.Visible = True
docword.DisplayAlerts = False
Début de Boucle (For, While, ...)
docword.Documents.Add
docword.Selection.Paste
docword.Selection.PageSetup.TopMargin = CentimetersToPoints(0.7)
docword.ActiveDocument.SaveAs "le nom qui va bien"
docword.ActiveDocument.Close
Fin de boucle (Next, Wend, ...)
docword.Quit
Set docword = Nothing
Manu --------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
cs_buzzo
Messages postés29Date d'inscriptionjeudi 20 janvier 2005StatutMembreDernière intervention30 novembre 2006 2 juin 2006 à 11:03
Tout d'abord merci pour vos réponse. En effet l'apostrophe devant "Set docword = Nothing" est une erreur de ma part lorsque j'ai écrit ma question parce que je faisait différents essais dans mon programme. normalement il n'y en a pas.
Econs, Je fait exactement la procédure que tu m'as détaillée, et elle marche ! Ce code appartient à une fonction et j'arrive à créer mes lettres successivement sans problèmes. le programme quitte la fonction et attend alors une action de ma part. Quand je relance une seconde fois cette fonction le programme plante au moment de modifier les marges.
Si je ne fait pas l'instruction docword.Quit,à la fin de la fonction j'ai une fenêtre word d'active sans documents d'ouvert. si je relance ma fonction une deuxième fois, une nouvelle instance de word démarre et la fonction se termine normalement. A la fin de ces deux exécution, j'ai deux fenêtre word active sans documents d'ouverts...
Une autre partie de mon programme utilise également word et c'est à l'utilisateur de quitter lui même le document d'ouvert, là il n'y a pas de problème, c'est partie du code peut s'éxécuter autant de fois que je le veux.
Pourtant j'ouvre word toujours de la même façon...Pensez vous avoir une solution ?
cs_buzzo
Messages postés29Date d'inscriptionjeudi 20 janvier 2005StatutMembreDernière intervention30 novembre 2006 3 juin 2006 à 09:43
Bonjour à tous,
j'ai trouvé ma solution à force d'essais...Finalement ça reprend ce que tu disais econs, c'était juste pour moi une question d'échelle vis à vis de mon programme : La boucle, c'est en faite ma fonction que je n'arrivais pas à faire deux fois. Plutôt que d'ouvrir et de fermer le serveur word dans cette fameuse fonction, je l'ouvre et je le ferme lors du chargement et déchargement de la form qui contient cette fonction. Ainsi je peut répéter ma fonction mainte fois sans que le serveur word soit doublé voir triplé. Quand je regarde mes processus lors du chargement et déchargement de la form c'est un plaisir de voir winword.exe s'ouvrir et s'effacer...
Bonne journée !
Matthieu
Vous n’avez pas trouvé la réponse que vous recherchez ?
ahmed84
Messages postés3Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention 8 juin 2006 7 juin 2006 à 12:27
Salut tout le monde.
J'exporte une table vers une autre table sous Word.
J'ai le même problème de Mr.buzzo, j'ai la méme erreur :
Erreur d’exécution ‘462’ :
" Le serveur distant n’existe pas ou n’est pas disponible "
Quand je relance une deuxième fois l'exécution, elle s'arrête lors de la création de la table sous Word :
cs_buzzo
Messages postés29Date d'inscriptionjeudi 20 janvier 2005StatutMembreDernière intervention30 novembre 2006 7 juin 2006 à 19:44
ok !
Alors Mr Buzzo va essayer de t'aider ;-). Je ne sais pas comment tu as fait tes déclarations et je vais m'inspirer des miennes pour te donner un exemple.
Voilà donc comment je déclare mon objet Word
Dim docword As New Word.Application
Set docword = CreateObject("word.application")
docword.Visible = True
docword.DisplayAlerts = False
Toutes mes lignes de codes destinées à Word commencent par
docword.
C'est certe un peu bourrin et je pense qu'il est possible de faire plus simple, avec
With docword
...
end with
ça doit marcher....
bref, ça c'est un premier conseil et c'est peut être ce que tu fais déjà. Ensuite, et ça à été la source de mon problème, la fameuse erreur '462' était générée quand je fermait trop tôt Word et que j''utilisais toujours des instruction le concernant par la suite.
Ton problème est similaire au miens car à la deuxième exécution tu plantes lors de ta première instruction vers Word.
Voilà ce que j'ai appliqué et qui a résolu mon problème:
ne déclare ton objet "word.application" qu'au chargement de ta form et pense surtout à le décharger :
"set docword = nothing" (pour mon cas)
lorsque tu quitte ta form. Entre deux tu peux normalement faire ce que tu veux avec word.
regarde tes processus également quand ta form se charge et se décharge, le processus "WINWORD.EXE" doit apparaitre et disparaitre.
Voilà j'espère que ça va marcher sinon toi nous au courant !
may the force be with you.
ahmed84
Messages postés3Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention 8 juin 2006 8 juin 2006 à 11:16
Salut,
J'ai suis toutes vos conseils et tpujours le même problème, il y a une remarque : dans ma fonction j'écrit d'abord une ligne avant que je passe au dessin du tableau, la ligne s'écrit bien mais le tableau non !! La procédure qui dessine le tableau est la suivante :
Private Sub Word_Dessiner_Tableau(ByRef Document As Word.Application)
With Document
.ActiveDocument.Tables.Add Range:=Selection.Range, _
NumRows:=rs_chaine.RecordCount + 1, NumColumns:=3