Copiar VBA para a área de transferência

Este artigo demonstrará como usar o VBA para copiar itens para a área de transferência.

Pode haver um momento em que desejamos copiar as informações no Excel VBA e armazená-las para uso em outro aplicativo ou em outro momento quando a macro do Excel for interrompida. Depois que uma macro para de ser executada, as informações armazenadas em uma variável ou variáveis ​​deixam de existir e não podem mais ser recuperadas. Uma forma de resolver esse problema seria copiar essas informações para a área de transferência.

Copiando para a área de transferência usando a biblioteca de objetos HTML

A maneira mais simples de usar a área de transferência no Excel VBA é chamar a Biblioteca de objetos HTML.

1234567 Sub StoreData ()Dim varText As VariantDim objCP As ObjectvarText = "Algum texto copiado"Definir objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "text", varTextEnd Sub

Como estamos usando a vinculação tardia declarando a variável objCP como um objeto, não precisamos adicionar uma referência ao Excel para fazer esse procedimento funcionar.

Se agora mudássemos para nossa planilha Excel e clicássemos em Colar, o texto “Alguns dados copiados” seria inserido na célula selecionada.

Se tivéssemos que transformar este procedimento acima em uma função, poderíamos passar o texto a ser copiado como uma variável.

12345 Função StoreData (varText As Variant) como StringDim objCP As ObjectDefinir objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "text", varTextFunção Final

Poderíamos então chamar essa função várias vezes em nosso código VBA conforme e quando precisarmos copiar o texto para a área de transferência. O texto não seria, portanto, embutido no código VBA.

123 Sub CopyData ()StoreData "Algum texto copiado"End Sub

Também podemos usar o objeto HTML para retornar o texto da área de transferência - ou seja, colar. Para isso, usamos o método GetData em vez do método SetData.

12345 Função ReturnData ()Dim objCP As ObjectDefinir objCP = CreateObject ("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData ("text")Função Final

Podemos então chamar esta função para retornar os dados armazenados na área de transferência.

123 Sub PasteData ()MsgBox ReturnDataEnd Sub

Um truque interessante seria combinar as 2 funções juntas para que pudéssemos usar a mesma função para copiar e colar dados, dependendo se enviamos ou não dados para a área de transferência, ou se desejamos recuperar dados da área de transferência.

1234567891011 Função StoreOrReturnData (Opcional strText As String) As StringDim varText As VariantDim objCP As ObjectDefinir objCP = CreateObject ("HtmlFile")varText = strTextSe strText "" EntãoobjCP.ParentWindow.ClipboardData.SetData "text", varTextOutroStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData ("text")Fim seFunção Final

No código acima, podemos tornar a variável strText opcional - isso significa que se desejarmos copiar os dados, incluiremos o texto a ser copiado, mas se desejarmos colar os dados, iremos excluí-lo.

Em seguida, atribuiremos a variável string (strText) a uma variável Variant para que ela seja armazenada no método SetData do objeto Arquivo HTML.

Para copiar os dados, podemos usar este procedimento, note que estamos incluindo o texto a ser copiado.

123 Sub CopyData ()StoreOrReturnData "SomeCopiedText"End Sub

Para colar os dados, podemos usar este procedimento. A caixa de mensagem mostrará o valor armazenado na área de transferência.

123 Sub PasteData ()MsgBox StoreOrReturnDataEnd Sub

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave