Extrair dados de um arquivo fechado em outra pasta de trabalho é uma solicitação comum da maioria dos usuários do Excel. Eles gostariam de extrair ou consolidar dados de arquivos fechados; no entanto, isso não é possível. Existe uma solução alternativa que ajuda a resolver esse problema. A solução é usar o código Macro.
Pergunta: Diariamente, passo tempo copiando dados de um arquivo para outro. Existem dois arquivos “Open.xls” e “Closed.xls” e desejo copiar os dados de “Closed.xls” para “Open.xls” através do código VBA.
Principais coisas a saber:
- A primeira coisa é que devemos saber o “intervalo de uso” da pasta de trabalho fechada, ou seja, “Closed.xls” dentro da pasta de trabalho aberta para, por exemplo, “Open.xls”
- Podemos usar a função IF em Usedrange da pasta de trabalho “Closed.xls” dentro da pasta de trabalho “Open.xls” e extrairá os dados da pasta de trabalho “Closed.xls”
- Se a célula de referência estiver em branco, # N / A é colocado no lugar. Usando o método de células especiais, você pode excluir todos os erros # N / A e alterar a fórmula para valores
Para começar, vamos salvar dois arquivos excel 1) Open.xls 2) Closed.xls no caminho “D: \ Test Folder”
A seguir está o instantâneo da pasta de trabalho “Closed.xls”:
Para salvar automaticamente os dados do arquivo “Closed.xls” para o arquivo “Open.xls”, precisamos seguir os passos abaixo para iniciar o editor VB
- Clique na guia Desenvolvedor
- No grupo Código, selecione Visual Basic
- Copie o código abaixo em ThisWorkbook (Closed.xls)
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, _ Cancel As Boolean) 'Colocar no endereço UsedRange da Planilha1 Closed.xls (esta pasta de trabalho)' --- Comentário Planilha2.Células (1, 1) = Planilha1.UsedRange.Address End Sub
- Para extrair os dados em “Open.xls”, copie o seguinte código no Módulo Padrão
Sub Importdata () Dim AreaAddress As String Sheet1.UsedRange.Clear Sheet1.Cells (1, 1) = "= 'D: \ Test Folder \" & "[Closed.xls] Sheet2'! RC" AreaAddress = Sheet1.Cells ( 1, 1) Com Sheet1.Range (AreaAddress) .FormulaR1C1 = "= IF ('D: \ Test Folder \" & "[Closed.xls] Sheet1'! RC =" "" ", NA (), 'D: \ Test Folder \ "& _" [Closed.xls] Sheet1 '! RC) "On Error Resume Next .SpecialCells (xlCellTypeFormulas, xlErrors) .Clear On Error GoTo 0 .Value = .Value End With End Sub
- Copie o seguinte código em ThisWorkbook (Open.xls)
Private Sub Workbook_Open () Executar "Importdata" End Sub
Agora os códigos VBA estão todos configurados; tudo o que precisamos fazer é abrir o nome do arquivo “Open.xls”. A seguir está o instantâneo do arquivo “Open.xls”:
O código não está limitado à cópia da célula de A1.usedrange; o código escolherá o intervalo inicial e funcionará perfeitamente bem. Os arquivos estão disponíveis para download e recomendamos que você experimente.
Conclusão: Com o código VBA, podemos automatizar a tarefa de extração de dados sem abrir a pasta de trabalho de destino e nos salvamos de copiar e colar manualmente.
Se você gostou de nossos blogs, compartilhe com seus amigos no Facebook. E você também pode nos seguir no Twitter e no Facebook.
Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar, complementar ou inovar nosso trabalho e torná-lo melhor para você. Escreva-nos no site de e-mail