Excel / VBA - Recuperar informações de uma pasta de trabalho próxima

[Excel-VBA] Leia em uma pasta de trabalho fechada

Existem vários métodos no VBA, para ler dados de uma pasta de trabalho do Excel, sem abrir o último. A maioria desses métodos é conhecida por sua complexidade, mas, no entanto, há um pequeno truque para contornar isso, sem usar a conexão OLE DB (modo somente leitura).

Introdução

Vamos tentar recuperar as informações para a nossa apostila "Recapitular". As informações estão localizadas no seguinte intervalo de células "A1: F10" de "Sheet1" da pasta de trabalho "fonte", localizada no diretório "C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM \"

  • Primeiro, abra a pasta de trabalho e insira "Pijaku" na Planilha1, da célula A1 à célula F10 e salve-a como "source.xls" em "C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM \"
  • Vamos fechar este livro.
  • Abra uma segunda pasta de trabalho e salve-a como " Recap.xls " (na área de trabalho).

O método pelo Excel:

Na sua pasta de trabalho Recap.xls:

Insira um nome definido.

  • Menu: Inserir
  • Escolha: nome
  • Clique em: Set
  • Nomes na pasta de trabalho => type: range
  • Refere-se a => Enter = 'C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM \ [source.xls] Feuil1'! $ A $ 1: $ F $ 10
  • Clique em Adicionar.
  • Em sua pasta de trabalho, insira a fórmula em A1: = range
  • e validar.
  • Estique esta fórmula de A1 a F10 ...

Código VBA

 Sub ImportadorDonneesSansOuvrir ()

Dim Chemin como String, Fichier como String

Chemin = "C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM \"

Fichier = "source.xls"

ThisWorkbook.Names.Add "plage", _

RefersTo: = "= '" & Chemin & "[" & Fichier & "] Feuil1'! $ A $ 1: $ F $ 10"

Com folhas ("Feuil2")

[A1: F10] = "= plage"

[A1: F10] .Copy

Sheets ("Feuil1"). Range ("A1"). PasteSpecial xlPasteValues

[A1: F10] .Claro

Fim com

End Sub

Observe que

Acima de tudo, verifique se o caminho para o diretório, a ortografia é corrent. Além disso, verifique se "\" está presente entre o caminho do diretório e o nome da pasta de trabalho.

Exemplo de uso

Esse código percorre todas as pastas de trabalho em um diretório e extrai o conteúdo da célula A1 (sheet1), nesse caso, por exemplo, uma data.

 Option Explicit

Sub ImporterDates ()

Dim objShell As Object, objFolder As Object

Dim Chemin As String, fichier As String

Definir objShell = CreateObject ("Shell.Application")

Defina objFolder = objShell.BrowseForFolder (& H0 &, "Choisir un répertoire", & H1 &)

Se objFolder não é nada, então

MsgBox "Abandon opérateur", vbCritical, "Annulation"

Outro

Colunas (1) .NumberFormat = "m / d / aaaa"

Chemin = objFolder.ParentFolder.ParseName (objFolder.Title) .Path & "\"

[B1] = Chemin

fichier = Dir (Chemin & "* .xls")

Do While Len (fichier)> 0

Se fichier ThisWorkbook.Name então

ThisWorkbook.Names.Add "Plage", _

RefersTo: = "= '" & Chemin & "[" & fichier & "] Feuil1'! $ A $ 1"

Com folhas ("Feuil2")

[A1] = "= Plage"

[A1] .Copy

Sheets ("Feuil1"). Range ("A" e Rows.Count) .End (xlUp) .Offset (1, 0) .PasteSpecial xlPasteValues

Folhas ("Feuil1"). Range ("A" & Rows.Count) .End (xlUp) .Offset (0, 1) = fichier

Fim com

Fim se

fichier = Dir ()

Loop

Fim se

End Sub

Transferências

Você pode baixar o:

  • pasta de trabalho de origem
  • recapitular livro
  • Também está disponível para download um arquivo Zip demonstrando o loop.
Artigo Anterior Próximo Artigo

Principais Dicas