Udtræk af data fra en lukket fil i en anden projektmappe er en almindelig anmodning fra de fleste excel -brugere. De vil gerne trække eller konsolidere data fra lukkede filer; dette er imidlertid ikke muligt. Der er en løsning, der hjælper med at løse dette problem. Løsningen bruger makrokode.
Spørgsmål: Til daglig bruger jeg tid på at kopiere data fra en fil til en anden. Der er to filer "Open.xls" & "Closed.xls", og jeg vil kopiere data fra "Closed.xls" til "Open.xls" via VBA -kode.
Vigtige ting at vide:
- Den første ting er, at vi skal kende "Usedrange" i den lukkede projektmappe, dvs. "Closed.xls" i den åbne projektmappe til f.eks. “Open.xls”
- Vi kan bruge IF -funktionen i Usedrange af "Closed.xls" projektmappe i "Open.xls" projektmappen, og det vil udtrække dataene fra "Closed.xls" projektmappe
- Hvis referencecellen er tom, sættes #N/A på plads. Ved hjælp af specialcellemetoden kan du derefter slette alle #N/A -fejlene og ændre formlen til værdier
Til at begynde med vil vi gemme to excel -filer 1) Open.xls 2) Closed.xls i stien “D: \ Test Folder”
Følgende er øjebliksbilledet af "Closed.xls" projektmappe:
For automatisk at gemme data fra filen "Closed.xls" til "Open.xls" -filen skal vi følge nedenstående trin for at starte VB -editor
- Klik på fanen Udvikler
- Vælg Visual Basic i kodegruppen
- Kopiér nedenstående kode 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
- Hvis du vil trække dataene i "Open.xls", skal du kopiere følgende kode i standardmodulet
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 () Kør "Importdata" End Sub
Nu er VBA -koderne alle indstillet; alt, hvad vi skal gøre, er at åbne filnavnet "Open.xls". Følgende er snapshot af filen "Open.xls":
Koden er ikke begrænset til cellekopi fra A1.usedrange; koden vælger startområdet og fungerer helt fint. Filerne kan downloades, og vi anbefaler, at du prøver.
Konklusion: Med VBA -kode kan vi automatisere dataudtrækningsopgave uden at åbne destinationsarbejdsbog, og vi redder os fra at lave manuel kopiering og indsætning.
Hvis du kunne lide vores blogs, kan du dele den med dine venner på Facebook. Og også du kan følge os på Twitter og Facebook.
Vi vil meget gerne høre fra dig, lad os vide, hvordan vi kan forbedre, supplere eller innovere vores arbejde og gøre det bedre for dig. Skriv til os på e -mail -stedet