Erreur Automation lors d'une réouverture de fichier si fermé
Bonjour à tous.
J'avais un code qui fonctionnais parfaitement sur Acrobat 2017. Mais mon entreprise a décidé de Passer en abonnement sur Acrobat Pro pour des questions de compatibilité entre les utilisateurs. Et depuis bah ça plante...
En gros j'ouvre un fichier PDF pour le signer numériquement. La macro vérifie sur le fichier est signé ensuite. Évidement si le fichier a été fermé impossible de vérifier la signature, donc dans ce cas j'ouvre à nouveau le fichier pour faire la vérification et c'est la que ça plante.
J'ai cette erreur
Et voici mon code:
Signature:
MsgBox "Veuillez signer numériquement la revue de contrat simplifiée puis cliquer sur OK.", vbMsgBoxSetForeground
If AVDoc.Open(Document1, "") = False Then 'Si PDF Ouvert
Set x = JSO.getField("Signature1")
z = x.signatureValidate
If z = 0 Then
MsgBox "La revue de contrat simplifiée n'as pas été signée.", vbMsgBoxSetForeground + vbExclamation, "Erreur"
If AVDoc.Open(Document1, "") = False Then
GoTo Signature
Else
Set AVDoc = CreateObject("AcroExch.AVDoc")
AVDoc.Open Document1, ""
Set PDDoc1 = AVDoc.GetPDDoc
Set JSO = PDDoc1.GetJSObject
GoTo Signature
End If
Else
GoTo Fin
End IfJ'ai l'impression que c'est le second Set AVDoc qui ne fonctionne pas, pourtant le premier fonctionne bien. J'ai essayer une parade en passant par un Call Shell, mais du coup je n'arrive plus à tester la valeur X avec JSO.getFlied, donc je suis un peu perdu.
Auriez-vous une idée ? Ne pas tester la signature est pas possible car notre organisme notifié nous l'impose, et ceux qui remplissent le fichier ne sont clairement pas assez sérieux pour se passer de cette vérification.
Merci.
Bonjour Heelflip, une piste
Assure-toi que les références dans ton projet VBA sont correctes pour la nouvelle version d'Acrobat Pro. Tu devrais vérifier si les références à la bibliothèque d'objets Adobe Acrobat sont à jour.
Les nouvelles versions d'Acrobat peuvent avoir des restrictions de sécurité plus strictes en ce qui concerne l'exécution de macros. Assure-toi que tes macros sont configurées pour être exécutées en toute sécurité. Tu peux vérifier ces paramètres dans les préférences d'Acrobat.
Salut Stepaustras,
Alors j'avais un soucis avec un ReplacePage donc les protections renforcées d'Adobe sont déjà désactivées, ce qui a corrigé une partie de mes soucis.
Pour les références je n'avais que cela activé avant et je n'ai donc rien changé, j'ai essayé d'ajouter des références Adobe ou Acorbat mais cela ne change strictement rien. Avant cela fonctionnait parfaitement avec ces 5 références.
A tester
Sub TaMacro()
Dim AVDoc As Object
Dim PDDoc1 As Object
Dim JSO As Object
Dim x As Object
Dim z As Long
Dim Document1 As String
On Error Resume Next ' Ignore temporairement les erreurs
' Affiche un message demandant de signer numériquement
MsgBox "Veuillez signer numériquement la revue de contrat simplifiée puis cliquer sur OK.", vbMsgBoxSetForeground
' Tentative d'ouverture du document PDF
If AVDoc.Open(Document1, "") = False Then
' Gestion d'erreur : Si le document PDF n'a pas pu être ouvert
MsgBox "Erreur lors de l'ouverture du document PDF : " & Err.Description, vbExclamation, "Erreur"
Exit Sub ' Quitte la macro en cas d'erreur d'ouverture
End If
' Rétablis la gestion des erreurs normale
On Error GoTo 0
' Obtient le champ de signature
Set x = JSO.getField("Signature1")
If x Is Nothing Then
' Gestion d'erreur : Si le champ de signature n'a pas été trouvé
MsgBox "Le champ de signature n'a pas été trouvé.", vbExclamation, "Erreur"
Exit Sub ' Quitte la macro en cas d'erreur de champ de signature
End If
' Vérifie la signature
z = x.signatureValidate
If z = 0 Then
' Gestion d'erreur : Si la signature est invalide
MsgBox "La revue de contrat simplifiée n'a pas été signée.", vbExclamation, "Erreur"
Exit Sub ' Quitte la macro en cas de signature invalide
End If
' Si tout s'est bien passé, la signature est valide
GoTo Fin
Fin:
' Le code à exécuter lorsque tout est terminé avec succès
End SubAssure-toi que tu utilises la dernière version d'Acrobat Pro, car les mises à jour peuvent corriger des problèmes de compatibilité et de stabilité.
Toujours cette erreur automation et impossible de regarder le débogage.
Je vais essayer de faire une mini macro Test pour partager ici car mon fichier sera trop compliqué à modifier pour être exploitable ici. Je n'arrive vraiment pas à comprendre pourquoi
If AVDoc.Open(Document1, "") = False ... Elsene fonctionne pas si Acrobat est fermé. Il devrait me renvoyer sur le Else puisque la condition n'est pas bonne. et non pas me mettre une erreur automation.
Bonjour Heelflip,
L'erreur d'automatisation que tu rencontres est due au fait qu'Acrobat n'est pas disponible pour l'automatisation lorsque l'application est fermée. Le modèle d'objet d'Acrobat nécessite que l'application Acrobat Reader ou Acrobat Pro soit en cours d'exécution pour que les opérations d'automatisation réussissent.
Lorsque tu appelles AVDoc.Open(Document1, "") et qu'Acrobat n'est pas en cours d'exécution, cela génère une erreur d'automatisation car le modèle d'objet Acrobat n'est pas accessible.
Pour éviter cette erreur, tu peux utiliser la méthode que je t'ai mentionnée précédemment pour vérifier si Acrobat est en cours d'exécution avant de tenter des opérations d'automatisation. Cela te permettra de gérer proprement le cas où Acrobat n'est pas disponible et d'éviter les erreurs.
Dim AcroApp As Object
On Error Resume Next
Set AcroApp = GetObject(, "AcroExch.App")
On Error GoTo 0
If AcroApp Is Nothing Then
' Acrobat n'est pas en cours d'exécution, traite le cas ici
MsgBox "Acrobat n'est pas en cours d'exécution."
Else
' Acrobat est en cours d'exécution, effectue des opérations d'automatisation
' Par exemple, ouvre le document
Set AVDoc = CreateObject("AcroExch.AVDoc")
If AVDoc.Open(Document1, "") = False Then
' Le document n'a pas pu être ouvert
MsgBox "Impossible d'ouvrir le document."
Else
' Le document a été ouvert avec succès
' Effectue d'autres opérations ici
End If
End IfCela ne fonctionne pas non plus. C’est pire encore si j’insère le
Set AcroApp = GetObject(, "AcroExch.App")Je vais bosser sur un petit code à partager que tu puisses voir le code dans sa globalité. Car la je sèche complètement. Cela fonctionnait si bien sur Adobe 2017...
Salut Stepaustras,
J'ai avancé sur le sujet, pour te répondre tout est à jour.
Par contre chose bizarre j'ai un autre fichier utilisant ce système de signature. Et lui fonctionne parfaitement, si le fichier est fermé, il l'ouvre de nouveau pour le faire signer, malgré le fait qu'Acrobat soir fermé. Il utilise la référence Adobe Acrobat 10.0 Type Library.
Alors ce qui est bizarre c'est que dans le premier fichier je ne la trouve pas, enfin sous ce nom, en l'ajoutant manuellement je vois qu'elle axistait déjà sous le nom "Abode". Les deux fichiers sont issue de la même version d'Office, utilisent la même version d 'adobe, ont le même code mais l'un ne fonctionne pas c'est juste dingue
Bon ça y est...
Sujet résolu. Alors pour tous ceux qui auraient ce soucis...
J'ai réinstallé Acrobat via Créative Cloud. Ensuite dans les référence Macro, j'ai coché la référence Adobe, une fois enregistré et redémarré, la macro affiche dans ses référence Adobe Acrobat 10.0 Type Library et là tout fonctionne. Les bizzarerie de l'informatique...
Énorme merci à toi Stepaustras, car tes pistes m'ont conduit à ce résultat
Bonjour Heelflip, En faite c'était ça ?
Et en désinstallant Adode pro et une réinstallation avec un installeur?
Oui mais pas que. J'ai quand même du retourner dans les références qui n'étaient plus là. Est-ce Lié ?