Excel / VBA - preluarea informațiilor dintr-un registru de lucru apropiat

[Excel-VBA] Citiți într-un registru de lucru închis

Există mai multe metode în cadrul VBA, pentru a citi datele dintr-un registru de lucru Excel, fără a deschide ulterior. Cele mai multe dintre aceste metode sunt cunoscute pentru complexitatea lor, dar cu toate acestea, există un mic truc pentru a obține acest lucru, fără a utiliza conexiunea OLE DB (modul Read-Only).

Introducere

Vom încerca să preluăm informațiile în registrul de lucru "Recapitulare". Informația se află în următorul interval de celule "A1: F10" din "Sheet1" din registrul de lucru "sursă", localizat în directorul "C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM"

  • Mai întâi deschideți registrul de lucru și introduceți "Pijaku" în Sheet1, de la celula A1 la celula F10 și salvați-l ca "source.xls" în "C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM"
  • Să închidem acest registru de lucru.
  • Deschideți un al doilea registru de lucru și salvați-l ca " Recap.xls " (pe desktop).

Metoda prin Excel:

În registrul de lucru Recap.xls:

Introduceți un nume definit.

  • Meniu: inserați
  • Alegerea: Numele
  • Faceți clic pe: Setare
  • Numele din registrul de lucru => tip: interval
  • Se referă la => Enter = 'C: \ Pijaku \ Ne_fait_rien_de_ses_journées \ CCM \ [sursa.xls] Feuil1'! $ A $ 1: $ F $ 10
  • Dați clic pe Adăugați.
  • În registrul de lucru, introduceți formula în intervalul A1: =
  • și validarea.
  • Împingeți această formulă de la A1 la F10 ...

Codul VBA

 Sub ImporterDonneesSansOuvrir ()

Dim Chemin ca șir, Fichier ca șir

Chemin = "C: \ Pijaku \ Ne_fait_rien_de_ses_journees \ CCM \"

Fichier = "source.xls"

ThisWorkbook.Names.Add "plage", _

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

Cu foi ("Feuil2")

. [A1: F10] = "= plage"

. [A1: F10] .Copy

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

. [A1: F10] .Clear

Se termina cu

End Sub

Rețineți că

Mai presus de toate, asigurați-vă că calea spre director, ortografie sunt corrent. Verificați, de asemenea, dacă "\" este prezent între calea directorului și numele din registrul de lucru.

Exemplu de utilizare

Acest cod buclează toate registrele de lucru dintr-un director și extrage conținutul celulei A1 (foaia1), în acest caz, de exemplu, o dată.

 Opțiune explicită

Sub ImporterDates ()

Dim objShell ca obiect, objFolder ca obiect

Dim Chemin ca șir, fichier ca șir

Setați objShell = CreateObject ("Shell.Application")

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

Dacă objFolder nu este nimic atunci

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

altfel

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

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

[B1] = Chemin

fichier = Dir (Chemin și "* .xls")

În timp ce Len (fichier)> 0

Dacă fichier ThisWorkbook.Name Apoi

ThisWorkbook.Names.Add "Plage", _

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

Cu foi ("Feuil2")

. [A1] = "= Plage"

. [A1] .Copy

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

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

Se termina cu

Terminați Dacă

fichier = Dir ()

Buclă

Terminați Dacă

End Sub

Descărcări

Puteți descărca:

  • sursă
  • recapitulați registrul de lucru
  • De asemenea, disponibil pentru descărcare a unui fișier Zip care demonstrează bucla.
Articolul Precedent Articolul Următor

Cele Mai Importante Sfaturi