sexta-feira, 18 de março de 2016

VBA & Excel: ler em uma planilha fechada


No VBA, as diferentes técnicas de leitura de dados em um arquivo Excel são bastante redundante pela sua complexidade. No entanto, existe uma pequena dica que permite contornar isto, sem utilizar a conexão OLE DB, porém unicamente para leitura. 


Nós temos necessidade, em nossa planilha de Recap, ter as informações situadas no espaço de células A1 :F10 da folha Folh1 de uma planilha fonte, ela mesma situada no diretório C:\Pijaku\Não_faz_nada_de_seus_dias\CCM\. Então, para começar, abrimos uma planilha, Pijakuem Folh1 da célula A1 na célula F10 e registramos como fonte.xls no diretório: C:\Pijaku\Não_faz_nada_de_seus_dias\CCM\. Fechemos esta planilha e abrimos uma segunda planilha Excel e a registremos como Recap.xls, no desktop (por exemplo). 

O método, através do Excel:

Na sua planilha Recap.xls insira um nome definido, no menu Inserção escolha Nome e clique emDefinir
Nomes na planilha > digitar: espaço. Faça referência à > digitar ='C:\Pijaku\Não_faz_nada_de_seus_dias\CCM\[source.xls]Folh1'!$A$1:$F$10 
Clique em Adicionar 

Na nossa planilha, na coluna A1 digite a fórmula: =espaço e depois valide. Estenda esta fórmula sobre todo o espaço de A1 à F10... 

O código VBA correspondente

Sub ImportarDadosSemAbrir()  
Dim Caminho As String, Arquivo As String  
Caminho = "C:\Pijaku\Não_faz_nada_de_seus_dias\CCM\"  
Arquivo= "source.xls"  
ThisWorkbook.Names.Add "espaço", _  
            RefersTo:="='" & Caminho & "[" & Arquivo & "]Folh1'!$A$1:$F$10"  
    With Sheets("Folh2")  
        .[A1:F10] = "=espaço"  
        .[A1:F10].Copy  
        Sheets("Folh1").Range("A1").PasteSpecial xlPasteValues  
        .[A1:F10].Clear  
    End With  
End Sub

Precauções do emprego

Verifique, principalmente, o caminho de acesso ao diretório, a ortografia, a quebra que são detalhes são importantes. Também verifique o \ entre o caminho do diretório e o nome da planilha 

Download

Você pode baixar a planilha fonte por exemplo bem como a planilha recap.

Fonte: http://br.ccm.net/faq/
Anterior
Proxima

Postador

Postagens Relacionadas

0 comentários:

Os comentários serão moderados antes de publicar! respondo todos, obrigado por comentar.