FORUMS PROFESSIONNELSWINDEV , WEBDEV et WINDEV Mobile
Type OLE probleme automatisation
Débuté par Mathieu, 17 avr. 2025 12:12 - Aucune réponse
Posté le 17 avril 2025 - 12:12
Bonjour, J'ai une application Windev sur un serveur qui fonctionne très bien lorsque je lance le .exe en double cliquant dessus. Mais si je le lance en tâche planifiés, j'ai ces erreurs : 17/04/2025 09:50:05:11 - ------------- Test avant Open ----------- 17/04/2025 09:50:06:00 - Erreur fatale globale capturée : Vous avez appelé la méthode Automation 'Open'. En tentant d'invoquer la méthode <Open> ou de lire la propriété <Open>, l'objet Automation/ActiveX a renvoyé l'erreur suivante : 'Erreur 800A03EC : Microsoft Excel ne peut accéder au fichier « D:\Outils\Rapport_outlook\rapports\17_04_2025_consolidated_report.xlsx ». Plusieurs raisons sont possibles : • Le nom du fichier ou le chemin d'accès n’existe pas. • Ce fichier est actuellement utilisé par un autre programme. • Le classeur que vous essayez d’enregistrer porte le même nom qu’un classeur actuellement ouvert.' En tentant d'invoquer la méthode <Open>, l'objet Automation/ActiveX a renvoyé l'erreur suivante : 'Erreur 800A03EC : Microsoft Excel ne peut accéder au fichier « D:\Outils\Rapport_outlook\rapports\17_04_2025_consolidated_report.xlsx ». Plusieurs raisons sont possibles : • Le nom du fichier ou le chemin d'accès n’existe pas. • Ce fichier est actuellement utilisé par un autre programme. • Le classeur que vous essayez d’enregistrer porte le même nom qu’un classeur actuellement ouvert.' En tentant de lire la propriété <Open>, l'objet Automation/ActiveX a renvoyé l'erreur suivante : 'Erreur 800A03EC : Microsoft Excel ne peut accéder au fichier « D:\Outils\Rapport_outlook\rapports\17_04_2025_consolidated_report.xlsx ». Plusieurs raisons sont possibles : • Le nom du fichier ou le chemin d'accès n’existe pas. • Ce fichier est actuellement utilisé par un autre programme. • Le classeur que vous essayez d’enregistrer porte le même nom qu’un classeur actuellement ouvert.' En tentant d'écrire la propriété <Open>, l'objet Automation/ActiveX a renvoyé l'erreur suivante : 'Erreur 800A03EC : Impossible de définir la propriété Open de la classe Workbooks.' Ce dont je suis sur : - Il n'y pas d'excel ouvert donc il n'y a pas de conflit etc - La taches planifiés est lancé avec le compte de l'admin avec la case "Executer avec les autorisations maximales". Il a également coché la case "Executer même si l'utilisateur n'est pas connecté" - Il n'y a pas de soucis de chemin, les fichiers dont il parle sont bel et bien enregistrer dans le bon dosssier - Le fichier n'est pas utilisé par un autre programme Est ce que vous avez des pistes pour régler le soucis ? Voici le code qui génère le problème : Procedure OpenAllHtmlFiles( s Dossier est une chaîne , s FichierExcel est une chaîne ) SI PAS fFichierExiste ( s FichierExcel) ALORS ErreurAvecLog( 100 , "[OpenAllHtmlFiles] Le fichier Excel n'est pas accessible : " + s FichierExcel) RETOUR FIN arrFichiers est un tableau de chaînes = ListeHtmlFiles( s Dossier) SI Dimension ( arrFichiers) = 0 ALORS ErreurAvecLog( 100 , "[OpenAllHtmlFiles] Rien à afficher (aucun fichier HTML trouvé)" ) RETOUR FIN xlApp est un objet OLE dynamique = allouer objet automation "Excel.Application" SI ErreurDétectée ALORS ErreurAvecLog( 100 , "[OpenAllHtmlFiles] Impossible de lancer Excel en OLE Automation (OpenAllHtmlFiles)" ) RETOUR FIN xlApp> > Visible = Vrai SI xlApp = Null ALORS ErreurAvecLog( 100 , "[OpenAllHtmlFiles] Impossible de démarrer Excel en mode invisible." ) RETOUR FIN ErreurAvecLog( 100 , "------------- Test avant Open -----------" ) finalWb est un objet OLE dynamique = allouer objet automation "Excel.Application" finalWb = xlApp> > Workbooks> > Open ( s FichierExcel) SI ErreurDétectée ALORS ErreurAvecLog( 100 , "[OpenAllHtmlFiles] Impossible d'ouvrir le fichier final (OpenAllHtmlFiles) : " + s FichierExcel) xlApp> > Quit( ) RETOUR FIN ErreurAvecLog( 100 , "------------- Test 3 ---------" ) n NbFeuilles est un entier = finalWb> > Sheets> > Count tab Feuilles est un tableau associatif d' entiers POUR i = 1 À n NbFeuilles s NomFeuille est une chaîne = finalWb> > Sheets> > Item (i) > > Name tab Feuilles[ s NomFeuille] = iFIN POUR TOUT s FichierHtml de arrFichiers tempWb est un objet OLE dynamique = xlApp> > Workbooks> > Open ( s FichierHtml) s DateFeuille est une chaîne = ExtractDateFromFileName( s FichierHtml) SI tab Feuilles[ s DateFeuille] .. Existe ALORS n IndexFeuille est un entier = tab Feuilles[ s DateFeuille] finalWb> > Sheets> > Item ( n IndexFeuille) > > Activate( ) SI xlApp> > ActiveSheet> > Name < > s DateFeuille ALORS xlApp> > ActiveSheet> > Name = s DateFeuille FIN tempWs est un objet OLE dynamique = tempWb> > Sheets( 1 ) finalWs est un objet OLE dynamique = finalWb> > Sheets( s DateFeuille) n LigneB est un entier = finalWs> > C ells ( finalWs> > Rows> > Count , 2 ) > > END ( - 4162 ) > > Row n LigneD est un entier = finalWs> > C ells ( finalWs> > Rows> > Count , 4 ) > > END ( - 4162 ) > > Row n LigneF est un entier = finalWs> > C ells ( finalWs> > Rows> > Count , 6 ) > > END ( - 4162 ) > > Row n LigneDebut est un entier = Max ( n LigneB, n LigneD, n LigneF) + 2 ExtraireBootCatalogCorpsMail( finalWb, s DateFeuille, n LigneDebut, ChaîneVersDate ( s DateFeuille) ) iLigneDebutPremierTab est un entier = n LigneDebut + 4 tempWs> > Range( "A8:J13" ) > > C opy ( finalWs> > Range( "A" + iLigneDebutPremierTab) ) n DerniereLigneTmp est un entier = tempWs> > C ells ( tempWs> > Rows> > Count , 1 ) > > END ( - 4162 ) > > Row iLigneDebutDeuxiemeTab est un entier = iLigneDebutPremierTab + 7 tempWs> > Range( "A27:J" + n DerniereLigneTmp) > > C opy ( finalWs> > Range( "A" + iLigneDebutDeuxiemeTab) ) AppliquerFiltreSurColonneC( finalWs, iLigneDebutDeuxiemeTab) tempWb> > Close ( Faux ) tempWs = Null tempWb = Null FIN FIN POUR i = 1 _À_ finalWb> > Worksheets> > Count finalWb> > Worksheets(i) > > Activate finalWb> > ActiveSheet> > C olumns ( "A:M" ) > > AutoFit finalWb> > ActiveSheet> > Range( "B1:G1" ) > > Font> > Color = RVB ( 255 , 255 , 255 ) finalWb> > ActiveSheet> > Range( "B1:G1" ) > > Font> > Bold = True SI finalWb> > ActiveSheet> > Name = "Historique" ALORS finalWb> > ActiveSheet> > Range( "A1:B1" ) > > Font> > Color = RVB ( 255 , 255 , 255 ) finalWb> > ActiveSheet> > Range( "A1:B1" ) > > Font> > Bold = True FIN FIN finalWb> > Save( ) finalWb> > Close ( ) xlApp> > Quit( ) xlApp = Null finalWb = Null
Le compte qui execute la tâche planifié est admin, il a absolument tous les droits. Et si dans ma tâche planifié, je coche "Exécuter uniquement si l’utilisateur est connecté", l'application se lance sans soucis. Mais dès l'instant ou je lance en cochant la case "Exécuter, même si aucun utilisateur n'a ouvert de session", ça ne fonctionne plus et j'ai l'erreur du dessus. Dans mon appli, j'utilise également d'autres fichiers excels qui ne pose aucun soucis d'ouverture etc, cependant les autres fichiers excels sont de type xlsDocument, là ou pour cette procédure, il est de type OLE dynamique (surement la cause du problème, seulement j'arrive pas a faire autrement). J'espère que quelqu'un pourra m'aider. Merci d'avance