Icône de la ressource

VBA - Récuperer le texte d'un fichier PDF avec un navigateur Internet V4

Le fichier à télécharger contient:
  1. Le Module_GetPDFText
  2. Le Module_Test qui donnent un exemple d'utilisation
Les principales caractéristiques:
  • La Fonction GetPDFText() retourne le texte d'un fichier PDF reçu en argument ou écrit un fichier texte cible.
    Si un erreur se produit, la valeur de retour est un numéro d'erreur.

  • La fonction GetPDFTextError() permet de traduire un numéro d'erreur en texte.
Mise en œuvre très simple:
  • Placer le Module_GetPDFText dans la projet VBA.

  • Utiliser les fonctions citées ci-dessus dans le code appelant.
Remarques:
  • La fonction utilise un navigateur Web pour afficher le fichier PDF et en récupérer le texte.
    Il s'agit dans l'ordre de priorité de recherche de Edge, Chrome et Firefox.

  • La processus de récupération est assez trivial sur le principe et consiste à récupérer le texte sur l'affichage d'un navigateur Web.
    Ce qui est moins trivial c'est la gestion des temps d'attente en fonction de la puissance CPU du PC et de la taille du fichier PDF car rien ne permet de savoir de manière déterministe quand le fichier PDF est effectivement chargé par le navigateur Web.

    Le code a été testé dans différentes configurations Windows et de puissance CPU mais il est possible que pour des cas particuliers (accès au fichier très lent, PC en surcharge CPU, ...) il ne donne pas le résultat escompté. En cas de difficultés, utiliser la ressource:

  • A noter que le XLDNaute @patricktoulon a apporté une contribution positive à l'élaboration de cette macro.
Versions:
  • V1 - Initiale.
  • V2 - Sécurise la position du curseur dans le document pour le clic souris nécessaire pour Chrome.
  • V3 - Remplace GetActiveWindow par GetForeGroundWindow pour avoir le Handle du navigateur Internet et sécuriser les Ctrl+A et Ctrl+C.
  • V4 - Ajout de l'option d'une sortie du texte sur un fichier dont le nom est un paramètre optionnel de la fonction.
  • J'aime
Réactions: JPaul78

Derniers avis

excellent merci pour ce partage