Erreur automation

Signaler
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
13 août 2003
-
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
13 août 2003
-
Bonjour,
j'ai fait 2 dll. L'une d'elle appelle l'autre qui en gros ouvre une appli Word, ouvre un .doc, lance une impression puis ferme le doc et l'appli.
Lorsque j'utilise la 1ere dll dans une appli VB aucun problème. Par contre si je l'utilise dans une page asp j'ai l'erreur suivante:
Erreur Automation Le filtre de messages indiquait que l'application était occupée.
apres debogage je me suis apperçu que l'erreur était déclenchée au CreateObject("Word.Application").

Des suggestions??

Merci.
A voir également:

13 réponses

Messages postés
76
Date d'inscription
dimanche 19 mai 2002
Statut
Membre
Dernière intervention
8 mai 2006

Salut

Ce genre de problème est généralement optenut lorsque le logiciel word n'est pas installé sur le serveur ou la page asp est executée

a+

By Focalizer ...
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
13 août 2003

Bonjour et merci mais Word est bien installé sur le serveur, d'ailleurs l'appli test de ma dll fonctionne parfaitement sur le serveur

D'autres suggestions?
Messages postés
76
Date d'inscription
dimanche 19 mai 2002
Statut
Membre
Dernière intervention
8 mai 2006

Pourais-tu alors plus détailler ?

Que font ses fichiers dll, une partie de code avant et après l'erreur ?

Cela serais plus facile pour comprendre ton problème ;)

a+

By Focalizer ...
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
13 août 2003

Ok j'explique un peu plus :)

Le principe est de relever les mails d'une boite mail, de sauvegarder les pieces jointes et de convertir celles qui sont dans un format texte (DOC,RTF,TXT,.. donc lisible par word) au format PDF Text.
Pour ça g un composant qui releve les mails et pour la conversion une imprimante virtuelle qui crée le fichier PDF.

La 1ere dll s'occupe du relevé de mail et de l'enregistrement des pieces jointes, et appelle la seconde dll si une un piece jointe et lisible par word pour la conversion PDF.

Au départ j'avais fait une appli pour ce travail que j'av planifié ts les 15min avec le planificateur windows pour une releve réguliere. Seulement, alors q l'appli fonctionnait sans pb en l'exécutant avec un dle click, l'impression (convertion) resté bloqué lorsq'elle était lancé par le planificateur de taches.
Donc finalement je voudrai relevé les mails des q'1utilisateur se connecte à la page ASP indiquant les mails recus.
mais là autre pb: l'histoire d'automation.

voici un extrait du code qui ouvre word et lance l'impression:

Private done As Boolean
Private printerChanged As Boolean
Dim App As word.Application
Dim doc As Document

' retourne 0 si ok, 1 si fichier existant and pas overwrite, -1 si autre erreur
Function convert(ByVal inputFile As String, ByVal outputDirectory As String, ByVal outputFile As String, ByVal overwrite As Boolean) As Integer
Set App = CreateObject("Word.Application") ' C là q'est l'erreur!!

doProcess = False
Dim filename As String
filename = outputDirectory & outputFile

If (Fichier_Existe(filename) = True) Then
If (overwrite = True) Then
Kill filename
Else
GoTo existant
End If
End If

init outputDirectory, outputFile ' configure les parametre PDF de sortie

doProcess = True

Set doc = App.Documents.Open(inputFile)

Dim oldPrinter As String
oldPrinter = App.ActivePrinter
App.ActivePrinter = "leadtool" 'l'imprimante ki fait la conversion
printerChanged = True
doc.PrintOut Background:=False
Dim i As Integer
i = 90
While ((done = False) And (i > 0)) ' si le tps est supperieur à 2min on sort, c q la conversion a planté (arrive uniquement pr la planification des taches)
DoEvents
Sleep (500)
i = i - 1
Wend
If done = False Then
GoTo erreur
End If

convert = 0
GoTo restorePrinter
erreur:
convert = -1
'MsgBox "erreur"
GoTo restorePrinter
existant:
'MsgBox "fichier existant"
convert = 1
GoTo restorePrinter
restorePrinter:
If (printerChanged = True) Then
'MsgBox "restore printer"
App.ActivePrinter = oldPrinter
printerChanged = False
'MsgBox "restore printer OK"
End If

If Not doc Is Nothing Then
doc.Close
Set doc = Nothing
End If
If Not App Is Nothing Then
App.Quit
Set App = Nothing
End If

Exit Function
End Function

Alors plus clair? :)

merci de chercher une solution :D
Messages postés
76
Date d'inscription
dimanche 19 mai 2002
Statut
Membre
Dernière intervention
8 mai 2006

Quel est le msg d'erreur ? :D

By Focalizer ...
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
13 août 2003

le msg d'erreur c celui de mon 1er post, il a pas changé depuis ;D
"Erreur Automation Le filtre de messages indiquait que l'application était occupée."
Messages postés
76
Date d'inscription
dimanche 19 mai 2002
Statut
Membre
Dernière intervention
8 mai 2006

Regarde ca :

Deuxième principe : pour pouvoir accéder à WORD en ASP, word doit avoir été utilisé sur le serveur par le compte utilisé lors de l'accès web. Dans word, il faut ouvrir l'éditeur VBA, puis refermer. Ca na l'air de rien, mais ça permet d'écrire un fichier par défaut, genre normal.dot, impossible à créer à distance. Si ce fichier est absent, vous aurez une erreur indiquant : "Impossible d'ouvrir la macro de stockage". Il peut être utilse de rebooter

> trouvé sur Asp-php

By Focalizer ...
Messages postés
76
Date d'inscription
dimanche 19 mai 2002
Statut
Membre
Dernière intervention
8 mai 2006

bof bof :P

je vois pas trop alors :/

By Focalizer ...
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
13 août 2003

Le truc bizar c q'en regardant ds le gestionnaire d taches word est bien ouvert et le pb c kil est impossible d'arrêter la tâche....

enfin bon merci d'avoir essayer.

D'autres amateurs??
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

ptites questions : As tu essayer de debuguer les dll lors de l'appel de ta page asp pour voir ou se situe exactement l'erreur?
Autre question : As tu enregistrer les dll sur le serveur (Base de registre)?

Nickadele
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
13 août 2003

les dll sont bien enregistrées sinon l'appli ne marcherait pas no nplu et j'aurai une erreur du genre 'le composant activex ne peut pas generer l'objet"
par contre coté debugage le seul truc q g fait c ecrire un fichier de log (g supprimé les lignes du codes postés) et le dernier truc s'affiche juste av le createobject pr creer l'obj word et plus rien derriere
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

ce que tu peux faire c'est faire un Run de tes Dll comme si tu les exécutais chacune avec une session vb. place des points de déboguage. Ensuite lance ta page ASP qui fait appel a tes DLL lors du passage sur les points de déboguage ta session VB s'activera et tu pourra suivre à la trace ce que fait ton code.

Nickadele
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
13 août 2003

seul soucis vb n'est pas installé sur le serveur est pas le droit de l'y installer (c chef ki ve pas : le serveur c pas fait pr le dev ni le debugage :D)
mais bon puisq d'apres mes log ca plante o createobject je suis pas sur q ca soit franchement utile.
Enfin je comprend pas pkoi ca marche si j'appel la dll d'une appli q j'execute sur le serveur...