Darbaknygės objekto naudojimas „Excel VBA“ (atidaryti, uždaryti, išsaugoti, nustatyti)

Šioje pamokoje aptarsiu, kaip dirbti su „Excel“ darbaknygėmis naudojant VBA.

„Excel“ „Darbaknygė“ yra objektas, kuris yra „Darbaknygių“ kolekcijos dalis. Darbaknygėje yra įvairių objektų, tokių kaip darbalapiai, diagramų lapai, langeliai ir diapazonai, diagramos objektai, formos ir kt.

Naudodami VBA galite daug ką padaryti naudodami darbaknygės objektą - pavyzdžiui, atidaryti konkrečią darbaknygę, išsaugoti ir uždaryti darbaknyges, sukurti naujas darbaknyges, pakeisti darbaknygės ypatybes ir pan.

Taigi pradėkime.

Visi kodai, kuriuos paminėjau šioje mokymo programoje, turi būti patalpinti „Visual Basic“ redaktoriuje. Eikite į skyrių „Kur įdėti VBA kodą“, kad sužinotumėte, kaip jis veikia.

Jei jus domina lengvas VBA mokymasis, patikrinkite mano Internetinis „Excel VBA“ mokymas.

Darbo knygos nuoroda naudojant VBA

Yra įvairių būdų, kaip nurodyti VBA darbaknygės objektą. Pasirinktas metodas priklausys nuo to, ką norite atlikti. Šiame skyriuje aptarsiu įvairius būdus, kaip kreiptis į darbo knygą, ir keletą pavyzdžių kodų.

Darbo knygų pavadinimų naudojimas

Jei turite tikslų darbaknygės, kurią norite nurodyti, pavadinimą, galite naudoti kodo pavadinimą.

Pradėkime nuo paprasto pavyzdžio.

Jei atidarote dvi darbaknyges ir norite suaktyvinti darbaknygę pavadinimu - Examples.xlsx, galite naudoti žemiau esantį kodą:

Sub ActivateWorkbook () Darbo knygos ("Examples.xlsx")

Atminkite, kad failo pavadinimą reikia naudoti kartu su plėtiniu, jei failas buvo išsaugotas. Jei jis nebuvo išsaugotas, galite naudoti pavadinimą be failo plėtinio.

Jei nežinote, kokį pavadinimą naudoti, pasinaudokite „Project Explorer“ pagalba.

Jei norite suaktyvinti darbaknygę ir pasirinkti tam tikrą langelį tos darbo knygos darbalapyje, turite nurodyti visą langelio adresą (įskaitant darbaknygę ir darbalapio pavadinimą).

Sub ActivateWorkbook () Darbo knygos ("Examples.xlsx"). Darbo lapai ("Sheet1"). Aktyvuoti diapazoną ("A1"). Pasirinkite End Sub

Aukščiau pateiktas kodas pirmiausia suaktyvina „Sheet1“ darbaknygėje „Examples.xlsx“, o tada lape pasirenka langelį A1.

Dažnai matysite kodą, kuriame daroma nuoroda į darbalapį arba langelį/diapazoną, nenurodant darbo knygos. Taip atsitinka, kai nurodote tos pačios darbaknygės darbalapį/diapazonus, kuriuose yra kodas ir kuri taip pat yra aktyvi darbo knyga. Tačiau kai kuriais atvejais turite nurodyti darbaknygę, kad įsitikintumėte, jog kodas veikia (daugiau apie tai - „ThisWorkbook“ skyriuje).

Rodyklės numerių naudojimas

Taip pat galite remtis darbo knygomis pagal jų rodyklės numerį.

Pvz., Jei turite atidarytas tris darbaknyges, šis kodas parodys trijų darbo knygų pavadinimus pranešimų laukelyje (po vieną).

Sub WorkbookName () MsgBox darbaknygės (1). Pavadinimas MsgBox darbaknygės (2). Pavadinimas MsgBox darbaknygės (3). Pavadinimas End Sub

Aukščiau pateiktas kodas naudoja „MsgBox“ - tai funkcija, rodanti pranešimų laukelį su nurodytu tekstu/verte (šiuo atveju tai yra darbaknygės pavadinimas).

Viena iš problemų, su kuria dažnai susiduriu naudojant rodyklių numerius su darbaknygėmis, yra ta, kad niekada nežinai, kuri iš jų yra pirmoji, o kuri - antroji ir pan. Norėdami būti tikri, turėsite paleisti kodą, kaip parodyta aukščiau, arba kažką panašaus į ciklą per atidarytas darbo knygas ir žinoti jų indekso numerį.

„Excel“ pirmiausia laiko atidarytą darbaknygę, kad indekso numeris būtų 1, o kitą - 2 ir pan.

Nepaisant šio trūkumo, rodyklės numerių naudojimas gali būti naudingas. Pavyzdžiui, jei norite peržiūrėti visas atidarytas darbaknyges ir išsaugoti visas, galite naudoti rodyklės numerius. Šiuo atveju, kadangi norite, kad tai atsitiktų su visomis darbaknygėmis, jums nerūpi jų individualūs rodyklės numeriai.

Žemiau pateiktas kodas perjungtų visas atidarytas darbaknyges ir uždarytų visas, išskyrus darbaknygę, kurioje yra šis VBA kodas.

Sub CloseWorkbooks () Dim WbCount As Integer WbCount = Darbaknygės. Skaičiuokite i = WbCount iki 1 veiksmo -1, jei darbaknygės (i). Pavadinkite ThisWorkbook.Name Tada darbaknyges (i). Uždarykite pabaigą, jei kitas i End sub

Aukščiau pateiktas kodas suskaičiuoja atidarytų darbaknygių skaičių ir tada peržiūri visas darbaknyges, naudodamas kiekvieną ciklą.

Ji naudoja IF sąlygą, kad patikrintų, ar darbaknygės pavadinimas sutampa su darbaknygės, kurioje vykdomas kodas, pavadinimu.

Jei tai nėra atitikmuo, jis uždaro darbo knygą ir pereina prie kitos.

Atminkite, kad ciklą nuo WbCount iki 1 paleidome žingsniu -1. Tai daroma, kaip ir kiekviena kilpa, atvirų darbaknygių skaičius mažėja.

Ši darbo knyga išsamiai aprašyta vėlesniame skyriuje.

„ActiveWorkbook“ naudojimas

„ActiveWorkbook“, kaip rodo pavadinimas, nurodo aktyvią darbaknygę.

Žemiau pateiktas kodas parodys aktyvios darbaknygės pavadinimą.

Sub ActiveWorkbookName () „MsgBox ActiveWorkbook.Name“ pabaiga

Kai naudojate VBA, kad suaktyvintumėte kitą darbaknygę, po to VBA „ActiveWorkbook“ dalis pradėtų rodyti suaktyvintą darbaknygę.

Štai to pavyzdys.

Jei turite aktyvią darbaknygę ir į ją įterpiate šį kodą ir jį paleidžiate, pirmiausia bus rodomas darbaknygės, kurioje yra kodas, pavadinimas, o tada - Examples.xlsx (kuris aktyvuojamas pagal kodą) pavadinimas.

Sub ActiveWorkbookName () „MsgBox ActiveWorkbook.Name“ darbaknygės („Examples.xlsx“). Suaktyvinkite „MsgBox ActiveWorkbook.Name“ pabaiga

Atminkite, kad kuriant naują darbaknygę naudojant VBA, ta naujai sukurta darbaknygė automatiškai tampa aktyvia darbaknyge.

„ThisWorkbook“ naudojimas

Ši darbo knyga nurodo darbaknygę, kurioje vykdomas kodas.

Kiekvienoje darbaknygėje būtų „ThisWorkbook“ objektas (matomas „Project Explorer“).

„Šioje darbo knygoje“ galima saugoti įprastas makrokomandas (panašias į tas, kurias pridedame moduliuose), taip pat įvykių procedūras. Įvykio procedūra yra tai, kas suaktyvinama remiantis įvykiu, pvz., Dukart spustelėjus langelį, įrašant darbaknygę arba suaktyvinant darbalapį.

Bet kokia įvykių procedūra, kurią išsaugosite šioje „ThisWorkbook“, bus prieinama visoje darbaknygėje, palyginti su lapo lygio įvykiais, kurie apsiriboja tik konkrečiais lapais.

Pavyzdžiui, jei „Project Explorer“ dukart spustelėsite objektą „ThisWorkbook“ ir nukopijuosite į jį žemiau esantį kodą, jis parodys langelio adresą kiekvieną kartą, kai dukart spustelėsite bet kurią visos darbaknygės langelį.

Private Sub Workbook_SheetBeforeDoubleClick (ByVal Sh kaip objektas, ByVal Target kaip diapazonas, Atšaukti kaip loginis) „MsgBox Target“. Adreso pabaiga

Nors „ThisWorkbook“ pagrindinis vaidmuo yra išsaugoti įvykių procedūrą, taip pat galite ja naudotis norėdami nurodyti darbaknygę, kurioje vykdomas kodas.

Žemiau pateiktas kodas grąžins darbo knygos, kurioje kodas vykdomas, pavadinimą.

Sub ThisWorkbookName () MsgBox ThisWorkbook.Name End Sub

„ThisWorkbook“ (palyginti su „ActiveWorkbook“) pranašumas yra tas, kad visais atvejais ji nurodytų tą pačią darbo knygą (tą, kurioje yra kodas). Taigi, jei pridėsite naują darbaknygę naudodami VBA kodą, „ActiveWorkbook“ pasikeis, tačiau „ThisWorkbook“ vis tiek nurodys tą kodą, kuriame yra kodas.

Naujo darbaknygės objekto kūrimas

Šis kodas sukurs naują darbaknygę.

Sub CreateNewWorkbook () Darbaknygės. Pridėti pabaigos sub

Pridėjus naują darbaknygę, ji tampa aktyviąja.

Šis kodas pridės naują darbaknygę ir parodys tos darbaknygės pavadinimą (kuris būtų numatytasis knygos 1 tipo pavadinimas).

Sub CreateNewWorkbook () Darbaknygės. Pridėti „MsgBox ActiveWorkbook“. Pavadinimas Pabaiga

Atidarykite darbaknygę naudodami VBA

Galite naudoti VBA norėdami atidaryti konkrečią darbaknygę, kai žinote darbaknygės failo kelią.

Žemiau pateiktas kodas atvers darbaknygę - Examples.xlsx, kuri yra mano sistemos aplanke Dokumentai.

„OpenWorkbook“ () darbaknygių antraštė. Atidarykite („C: \ Users \ sumit \ Documents \ Examples.xlsx“) Pabaiga

Jei failas yra numatytame aplanke, kuris yra tas aplankas, kuriame VBA pagal numatytuosius nustatymus išsaugo naujus failus, galite tiesiog nurodyti darbaknygės pavadinimą - be viso kelio.

Sub OpenWorkbook () Workbooks.Open ("Examples.xlsx") End Sub

Jei darbaknygės, kurią bandote atidaryti, nėra, pamatysite klaidą.

Norėdami išvengti šios klaidos, prie kodo galite pridėti keletą eilučių, kad pirmiausia patikrintumėte, ar failas egzistuoja, ar ne, ir pabandykite jį atidaryti.

Žemiau pateiktas kodas patikrintų failo vietą, o jei jo nėra, jis parodys pasirinktinį pranešimą (o ne klaidos pranešimą):

Sub OpenWorkbook () Jei Dir ("C: \ Users \ sumit \ Documents \ Examples.xlsx") "" Tada Workbooks.Open ("C: \ Users \ sumit \ Documents \ Examples.xlsx") Kita MsgBox "Failas ne neegzistuoja „Pabaiga, jei pabaiga

Taip pat galite naudoti dialogo langą Atidaryti, kad pasirinktumėte failą, kurį norite atidaryti.

Sub OpenWorkbook () On Error Tęsti kitą Dim FilePath kaip String FilePath = Application.GetOpenFilename Workbooks. Open (FilePath) End Sub

Aukščiau pateiktas kodas atveria dialogo langą Atidaryti. Kai pasirenkate failą, kurį norite atidaryti, jis priskiria failo kelią kintamajam „FilePath“. Darbaknygės. Tada atidarykite failą naudodami failo kelią.

Jei vartotojas neatidaro failo ir spustelėja mygtuką Atšaukti, „FilePath“ tampa klaidinga. Kad išvengtume klaidos šiuo atveju, mes panaudojome teiginį „On Error Resume Next“.

Susijęs: Sužinokite viską apie klaidų tvarkymą „Excel VBA“

Darbo knygos išsaugojimas

Norėdami išsaugoti aktyvią darbaknygę, naudokite žemiau esantį kodą:

Sub SaveWorkbook () ActiveWorkbook.Save End Sub

Šis kodas tinka darbaknygėms, kurios jau buvo išsaugotos anksčiau. Be to, kadangi darbaknygėje yra aukščiau pateikta makrokomanda, jei ji nebuvo išsaugota kaip .xlsm (arba .xls) failas, kitą kartą atidarę makrokomandą prarasite.

Jei pirmą kartą išsaugosite darbaknygę, ji parodys raginimą, kaip parodyta žemiau:

Saugodami pirmą kartą, geriau naudoti parinktį „Išsaugoti“.

Žemiau pateiktas kodas išsaugotų aktyvią darbaknygę kaip .xlsm failą numatytoje vietoje (tai yra dokumentų aplankas mano sistemoje).

Sub SaveWorkbook () ActiveWorkbook.SaveAs Failo pavadinimas: = "Test.xlsm", FileFormat: = xlOpenXMLWorkbookMacroEnabled End Sub

Jei norite, kad failas būtų išsaugotas tam tikroje vietoje, turite tai nurodyti failo vardo reikšmėje. Žemiau pateiktas kodas išsaugo failą darbalaukyje.

Sub SaveWorkbook () ActiveWorkbook.SaveAs Failo pavadinimas: = "C: \ Users \ sumit \ Desktop \ Test.xlsm", FileFormat: = xlOpenXMLWorkbookMacroEnabled End Sub

Jei norite, kad vartotojas gautų galimybę pasirinkti failo išsaugojimo vietą, galite naudoti dialogo langą „Išsaugoti“. Žemiau pateiktas kodas rodo dialogo langą Įrašyti ir leidžia vartotojui pasirinkti vietą, kurioje failas turėtų būti išsaugotas.

Sub SaveWorkbook () Dim FilePath As String FilePath = Application.GetSaveAsFilename ActiveWorkbook.SaveAs Failo pavadinimas: = FilePath & ".xlsm", FileFormat: = xlOpenXMLWorkbookMacroEnabled End Sub

Atminkite, kad vietoj FileFormat: = xlOpenXMLWorkbookMacroEnabled galite naudoti ir FileFormat: = 52, kur 52 yra kodas xlOpenXMLWorkbookMacroEnabled.

Išsaugomos visos atviros darbaknygės

Jei atidarėte daugiau nei vieną darbaknygę ir norite išsaugoti visas darbaknyges, galite naudoti toliau nurodytą kodą.

Sub SaveAllWorkbooks () Dim wb kaip darbo knyga kiekvienai wb darbaknygėms wb. Išsaugoti kitą wb End sub

Pirmiau išvardytos išsaugomos visos darbaknygės, įskaitant tas, kurios niekada nebuvo išsaugotos. Anksčiau neišsaugotos darbaknygės bus išsaugotos numatytoje vietoje.

Jei norite išsaugoti tik tas darbaknyges, kurios buvo išsaugotos anksčiau, galite naudoti žemiau esantį kodą:

Sub SaveAllWorkbooks () Dim wb kaip darbo knyga kiekvienai wb darbaknygėje Jei wb.Path "" tada wb.Save End if Next wb End Sub

Išsaugoti ir uždaryti visas darbaknyges

Jei norite uždaryti visas darbaknyges, išskyrus darbaknygę, kurioje yra dabartinis kodas, galite naudoti toliau nurodytą kodą.

Sub CloseandSaveWorkbooks () Dim wb kaip darbaknygė kiekvienai wb darbaknygėje, jei wb.Vardas ThisWorkbook.Name Tada wb.Uždaryti SaveChanges: = True End If Next wb End Sub

Aukščiau pateiktas kodas uždarys visas darbaknyges (išskyrus darbaknygę, kurioje yra kodas - „ThisWorkbook“). Jei šiose darbaknygėse yra pakeitimų, pakeitimai bus išsaugoti. Jei yra darbaknygė, kuri niekada nebuvo išsaugota, ji parodys dialogo langą išsaugoti kaip.

Išsaugokite darbaknygės kopiją (su laiko žyma)

Kai „Excel“ darbaknygėse dirbu su sudėtingais duomenimis ir prietaisų skydeliu, dažnai kuriu skirtingas savo darbaknygių versijas. Tai naudinga, jei kažkas negerai su dabartine darbo knyga. Aš bent jau turėčiau išsaugoti jos kopiją kitu pavadinimu (ir prarasčiau tik darbą, kurį padariau sukūręs kopiją).

Čia yra VBA kodas, kuris sukurs jūsų darbaknygės kopiją ir išsaugos ją nurodytoje vietoje.

Sub CreateaCopyofWorkbook () ThisWorkbook.SaveCopyAs Failo pavadinimas: = "C: \ Users \ sumit \ Desktop \ BackupCopy.xlsm" Pabaiga

Aukščiau pateiktas kodas išsaugotų jūsų darbaknygės kopiją kiekvieną kartą paleidus šią makrokomandą.

Nors tai puikiai veikia, aš jausčiausi patogiau, jei kiekvieną kartą paleisdamas šį kodą išsaugočiau skirtingas kopijas. Tai svarbu todėl, kad jei netyčia padarysiu klaidą ir paleisiu šią makrokomandą, tai sutaupys darbo su klaidomis. Ir aš neturėčiau prieigos prie darbo, kol nepadariau klaidos.

Norėdami susidoroti su tokiomis situacijomis, galite naudoti žemiau esantį kodą, kuris kiekvieną kartą išsaugodamas išsaugo naują darbo kopiją. Be to, prie darbaknygės pavadinimo pridedama data ir laiko žyma. Tai gali padėti jums sekti visas padarytas klaidas, nes niekada neprarasite anksčiau sukurtų atsarginių kopijų.

Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ThisWorkbook.SaveCopyAs Failo pavadinimas: = "C: \ Users \ sumit \ Desktop \ BackupCopy" & Format (Dabar (), "dd-mm-yy-hh-mm-ss -AMPM ") &" .xlsm "Pabaiga

Aukščiau pateiktas kodas sukurtų kopiją kiekvieną kartą paleidus šią makrokomandą ir pridėtų datos/laiko antspaudą prie darbaknygės pavadinimo.

Sukurkite naują darbo knygą kiekvienam darbalapiui

Kai kuriais atvejais galite turėti darbaknygę, kurioje yra keli darbalapiai, ir norite sukurti darbaknygę kiekvienam darbalapiui.

Taip gali būti, kai mėnesio/ketvirčio ataskaitas turite vienoje darbaknygėje ir norite jas padalyti į vieną darbo knygą kiekvienam darbalapiui.

Arba, jei turite skyriaus ataskaitas ir norite jas padalyti į atskiras darbo knygas, kad galėtumėte atsiųsti šias atskiras darbo knygas skyrių vadovams.

Čia yra kodas, kuris sukurs kiekvienos darbalapio darbaknygę, suteiks jai tą patį pavadinimą kaip darbalapis ir išsaugos nurodytame aplanke.

Sub CreateWorkbookforWorksheets () Dim ws kaip darbalapis Dim wb kaip darbaknygė kiekvienam ww šioje šioje darbo knygoje. Darbo lapų rinkinys wb = Workbooks.Add ws.Copy Before: = wb.Sheets (1) Application.DisplayAlerts = False wb.Sheets (2). Application.DisplayAlerts = Tiesa wb.SaveAs "C: \ Users \ sumit \ Desktop \ Test \" & ws.Name & ".xlsx" wb.Uždaryti Kitas ws Pabaiga

Pirmiau pateiktame kode mes naudojome du kintamuosius „ws“ ir „wb“.

Kodas eina per kiekvieną darbalapį (naudojant ciklą „Kiekvienam kitam“) ir sukuria jam darbo knygą. Jis taip pat naudoja darbalapio objekto kopijavimo metodą, kad sukurtų darbalapio kopiją naujoje darbaknygėje.

Atminkite, kad aš naudoju SET sakinį priskirti kintamąjį „wb“ bet kuriai naujai darbo knygai, kurią sukuria kodas.

Šią techniką galite naudoti norėdami priskirti darbaknygės objektą kintamajam. Tai aptariama kitame skyriuje.

Priskirkite darbaknygės objektą kintamajam

VBA galite priskirti objektą kintamajam ir tada naudoti kintamąjį, kad nurodytumėte tą objektą.

Pavyzdžiui, žemiau esančiame kode naudoju VBA, kad pridėčiau naują darbaknygę, o tada priskirtu tą darbaknygę kintamajam wb. Norėdami tai padaryti, turiu naudoti SET sakinį.

Kai priskiriu darbaknygę kintamajam, visos darbaknygės ypatybės taip pat pasiekiamos kintamajam.

Sub AssigntoVariable () Dim wb kaip darbaknygės rinkinys wb = Workbooks.Add wb.SaveAs Failo pavadinimas: = "C: \ Users \ sumit \ Desktop \ Examples.xlsx" Pabaiga

Atminkite, kad pirmasis kodo žingsnis yra deklaruoti „wb“ kaip darbaknygės tipo kintamąjį. Tai sako VBA, kad šis kintamasis gali laikyti darbaknygės objektą.

Kitas teiginys naudoja SET, kad priskirtų kintamąjį naujai pridėtai darbo knygai. Baigę šią užduotį, galime naudoti kintamąjį „wb“, kad išsaugotume darbaknygę (arba darytume bet ką su ja).

Peržiūra per atviras darbo knygas

Mes jau matėme keletą aukščiau esančių kodų pavyzdžių, kuriuose buvo naudojamas ciklas.

Šiame skyriuje paaiškinsiu įvairius būdus, kaip pereiti prie atvirų darbo knygų naudojant VBA.

Tarkime, kad norite išsaugoti ir uždaryti visas atidarytas darbaknyges, išskyrus tą, kurioje yra kodas, tada galite naudoti žemiau esantį kodą:

Sub CloseandSaveWorkbooks () Dim wb kaip darbaknygė kiekvienai wb darbaknygėje, jei wb.Vardas ThisWorkbook.Name Tada wb.Uždaryti SaveChanges: = True End If Next wb End Sub

Aukščiau pateiktas kodas naudoja kiekvieną ciklą, kad būtų galima peržiūrėti kiekvieną darbaknygių kolekcijos darbaknygę. Norėdami tai padaryti, pirmiausia turime paskelbti „wb“ kaip darbaknygės tipo kintamąjį.

Kiekvieno ciklo ciklo metu kiekvienos darbaknygės pavadinimas yra analizuojamas ir, jei jis neatitinka darbaknygės, kurioje yra kodas, pavadinimo, ji uždaroma išsaugojus jos turinį.

Tą patį galima pasiekti ir naudojant kitą kilpą, kaip parodyta žemiau:

Sub CloseWorkbooks () Dim WbCount As Integer WbCount = Darbaknygės. Skaičiuoti i = WbCount iki 1 žingsnio -1, jei darbaknygės (i). Pavadinkite ThisWorkbook.Name Tada darbaknyges (i). Uždaryti SaveChanges: = Tikroji pabaiga, jei kita i pabaiga

Aukščiau pateiktas kodas naudoja ciklą „Kitas“, kad uždarytų visas darbaknyges, išskyrus tą, kurioje yra kodas. Šiuo atveju mums nereikia deklaruoti darbaknygės kintamojo, bet reikia suskaičiuoti bendrą atidarytų darbaknygių skaičių. Kai turime skaičių, kiekvienai darbaknygei peržiūrėti naudojame ciklą „Kitas“. Be to, šiuo atveju mes naudojame indekso numerį, kad nurodytume darbo knygas.

Atminkite, kad aukščiau pateiktame kode mes pereiname nuo „WbCount“ iki 1, atlikdami -1 veiksmą. To reikia, nes su kiekviena kilpa darbo knyga uždaroma, o darbaknygių skaičius sumažėja 1.

Klaida dirbant su darbaknygės objektu (vykdymo laiko klaida „9“)

Viena iš dažniausiai pasitaikančių klaidų, su kuriomis galite susidurti dirbdami su darbaknygėmis, yra - „Vykdymo laiko klaida„ 9 “ - apatinis indeksas nepatenka į diapazoną.

Paprastai VBA klaidos nėra labai informatyvios ir dažnai palieka jums išsiaiškinti, kas nutiko.

Štai keletas galimų priežasčių, galinčių sukelti šią klaidą:

  • Darbaknygės, kurią bandote pasiekti, nėra. Pvz., Jei bandau pasiekti penktąją darbaknygę naudodami darbaknyges (5) ir atidarytos tik 4 darbaknygės, gausiu šią klaidą.
  • Jei naudojate neteisingą pavadinimą, nurodykite darbo knygą. Pavyzdžiui, jei jūsų darbaknygės pavadinimas yra Pavyzdžiai.xlsx ir naudojate Pavyzdį.xlsx. tada jis parodys jums šią klaidą.
  • Jei neišsaugojote darbaknygės ir naudojate plėtinį, gausite šią klaidą. Pvz., Jei jūsų darbaknygės pavadinimas yra „Book1“, o pavadinimą „Book1.xlsx“ naudojate jo neišsaugoję, gausite šią klaidą.
  • Darbo knyga, kurią bandote pasiekti, uždaryta.

Gaukite visų atidarytų darbaknygių sąrašą

Jei norite gauti visų esamoje darbaknygėje (darbaknygėje, kurioje vykdote kodą) atidarytų darbaknygių sąrašą, galite naudoti žemiau esantį kodą:

Sub GetWorkbookNames () Dim wbcount As Integer wbcount = Workbooks.Count ThisWorkbook.Worksheets.Add ActiveSheet.Range ("A1"). Activate For i = 1 To wbcount Range ("A1"). Offset (i - 1, 0). Vertė = Darbaknygės (i). Pavadinimas Kitas i Pabaiga

Aukščiau pateiktas kodas prideda naują darbalapį ir tada išvardija visų atidarytų darbaknygių pavadinimus.

Jei taip pat norite gauti jų failo kelią, galite naudoti žemiau esantį kodą:

Sub GetWorkbookNames () Dim wbcount As Integer wbcount = Workbooks.Count ThisWorkbook.Worksheets.Add ActiveSheet.Range ("A1"). Activate For i = 1 To wbcount Range ("A1"). Offset (i - 1, 0). Vertė = Darbaknygės (i). Kelias & "\" & Darbaknygės (i). Pavadinimas Kitas i Pabaiga

Atidarykite nurodytą darbaknygę dukart spustelėdami langelį

Jei turite „Excel“ darbaknygių failų kelių sąrašą, galite naudoti žemiau esantį kodą, tiesiog dukart spustelėdami langelį su failo keliu ir jis atidarys tą darbaknygę.

Private Sub Workbook_SheetBeforeDoubleClick (ByVal Sh kaip objektas, ByVal Target as Range, Cancel as Boolean) Darbaknygės. Atidaryti Target.Value End Sub

Šis kodas bus patalpintas „ThisWorkbook“ kodo lange.

Padaryti tai:

  • Dukart spustelėkite „ThisWorkbook“ objektą projekto naršyklėje. Atminkite, kad „ThisWorkbook“ objektas turėtų būti darbaknygėje, kurioje norite šios funkcijos.
  • Nukopijuokite ir įklijuokite aukščiau esantį kodą.

Dabar, jei turite tikslų failų, kuriuos norite atidaryti, kelią, galite tai padaryti tiesiog dukart spustelėdami failo kelią ir VBA akimirksniu atidarys tą darbaknygę.

Kur įdėti VBA kodą

Įdomu, kur „Excel“ darbaknygėje patenka VBA kodas?

„Excel“ turi VBA vidinę programą, vadinamą VBA redaktoriumi. Turite nukopijuoti ir įklijuoti kodą į „VB Editor“ modulio kodo langą.

Štai žingsniai, kaip tai padaryti:

  1. Eikite į skirtuką Kūrėjas.
  2. Spustelėkite „Visual Basic“ parinktį. Tai atidarys VB redaktorių užpakalinėje sistemoje.
  3. VB redaktoriaus „Project Explorer“ srityje dešiniuoju pelės mygtuku spustelėkite bet kurį darbaknygės objektą, į kurį norite įterpti kodą. Jei nematote „Project Explorer“, eikite į skirtuką „View“ ir spustelėkite „Project Explorer“.
  4. Eikite į „Įterpti“ ir spustelėkite „Modulis“. Tai įterps jūsų darbo knygos modulio objektą.
  5. Nukopijuokite ir įklijuokite kodą modulio lange.

Jums taip pat gali patikti šios „Excel VBA“ pamokos:

  • Kaip įrašyti makrokomandą „Excel“.
  • Naudotojo nustatytos funkcijos kūrimas „Excel“.
  • Kaip sukurti ir naudoti priedą „Excel“.
  • Kaip atkurti makrokomandas, įdėjus jas į asmeninę makrokomandų darbaknygę.
  • Gaukite failų pavadinimų sąrašą iš „Excel“ aplanko (su VBA ir be jo).
  • Kaip naudotis „Excel VBA InStr“ funkcija (su praktiniais PAVYZDŽIAIS).
  • Kaip rūšiuoti duomenis „Excel“ naudojant VBA (žingsnis po žingsnio vadovas).

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave