Pregunta

Usando VBA en MS Office, ¿cómo agrego texto al portapapeles de Windows para que se pegue en Word como una tabla?

¿Fue útil?

Solución

El portapapeles de Windows admite múltiples formatos. Cuando desea colocar cosas en el portapapeles, realiza una o más llamadas a RegisterClipboardFormat () diciéndole los formatos de los objetos que colocará en el portapapeles, seguido de llamadas a SetClipboardData () que realmente coloca los datos en el portapapeles .

Si desea poder pegar una tabla en Word, HTML es el formato más fácil para trabajar. Simplemente copie una tabla HTML en el portapapeles, y se pegará correctamente en Word, siempre que primero registre los datos del portapapeles como un objeto HTML.

Te daría un código, pero es más fácil hacer referencia a un ejemplo en MSDN:

Cómo agregar código HTML al portapapeles usando Visual Basic

Esta página incluso muestra un ejemplo de copia de una tabla HTML en el portapapeles.

Otros consejos

La respuesta de Kluge es correcta, pero este artículo diferente en MSDN tiene un código mejor que es más fácil de reutilizar: http://blogs.msdn.com/jmstall/archive/2007/01/21/html-clipboard.aspx

¿Has intentado formatearlo como una tabla HTML?

Ha pasado un tiempo desde que hice cualquier programación de Windows, pero parece recordar que registras el formato del objeto. De hecho, puede registrar varios objetos de diferentes formatos y la aplicación de pegado puede elegir entre ellos (como con la opción Pegado especial de Word).

Intentaría crear un objeto de tabla de Word, llenar sus celdas con sus datos y luego copiarlo en el portapapeles.

El Portapapeles es genial ... Pero algo parece un poco incompleto sobre su uso para mantener la salida de su programa para pegar en Word. ¿Qué es lo que estás tratando de hacer que probablemente deberías estar haciendo de otra manera?

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