VB/VBA :Récupérer la chaîne HTML du presse-papiers (copié via le navigateur Web)
Question
Il semble que lorsque vous copiez quelque chose d'un navigateur Web vers le presse-papiers, au moins 2 éléments sont stockés :
- Texte brut
- Code source HTML
Il appartient ensuite au logiciel dans lequel vous collez de déterminer celui qu'il souhaite.Lors du collage dans MS Excel 2003, vous disposez d'une option spéciale de collage pour coller du HTML, qui collera le HTML formaté (tel qu'il est affiché par le navigateur).
Ce que je veux faire, c'est coller le code source réel sous forme de texte brut.Cela peut-il être récupéré dans le presse-papiers en VBA ?
Modifier J'essaie d'accéder à tout le code source du HTML copié, y compris les balises.
La solution
Cette fois, j'ai lu la question correctement et j'ai réalisé coonj veut obtenir le code HTML du presse-papiers, y compris les balises.
Je pense que c'est raisonnablement difficile.Vous devez lire le presse-papiers à l'aide des appels de l'API Windows.Et puis, analysez la chaîne CF_HTML résultante qui contient des en-têtes farfelus ajoutés au-dessus du code HTML.
- Article de la Base de connaissances Microsoft avec le code API Windows pour lire le CF_HTML depuis le presse-papier (fonction GetHTMLClipboard).
Vous souhaiterez alors probablement ignorer les en-têtes farfelus.Microsoft documente le format ici.Un exemple de fragment CF_HTML est présenté ci-dessous.Vous pourriez probablement trouver une méthode de conjecture pour sauter les premières lignes.
Version:0.9 StartHTML:71 EndHTML:170 StartFragment:140 EndFragment:160 StartSelection:140 EndSelection:160 <!DOCTYPE> <HTML> <HEAD> <TITLE>The HTML Clipboard</TITLE> <BASE HREF="http://sample/specs"> </HEAD> <BODY> <!--StartFragment --> <P>The Fragment</P> <!--EndFragment --> </BODY> </HTML>
Cela vaut peut-être également la peine de réfléchir s'il existe un autre moyen de résoudre votre problème.Par exemple, le navigateur sera-t-il toujours Internet Explorer ?Pouvez-vous obtenir ce dont vous avez besoin en parcourant l’arborescence HTML à l’aide du modèle objet COM ?
MODIFIER: coonj a essayé cela maintenant et dit "la fonction GetHTMLClipboard semble fonctionner à la fois avec Firefox et IE, et il ne semble pas qu'elle y jette ces en-têtes"
Autres conseils
VB6 a l’objet Clipboard qui vous permet d’obtenir les données du presse-papiers dans différents formats. VBA n'a pas cet objet. Mais il existe des appels API Windows que vous pouvez utiliser. Vous pouvez voir un exemple de mise en œuvre pour VBA ici .