Pregunta

Parece que cuando copias algo desde un navegador web al portapapeles, se almacenan al menos 2 cosas:

  1. Texto sin formato
  2. código fuente HTML

Luego depende del software en el que está pegando puede determinar cuál quiere.Al pegar en MSExcel 2003, tiene una opción especial de pegado para pegar HTML, que pegará el HTML formateado (tal como lo muestra el navegador).

Lo que quiero hacer es pegar el código fuente real como texto sin formato.¿Se puede recuperar esto del portapapeles en VBA?

Editar Estoy intentando acceder a todo el código fuente del HTML copiado, incluidas las etiquetas.

¿Fue útil?

Solución

Esta vez leí la pregunta correctamente y me di cuenta. coonj quiere obtener el HTML del portapapeles, incluidas las etiquetas.

Creo que esto es razonablemente difícil.Debe leer el portapapeles mediante llamadas a la API de Windows.Y luego, analiza la cadena CF_HTML resultante que tiene algunos encabezados extravagantes agregados encima del HTML.

  1. Artículo de la base de conocimientos de Microsoft con código API de Windows para leer el CF_HTML del portapapeles (función GetHTMLClipboard).
  2. Entonces probablemente querrás ignorar los encabezados extravagantes.Microsoft documenta el formato. aquí.A continuación se muestra un fragmento CF_HTML de ejemplo.Probablemente se te ocurra algún método de conjetura para saltarte las primeras líneas.

    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>  
    

También podría valer la pena pensar si existe alguna otra forma de resolver su problema.Por ejemplo, ¿el navegador será siempre Internet Explorer?¿Puedes obtener lo que necesitas recorriendo el árbol HTML utilizando el modelo de objetos COM?

EDITAR: coonj He probado esto ahora y dice "la función GetHTMLClipboard parece funcionar tanto con Firefox como con IE, y no parece que esté incluyendo esos encabezados allí".

Otros consejos

VB6 tiene el objeto Portapapeles que le permite obtener los datos del portapapeles en diferentes formatos. VBA no tiene este objeto. Pero hay llamadas API de Windows que puede usar. Puede ver una implementación de muestra para VBA aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top