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.