Dra data från en stängd arbetsbok

Anonim

Att extrahera data från en sluten fil i en annan arbetsbok är en vanlig begäran av de flesta Excel -användare. De skulle vilja dra eller konsolidera data från slutna filer; detta är dock inte möjligt. Det finns en lösning som hjälper till att lösa detta problem. Lösningen använder makrokod.

Fråga: Dagligen lägger jag tid på att kopiera data från en fil till en annan. Det finns två filer "Open.xls" & "Closed.xls" & jag vill kopiera data från "Closed.xls" till "Open.xls" via VBA -kod.

Viktiga saker att veta:

  • Det första är att vi ska känna till "Usedrange" i den slutna arbetsboken, dvs "Closed.xls" i den öppna arbetsboken för t.ex. “Open.xls”
  • Vi kan använda IF -funktionen i Usedrange av "Closed.xls" -arboken i "Open.xls" -arboken och det kommer att extrahera data från "Closed.xls" -boken
  • Om referenscellen är tom sätts #N/A på plats. Med specialcells -metoden kan du sedan radera alla #N/A -fel och ändra formeln till värden

Till att börja med kommer vi att spara två excel -filer 1) Open.xls 2) Closed.xls i sökvägen “D: \ Test Folder”

Följande är ögonblicksbilden av "Closed.xls" arbetsbok:

För att automatiskt spara data från filen "Closed.xls" till filen "Open.xls" måste vi följa stegen nedan för att starta VB -editor

  • Klicka på fliken Utvecklare
  • Välj Visual Basic i kodgruppen

  • Kopiera koden nedan 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 

  • För att dra data i "Open.xls", kopiera följande kod 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: \ Testmapp \ "& _" [Closed.xls] Sheet1 '! RC) "Vid fel Återuppta nästa .SpecialCells (xlCellTypeFormulas, xlErrors). Rensa vid fel GoTo 0 .Value = .Value End With End Sub 

  • Kopiera följande kod i ThisWorkbook (Open.xls)
 Private Sub Workbook_Open () Kör "Importdata" End Sub 

Nu är alla VBA -koder inställda; allt vi behöver göra är att öppna filnamnet "Open.xls". Följande är ögonblicksbilden av filen "Open.xls":

Koden är inte begränsad till cellkopia från A1.usedrange; koden väljer startområdet och fungerar perfekt. Filerna är tillgängliga för nedladdning och vi rekommenderar att du gör ett försök.

Slutsats: Med VBA -kod kan vi automatisera dataextraheringsuppgifter utan att öppna målarbetsbok och vi sparar oss från att göra manuell kopiering och klistra in.

Om du gillade våra bloggar, dela den med dina vänner på Facebook. Och du kan också följa oss på Twitter och Facebook.

Vi vill gärna höra från dig, låt oss veta hur vi kan förbättra, komplettera eller förnya vårt arbete och göra det bättre för dig. Skriv till oss på e -postwebbplatsen