VBA & Excel: ler em uma planilha fechada

Faça uma pergunta
No VBA, as diferentes técnicas de leitura de dados em um arquivo Excel são bastante redundantes 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.


Em nossa planilha de Recap, nós precisamos ter as informações situadas no espaço de células A1:F10 da Plan1 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, Pijaku em Plan1 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 salvas como Recap.xls, no desktop (por exemplo).

O método pelo Excel

Na sua planilha Recap.xls: insira um nome definido no menu Inserir, escolha Nome e clique em Definir.

Nomes na planilha => type: range. Fazer referência à > digitar
='C:\Pijaku\Não_faz_nada_de_seus_dias\CCM\[source.xls]Plan1'!$A$1:$F$10
. Clicar em Adicionar. Na sua planilha, na coluna A1 digitar a fórmula =intervalo e validar. Estender esta fórmula sobre todo o espaço de A1 a 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 "intervalo", _
RefersTo:="='" & Caminho & "[" & Arquivo & "]Folh1'!$A$1:$F$10"
With Sheets("Folh2")
.[A1:F10] = "=intervalo"
.[A1:F10].Copy
Sheets("Folh1").Range("A1").PasteSpecial xlPasteValues
.[A1:F10].Clear
End With
End Sub

Precauções do uso

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

Foto: © Microsoft.
Jean-François Pillou

Jean-François Pillou - Fundador do CCM
Mais conhecido como Jeff, Jean-François Pillou é o fundador do CommentCaMarche.net. Ele também é CEO do CCM Benchmark e diretor digital do Grupo Figaro.

Mais informações sobre a equipe do CCM