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ť Explicit

Sub 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.
Predchádzajúci Článok Nasledujúci Článok

Najlepšie Tipy