Pergunta

Parece que quando você copia algo de um navegador da web para a área de transferência, pelo menos duas coisas são armazenadas:

  1. Texto simples
  2. Código-fonte HTML

Então cabe ao software que você está colando determinar qual deles deseja.Ao colar em Excel 2003, você tem uma opção especial de colar HTML, que colará o HTML formatado (conforme exibido pelo navegador).

O que eu quero fazer é colar o código-fonte real como texto simples.Isso pode ser obtido na área de transferência no VBA?

Editar Estou tentando acessar todo o código-fonte do HTML copiado, inclusive as tags.

Foi útil?

Solução

Desta vez eu li a pergunta corretamente e percebi coonj deseja obter o HTML da área de transferência, incluindo tags.

Acredito que isso seja razoavelmente difícil.Você precisa ler a área de transferência usando chamadas de API do Windows.E então, analise a string CF_HTML resultante que tem alguns cabeçalhos malucos adicionados no topo do HTML.

  1. Artigo da Base de Conhecimento Microsoft com o código API do Windows para ler o CF_HTML da área de transferência (função GetHTMLClipboard).
  2. Você provavelmente desejará ignorar os cabeçalhos malucos.Microsoft documenta o formato aqui.Um exemplo de fragmento CF_HTML é mostrado abaixo.Você provavelmente poderia criar algum método de adivinhação para pular as primeiras linhas.

    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>  
    

Também pode valer a pena pensar se existe alguma outra maneira de resolver o seu problema.Por exemplo, o navegador sempre será o Internet Explorer?Você consegue o que precisa percorrendo a árvore HTML usando o modelo de objeto COM?

EDITAR: coonj tentou isso agora e diz "a função GetHTMLClipboard parece funcionar tanto com o Firefox quanto com o IE, e não parece que esteja jogando esses cabeçalhos lá"

Outras dicas

VB6 tem o objeto Clipboard que lhe permite obter os dados da área de transferência em diferentes formatos. O VBA não tem este objeto. Mas há janelas chamadas de API que você pode usar. Você pode ver uma implementação de exemplo para VBA aqui .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top