tgenty
Messages postés10Date d'inscriptionvendredi 2 mai 2003StatutMembreDernière intervention13 août 2003
-
12 août 2003 à 17:09
tgenty
Messages postés10Date d'inscriptionvendredi 2 mai 2003StatutMembreDernière intervention13 août 2003
-
13 août 2003 à 12:26
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").
tgenty
Messages postés10Date d'inscriptionvendredi 2 mai 2003StatutMembreDernière intervention13 août 2003 13 août 2003 à 10:27
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
tgenty
Messages postés10Date d'inscriptionvendredi 2 mai 2003StatutMembreDernière intervention13 août 2003 13 août 2003 à 10:54
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."
Focalizer
Messages postés76Date d'inscriptiondimanche 19 mai 2002StatutMembreDernière intervention 8 mai 2006 13 août 2003 à 10:56
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
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013 13 août 2003 à 12:09
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)?
tgenty
Messages postés10Date d'inscriptionvendredi 2 mai 2003StatutMembreDernière intervention13 août 2003 13 août 2003 à 12:14
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
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013 13 août 2003 à 12:20
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.
tgenty
Messages postés10Date d'inscriptionvendredi 2 mai 2003StatutMembreDernière intervention13 août 2003 13 août 2003 à 12:26
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...