Excel / VBA - Informatie ophalen uit een gesloten werkmap

[Excel-VBA] Lees een gesloten werkboek in

Er zijn verschillende methoden onder VBA om gegevens uit een Excel-werkmap te lezen, zonder deze later te openen. De meeste van deze methoden staan ​​bekend om hun complexiteit, maar er is een kleine truc om dit te omzeilen, zonder de OLE DB-verbinding te gebruiken (alleen-lezen modus).

Invoering

We zullen proberen om informatie op te halen in onze "Recap" werkmap. De informatie bevindt zich in het volgende cellenbereik "A1: F10" van "Sheet1" van de "bron" -werkmap, in de map "C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM \"

  • Open eerst de werkmap en voer "Pijaku" in Blad1 in, van cel A1 tot cel F10 en sla deze op als "source.xls" in de "C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM \"
  • Laten we deze werkmap sluiten.
  • Open een tweede werkmap en sla deze op als " Recap.xls " (op de desktop).

De methode van Excel:

In uw Recap.xls-werkmap:

Voeg een gedefinieerde naam in.

  • Menu: invoegen
  • Keuze: naam
  • Klik op: Instellen
  • Namen in werkmap => type: bereik
  • Verwijst naar => Enter = 'C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM \ [source.xls] Feuil1'! $ A $ 1: $ F $ 10
  • Klik op Toevoegen.
  • Voer in uw werkmap de formule in A1: = bereik in
  • en valideer.
  • Strek deze formule uit van A1 tot F10 ...

VBA-code

 Sub ImporterDonneesSansOuvrir ()

Dim Chemin As String, Fichier As 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"

Met bladen ("Feuil2")

. [A1: F10] = "= plage"

. [A1: F10] .Copy

Spreadsheets ("Feuil1"). Bereik ("A1"). PlakkenSpeciale xlPasteValues

. [A1: F10] .Duidelijk

Eindigt met

End Sub

Let daar op

Zorg er vooral voor dat het pad naar de map, de spelling corrent is. Controleer ook of "\" aanwezig is tussen het mappad en de naam van de werkmap.

Voorbeeld van gebruik

Deze code doorloopt alle werkmappen in een map en extraheer de inhoud van cel A1 (blad1), in dit geval bijvoorbeeld een datum.

 Optie Expliciet

Sub ImporterDates ()

Dim objShell als object, objFolder als object

Dim Chemin As String, fichier As String

Stel objShell = CreateObject ("Shell.Application") in

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

Als objFolder dan niets is

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

Anders

Kolommen (1) .NumberFormat = "m / d / jjjj"

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

[B1] = Chemin

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

Do While Len (fichier)> 0

Als dit echter ThisWorkbook.Name fichier

ThisWorkbook.Names.Add "Plage", _

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

Met bladen ("Feuil2")

. [A1] = "= Plage"

. [A1] .Copy

Spreadsheets ("Feuil1"). Bereik ("A" & Rows.Count). End (xlUp) .Offset (1, 0) .PasteSpecial xlPasteValues

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

Eindigt met

Stop als

fichier = Dir ()

Lus

Stop als

End Sub

downloads

Je kunt de:

  • bron werkboek
  • samenvatting werkmap
  • Ook beschikbaar om een ​​Zip-bestand te downloaden om de loop te demonstreren.
Vorige Artikel Volgende Artikel

Top Tips