Excel / VBA - Získať informácie z blízkeho zošita

[Excel-VBA] Čítať v uzavretom zošite
Existuje niekoľko metód pod VBA, čítať údaje zo zošita programu Excel, bez otvorenia neskôr. Väčšina z týchto metód je známa svojou zložitosťou, ale je tu malý trik, ako sa dostať okolo, bez použitia pripojenia OLE DB (režim Iba na čítanie).úvod
Budeme sa snažiť získať informácie do nášho "Recap" zošita. Informácie sa nachádzajú v nasledujúcom rozsahu buniek "A1: F10" zo " zošita " zo " zošita ", umiestneného v adresári "C: Pijaku Nefrit_rien_de_ses_journées"
- Najprv otvorte zošit a zadajte "Pijaku" do Listu1, z bunky A1 do bunky F10 a uložte ho ako "source.xls" v "C: Pijaku Nefrit_rien_de_ses_journées"
- Zatvorme tento zošit.
- Otvorte druhý zošit a uložte ho ako " Recap.xls " (na pracovnej ploche).
Metóda v programe Excel:
Vo vašom zošite Recap.xls:
Vložte definovaný názov.
- Menu: Vložiť
- Voľba: Názov
- Kliknite na: Set
- Názvy v zošite => typ: rozsah
- Vzťahuje sa na => Enter = 'C: Pijaku Nefrit_rien_de_ses_journées CCM [source.xls] Feuil1'! $ A $ 1: $ F $ 10
- Kliknite na Pridať.
- Vo vašom zošite zadajte vzorec v A1: = range
- a overiť.
- Natiahnite tento vzorec z A1 do F10 ...
Kód VBA
Sub ImporterDonneesSansOuvrir ()Dim Chemin As String, Fichier As String
Chemin = "C: Pijaku Nefritová_rien_de_ses_journées CCM"
Fichier = "source.xls"
ThisWorkbook.Names.Add "plage", _
RefersTo: = "=" "& Chemin &" ["& Fichier &"] Feuil1 '! $ A $ 1: $ F $ 10 "
S hárkami („Feuil2“)
[A1: F10] = "= plage"
. [A1: F10] .Copy
Listy ("Feuil1") Rozsah ("A1") PasteSpecial xlPasteValues
. [A1: F10] .Clear
Koniec s
End Sub
Poznač si to
Predovšetkým sa uistite, že cesta k adresáru je pravopis. Tiež skontrolujte, či je medzi adresárovou cestou a názvom zošita prítomný znak "."
Príklad použitia
Tento kód prechádza všetkými zošitmi v adresári a extrahuje obsah bunky A1 (sheet1), v tomto prípade napríklad dátum.
Možnosť ExplicitSub ImporterDates ()
Dim objShell As Object, objFolder Ako objekt
Dim Chemin As String, fichier As String
Nastaviť objShell = CreateObject ("Shell.Application")
Nastaviť objFolder = objShell.BrowseForFolder (& H0 &, "Choisir un répertoire", & H1 &)
Ak objFolder nie je nič
MsgBox "Abandon opérateur", vbCritical, "Annulation"
inak
Stĺpce (1) .NumberFormat = "m / d / rrrr"
Chemin = objFolder.ParentFolder.ParseName (objFolder.Title) .Path & "\ t
[Bl] = Chemin
fichier = Dir (Chemin & "* .xls")
Robiť keď Len (fichier)> 0
Ak fichier ThisWorkbook.Name Potom
ThisWorkbook.Names.Add "Plage", _
RefersTo: = "=" "& Chemin &" ["& fichier &"] Feuil1 '! $ A $ 1 "
S hárkami („Feuil2“)
[A1] = "= Plage"
. [A1] .Copy
Tabuľky ("Feuil1") Rozsah ("A" & Rows.Count) .End (xlUp) .Offset (1, 0) .PasteSpeciálne xlPasteValues
Tabuľky ("Feuil1") Rozsah ("A" & Rows.Count) .End (xlUp) .Offset (0, 1) = fichier
Koniec s
Koniec Ak
fichier = Dir ()
slučka
Koniec Ak
End Sub
K stiahnutiu
Môžete si stiahnuť:
- zdrojový zošit
- rekapitulárny zošit
- K dispozícii aj na stiahnutie súboru Zip demonštrujúceho slučku.