Como colocar o texto na área de transferência para que ele cola como uma tabela no Word?
Pergunta
Usando VBA em MS Office, como faço para adicionar texto para a área de transferência do Windows para que ele irá colar no Word como uma tabela?
Solução
A área de transferência do Windows suporta vários formatos. Quando você quer colocar as coisas na área de transferência, você faz um ou mais chamadas para RegisterClipboardFormat () dizendo que os formatos dos objetos que você estará colocando na área de transferência, seguido por chamadas para SetClipboardData (), que realmente coloca os dados na área de transferência .
Se você quer ser capaz de colar uma tabela no Word, em seguida, HTML é o formato mais fácil de trabalhar. Basta copiar uma tabela HTML na área de transferência, e vai colar corretamente no Word, desde que primeiro registrar os dados da área de transferência como um objeto HTML.
Eu te daria algum código, mas é mais fácil simplesmente fazer referência a um exemplo no MSDN:
Como adicionar código HTML para a área de transferência usando o Visual Basic
Esta página ainda mostra um exemplo de copiar uma tabela HTML na área de transferência.
Outras dicas
Kluge resposta está correta, mas este artigo diferente no MSDN tem melhor código que é mais fácil de re-uso: http://blogs.msdn.com/jmstall/archive/2007/01/21/html-clipboard.aspx
Você tentou formatá-lo como uma tabela HTML?
Tem sido um tempo desde que eu tenha feito qualquer programação do Windows, mas eu me lembro que você registrar o formato do objeto. Na verdade, você pode registrar vários objetos de diferentes formatos ea aplicação colando pode escolher entre eles (como com opção Paste Special
do Word).
Gostaria de tentar criar um objeto de tabela do Word, preenchê-lo de células com os seus dados e depois copiar que na área de transferência.
A área de transferência é grande ... Mas algo parece um pouco esboçado em usá-lo para manter a saída do seu programa para colar no Word. O que é que você está tentando fazer isso você provavelmente deve estar fazendo alguma outra forma?