Extrahovanie údajov z uzavretého súboru do iného zošita je bežnou požiadavkou väčšiny používateľov programu Excel. Chceli by stiahnuť alebo konsolidovať údaje z uzavretých súborov; to však nie je možné. Existuje riešenie, ktoré pomáha vyriešiť tento problém. Riešením je použitie makrokódu.
Otázka: Denne trávim čas kopírovaním údajov z jedného súboru do druhého. Existujú dva súbory „Open.xls“ a „Closed.xls“ a chcem skopírovať údaje z „Closed.xls“ do „Open.xls“ pomocou kódu VBA.
Kľúčové veci, ktoré by ste mali vedieť:
- Prvá vec je, že by sme v otvorenom zošite mali poznať „Usedrange“ uzavretého zošita, t.j. „Closed.xls“, napr. “Open.xls”
- Funkciu IF môžeme použiť v použitom rozsahu zošita „Closed.xls“ v zošite „Open.xls“ a bude extrahovať údaje zo zošita „Closed.xls“
- Ak je odkazujúca bunka prázdna, #N/A sa vloží. Pomocou metódy specialcells potom môžete odstrániť všetky #N/A chyby a zmeniť vzorec na hodnoty
Na začiatok uložíme dva súbory programu Excel 1) Open.xls 2) Closed.xls do cesty „D: \ Test Folder“
Nasleduje snímka zošita „Closed.xls“:
Na automatické ukladanie údajov zo súboru „Closed.xls“ do súboru „Open.xls“ musíme pri spustení editora VB vykonať nasledujúce kroky.
- Kliknite na kartu Vývojár
- V skupine Kód vyberte položku Visual Basic
- Skopírujte nižšie uvedený kód do tejto pracovnej knihy (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
- Ak chcete stiahnuť údaje do súboru „Open.xls“, skopírujte nasledujúci kód do štandardného modulu
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) S listom1.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
- Skopírujte nasledujúci kód do ThisWorkbook (Open.xls)
Súkromný čiastkový zošit_Open () Spustite podsekciu „Importované údaje“
Teraz sú kódy VBA nastavené; Všetko, čo musíme urobiť, je otvoriť názov súboru „Open.xls“. Nasleduje snímka súboru „Open.xls“:
Kód nie je obmedzený na kópiu bunky z A1.usedrange; kód vyberie počiatočný rozsah a bude fungovať úplne v poriadku. Súbory sú k dispozícii na stiahnutie a odporúčame vám ich začať.
Záver: S kódom VBA môžeme automatizovať úlohu extrakcie údajov bez otvorenia cieľového zošita a šetríme sa pred ručným kopírovaním a vkladaním.
Ak sa vám páčili naše blogy, zdieľajte ich so svojimi priateľmi na Facebooku. A tiež nás môžete sledovať na Twitteri a Facebooku.
Radi by sme vás počuli, dajte nám vedieť, ako môžeme zlepšiť, doplniť alebo inovovať našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku