Trekk data fra en lukket arbeidsbok

Anonim

Å trekke ut data fra en lukket fil i en annen arbeidsbok er en vanlig forespørsel fra de fleste Excel -brukerne. De ønsker å trekke eller konsolidere data fra lukkede filer; dette er imidlertid ikke mulig. Det er en løsning som hjelper til med å løse dette problemet. Løsningen bruker makrokode.

Spørsmål: Til daglig bruker jeg tid på å kopiere data fra en fil til en annen. Det er to filer "Open.xls" & "Closed.xls", og jeg vil kopiere data fra "Closed.xls" til "Open.xls" via VBA -kode.

Viktige ting å vite:

  • Det første er at vi bør kjenne “Usedrange” i den lukkede arbeidsboken, dvs. “Closed.xls” i den åpne arbeidsboken for f.eks. “Open.xls”
  • Vi kan bruke IF -funksjonen i Usedrange av "Closed.xls" arbeidsbok i "Open.xls" arbeidsbok, og den vil trekke ut dataene fra "Closed.xls" arbeidsbok
  • Hvis referansecellen er tom, settes #N/A på plass. Ved hjelp av spesialcellemetoden kan du deretter slette alle #N/A -feilene og endre formelen til verdier

Til å begynne med vil vi lagre to excel -filer 1) Open.xls 2) Closed.xls i banen “D: \ Test Folder”

Følgende er øyeblikksbildet av "Closed.xls" arbeidsbok:

For å lagre data automatisk fra “Closed.xls” -filen til “Open.xls” -filen, må vi følge trinnene nedenfor for å starte VB -editor

  • Klikk på kategorien Utvikler
  • Velg Visual Basic fra kodegruppen

  • Kopier koden nedenfor i ThisWorkbook (Closed.xls)
 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, _ Cancel As Boolean) 'Put in the UsedRange Address of Sheet1 Closed.xls (this workbook)' --- Comment Sheet2.Cells (1, 1) = Sheet1.UsedRange.Address End Sub 

  • For å trekke dataene i "Open.xls", kopierer du følgende kode i standardmodulen
 Sub Importdata () Dim AreaAddress As String Sheet1.UsedRange.Clear Sheet1.Cells (1, 1) = "= 'D: \ Test Folder \" & "[Closed.xls] Sheet2'! RC" AreaAddress = Sheet1.Cells ( 1, 1) Med Sheet1.Range (AreaAddress) .FormulaR1C1 = "= IF ('D: \ Test Folder \" & "[Closed.xls] Sheet1'! RC =" "" ", NA (), 'D: \ Test Folder \ "& _" [Closed.xls] Sheet1 '! RC) "On Error Resume Next .SpecialCells (xlCellTypeFormulas, xlErrors). Clear on Error GoTo 0 .Value = .Value End With End Sub 

  • Kopier følgende kode i ThisWorkbook (Open.xls)
 Private Sub Workbook_Open () Kjør "Importdata" End Sub 

Nå er VBA -kodene klare. alt vi trenger å gjøre er å åpne filnavnet "Open.xls". Følgende er øyeblikksbildet av filen "Open.xls":

Koden er ikke begrenset til cellekopi fra A1.usedrange; koden velger startområdet og fungerer helt fint. Filene er tilgjengelige for nedlasting, og vi anbefaler at du prøver.

Konklusjon: Med VBA -kode kan vi automatisere dataekstraheringsoppgave uten å åpne arbeidsbok for destinasjoner, og vi sparer oss for å gjøre manuell kopiering og liming.

Hvis du likte bloggene våre, del den med vennene dine på Facebook. Og du kan også følge oss på Twitter og Facebook.

Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre, utfylle eller innovere arbeidet vårt og gjøre det bedre for deg. Skriv til oss på e -post