Articles

Käyttämällä työkirja objekti Excel VBA (Open, Close, Save, Set)

tässä opetusohjelma, aion kattaa miten työskennellä työkirjojen Excel VBA.

Excelissä ”työkirja” on esine, joka kuuluu ”työkirjat” – kokoelmaan. Työkirjan sisällä sinulla on erilaisia esineitä, kuten laskentataulukoita, kaavioarkkia, soluja ja alueita, kaavioesineitä, muotoja jne.

VBA: lla voit tehdä paljon asioita työkirja – objektilla-kuten avata tietyn työkirjan, tallentaa ja sulkea työkirjoja, luoda uusia työkirjoja, muuttaa työkirjan ominaisuuksia jne.

joten aloitetaan.

kaikki tässä opetusohjelmassa mainitsemani koodit on sijoitettava Visual Basic-muokkaimeen. Mene ’minne laittaa VBA koodi’ osio tietää, miten se toimii.

Jos olet kiinnostunut oppimaan VBA the easy Wayn, tsekkaa minun online Excel VBA-koulutukseni.

Tämä opetusohjelma kattaa:

viittaamalla työkirjaan VBA: lla

on olemassa erilaisia tapoja viitata työkirjan objektiin VBA: ssa. Valitsemasi menetelmä riippuu siitä, mitä haluat tehdä. Tässä osiossa, aion kattaa eri tapoja viitata työkirjan sekä joitakin esimerkkikoodeja.

käyttämällä työkirjan nimiä

Jos sinulla on sen työkirjan tarkka nimi, johon haluat viitata, voit käyttää nimeä koodissa.

aloitetaan yksinkertaisella esimerkillä.

Jos sinulla on kaksi työkirjaa auki, ja haluat aktivoida työkirjan nimiesimerkeillä.xlsx, voit käyttää alla olevaa koodia:

Sub ActivateWorkbook()Workbooks("Examples.xlsx").ActivateEnd Sub

huomaa, että sinun täytyy käyttää tiedostonimeä päätteen kanssa, jos tiedosto on tallennettu. Jos sitä ei ole tallennettu, voit käyttää nimeä ilman tiedostopäätettä.

Jos et ole varma, mitä nimeä haluat käyttää, ota apua Projektinhallintaohjelmasta.

laskentataulukot objekti Excel VBA - tiedoston nimi project explorer

Jos Haluat aktivoida työkirjan ja valita tietyn solun laskentataulukossa kyseisessä työkirjassa, sinun on annettava solun koko osoite (mukaan lukien työkirja ja laskentataulukon nimi).

Sub ActivateWorkbook()Workbooks("Examples.xlsx").Worksheets("Sheet1").ActivateRange("A1").SelectEnd Sub

yllä oleva koodi aktivoi ensin Sheet1: n esimerkeissä.xlsx työkirja ja sitten valitsee solun A1 arkissa.

näet usein koodin, jossa viitataan laskentataulukkoon tai soluun / alueeseen viittaamatta työkirjaan. Tämä tapahtuu, kun viittaat laskentataulukkoon/alueisiin samassa työkirjassa, jossa on koodi ja joka on myös aktiivinen työkirja. Joissakin tapauksissa sinun on kuitenkin määritettävä työkirja varmistaaksesi, että koodi toimii (lisää tästä ThisWorkbook-osiossa).

käyttämällä Indeksinumeroita

voit viitata myös työkirjoihin niiden indeksinumeron perusteella.

esimerkiksi, jos sinulla on kolme työkirjaa auki, seuraavassa koodissa näytetään kolmen työkirjan nimet viestikentässä (yksi kerrallaan).

Sub WorkbookName()MsgBox Workbooks(1).NameMsgBox Workbooks(2).NameMsgBox Workbooks(3).NameEnd Sub

yllä oleva koodi käyttää MsgBox – funktiota, joka näyttää viestikentän, jossa on määritelty teksti / arvo (joka on tässä tapauksessa työkirjan nimi).

yksi niistä ongelmista, joita minulla usein on indeksinumeroiden käyttämisessä työkirjojen kanssa, on se, ettei koskaan tiedä, mikä on ensimmäinen työkirja ja mikä toinen ja niin edelleen. Olla varma, sinun pitäisi ajaa koodi kuten yllä tai jotain vastaavaa silmukan läpi avoimet työkirjat ja tietää niiden Indeksinumero.

Excel käsittelee ensin avattua työkirjaa siten, että indeksiluku on 1, ja seuraavaa 2 ja niin edelleen.

tästä epäkohdasta huolimatta indeksilukujen käyttäminen voi tulla tarpeeseen. Jos haluat esimerkiksi silmukoida kaikki avoimet työkirjat ja tallentaa kaikki, voit käyttää indeksinumeroita. Tässä tapauksessa, koska haluat tämän tapahtuvan kaikille työkirjoille, et ole huolissasi niiden yksittäisistä indeksinumeroista.

alla oleva koodi loopaisi läpi kaikki avoimet työkirjat ja sulkisi kaikki paitsi työkirjan, jossa on tämä VBA-koodi.

Sub CloseWorkbooks()Dim WbCount As IntegerWbCount = Workbooks.CountFor i = WbCount To 1 Step -1If Workbooks(i).Name <> ThisWorkbook.Name ThenWorkbooks(i).CloseEnd IfNext iEnd Sub

yllä oleva koodi laskee avointen työkirjojen määrän ja käy sitten kaikki työkirjat läpi käyttäen jokaista silmukkaa.

se käyttää IF-ehtoa tarkistaakseen, onko työkirjan nimi sama kuin sen työkirjan, jossa koodia ajetaan.

Jos se ei täsmää, se sulkee työkirjan ja siirtyy seuraavaan.

huomaa, että olemme ajaneet silmukan Wbcountista arvoon 1, jonka askel on -1. Tämä tehdään kuten jokaisen silmukan kohdalla, avointen työkirjojen määrä vähenee.

tätä työkirjaa käsitellään yksityiskohtaisesti myöhemmässä osassa.

käyttämällä Activeworkbookia

Activeworkbookia, kuten nimestä voi päätellä, viitataan aktiiviseen työkirjaan.

alla oleva koodi näyttäisi aktiivisen työkirjan nimen.

Sub ActiveWorkbookName()MsgBox ActiveWorkbook.NameEnd Sub

kun käytät VBA: ta aktivoidaksesi toisen työkirjan, sen jälkeen VBA: n ActiveWorkbook-osa alkaa viitata aktivoituun työkirjaan.

tässä on esimerkki tästä.

Jos sinulla on työkirja aktiivisena ja syötät siihen seuraavan koodin ja suoritat sen, se näyttää ensin sen työkirjan nimen, jolla on koodi, ja sitten esimerkkien nimen.xlsx (joka aktivoituu koodilla).

Sub ActiveWorkbookName()MsgBox ActiveWorkbook.NameWorkbooks("Examples.xlsx").ActivateMsgBox ActiveWorkbook.NameEnd Sub

huomaa, että kun luot uuden työkirjan VBA: lla, juuri luodusta työkirjasta tulee automaattisesti aktiivinen työkirja.

käyttämällä tätä työkirjaa

Tämä työkirja viittaa työkirjaan, jossa koodia suoritetaan.

jokaisessa työkirjassa olisi ThisWorkbook-olio osana sitä (näkyvissä Project Explorerissa).

työkirja - objekti VBA-Thisworkbookissa

”ThisWorkbook” voi tallentaa säännöllisiä makroja (samanlaisia kuin lisäosamoduulit) sekä tapahtumakäytäntöjä. Tapahtumamenettely on jotain, joka käynnistetään tapahtuman perusteella – kuten kaksoisnapsauttamalla solua, tallentamalla työkirja tai aktivoimalla laskentataulukko.

kaikki tähän ”Thisworkbookiin” tallentamasi tapahtumatoimenpiteet ovat käytettävissä koko työkirjassa verrattuna arkitason tapahtumiin, jotka on rajattu vain tiettyihin arkkeihin.

esimerkiksi, jos kaksoisnapsautat Project Explorerin ThisWorkbook-objektia ja kopioit siihen alla olevan koodin, se näyttää solun osoitteen aina, kun kaksoisnapsautat jotain koko työkirjan soluista.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)MsgBox Target.AddressEnd Sub

vaikka tämän työkirjan tärkein tehtävä on tallentaa tapahtumatapa, voit käyttää sitä myös viittaamaan työkirjaan, jossa koodia suoritetaan.

alla oleva koodi palauttaisi sen työkirjan nimen, jossa koodia suoritetaan.

Sub ThisWorkbookName()MsgBox ThisWorkbook.NameEnd Sub

tämän työkirjan käytön etu (Activeworkbookin sijaan) on, että se viittaisi kaikissa tapauksissa samaan työkirjaan (siihen, jossa koodi on). Joten jos käytät VBA-koodia lisätäksesi uuden työkirjan, ActiveWorkbook muuttuisi, mutta tämä Workbook viittaisi silti siihen, jolla on koodi.

uuden työkirjan objektin luominen

seuraava koodi luo uuden työkirjan.

Sub CreateNewWorkbook()Workbooks.AddEnd Sub

kun lisätään uusi työkirja, siitä tulee aktiivinen työkirja.

seuraava koodi lisää uuden työkirjan ja näyttää sitten kyseisen työkirjan nimen (joka olisi oletuskirjatyypin book1 nimi).

Sub CreateNewWorkbook()Workbooks.AddMsgBox ActiveWorkbook.NameEnd Sub

avaa työkirja käyttämällä VBA

voit käyttää VBA: ta tietyn työkirjan avaamiseen, kun tiedät työkirjan tiedostopolun.

alla oleva koodi avaa työkirjan – esimerkkejä.xlsx, joka on järjestelmäni Asiakirjakansiossa.

Sub OpenWorkbook()Workbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx")End Sub

Jos tiedosto on olemassa oletuskansiossa, johon VBA tallentaa oletuksena uusia tiedostoja, voit vain määrittää työkirjan nimen – ilman koko polkua.

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

Jos avattavaa työkirjaa ei ole olemassa, näet virheen.

tämän virheen välttämiseksi voit lisätä muutaman rivin koodiisi tarkistaaksesi ensin, onko tiedosto olemassa vai ei, ja jos se on olemassa, yritä avata se.

alla oleva koodi tarkistaa tiedoston sijainnin ja jos sitä ei ole olemassa, se näyttää muokatun viestin (ei virhesanomaa):

Sub OpenWorkbook()If Dir("C:\Users\sumit\Documents\Examples.xlsx") <> "" ThenWorkbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx")ElseMsgBox "The file doesn't exist"End IfEnd Sub

Voit myös valita avattavan tiedoston avoimesta valintaikkunasta.

Sub OpenWorkbook()On Error Resume NextDim FilePath As StringFilePath = Application.GetOpenFilenameWorkbooks.Open (FilePath)End Sub

yllä oleva koodi avaa avoimen valintaikkunan. Kun valitset avattavan tiedoston, se määrittää tiedostopolun FilePath-muuttujalle. Työkirja.Avaa sitten käyttää tiedostopolku avata tiedoston.

Mikäli käyttäjä ei avaa tiedostoa ja napsauttaa Peruuta-painiketta, Filepathista tulee epätosi. Välttääksemme virheen tässä tapauksessa, olemme käyttäneet ’On Error Jatka seuraava’ lauseke.

aiheeseen liittyvää: Opi kaikki virheiden käsittelystä Excel VBA: ssa

työkirjan tallentaminen

aktiivisen työkirjan tallentamiseksi käytä alla olevaa koodia:

Sub SaveWorkbook()ActiveWorkbook.SaveEnd Sub

tämä koodi toimii työkirjoille, jotka on jo tallennettu aiemmin. Myös, koska työkirja sisältää edellä makro, jos sitä ei ole tallennettu.xlsm (oik .xls) tiedosto, menetät makron, kun avaat sen seuraavan.

Jos tallennat työkirjaa ensimmäistä kertaa, se näyttää kehotteen kuten alla:

työkirjan objekti VBA - varoituksessa, kun tallennat työkirjaa ensimmäistä kertaa

kun tallennat työkirjaa ensimmäistä kertaa, on parempi käyttää ”Saveas” – vaihtoehtoa.

alla oleva koodi tallentaisi aktiivisen työkirjan A: ksi .xlsm-tiedosto oletussijainnissa (joka on järjestelmäni asiakirjakansio).

Sub SaveWorkbook()ActiveWorkbook.SaveAs Filename:="Test.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabledEnd Sub

Jos haluat tiedoston tallennettavan tiettyyn paikkaan, sinun on mainittava se tiedostonimen arvossa. Alla oleva koodi tallentaa tiedoston työpöydälleni.

Sub SaveWorkbook()ActiveWorkbook.SaveAs Filename:="C:\Users\sumit\Desktop\Test.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabledEnd Sub

Jos haluat käyttäjän saavan mahdollisuuden valita tiedoston tallennuspaikan, voit käyttää Soita Saveas-valintaikkunaa. Alla oleva koodi näyttää SaveAs-valintaikkunan ja antaa käyttäjän valita sijainnin, johon tiedosto pitäisi tallentaa.

Sub SaveWorkbook()Dim FilePath As StringFilePath = Application.GetSaveAsFilenameActiveWorkbook.SaveAs Filename:=FilePath & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabledEnd Sub

huomaa, että FileFormat:=xlopenxmlworkbookmacroenabledin sijaan voit käyttää myös FileFormat:=52, jossa 52 on koodi xlOpenXMLWorkbookMacroEnabled.

kaikkien avoimien työkirjojen tallentaminen

Jos sinulla on useampi kuin yksi työkirja auki ja haluat tallentaa kaikki työkirjat, voit käyttää alla olevaa koodia:

Sub SaveAllWorkbooks()Dim wb As WorkbookFor Each wb In Workbookswb.SaveNext wbEnd Sub

yllä oleva tallentaa kaikki työkirjat, mukaan lukien ne, joita ei ole koskaan tallennettu. Työkirjat, joita ei ole tallennettu aiemmin, tallennettaisiin oletussijaintiin.

Jos haluat tallentaa vain aiemmin tallennetut työkirjat, voit käyttää alla olevaa koodia:

Sub SaveAllWorkbooks()Dim wb As WorkbookFor Each wb In WorkbooksIf wb.Path <> "" Thenwb.SaveEnd IfNext wbEnd Sub

kaikkien työkirjojen tallentaminen ja sulkeminen

Jos haluat sulkea kaikki työkirjat, paitsi työkirjan, jossa on nykyinen koodi, voit käyttää alla olevaa koodia:

Sub CloseandSaveWorkbooks()Dim wb As WorkbookFor Each wb In WorkbooksIf wb.Name <> ThisWorkbook.Name Thenwb.Close SaveChanges:=TrueEnd IfNext wbEnd Sub

yllä oleva koodi sulkisi kaikki työkirjat (paitsi työkirjan, jossa on koodi – ThisWorkbook). Jos näitä työkirjoja muutetaan, muutokset tallennetaan. Jos on työkirja, jota ei ole koskaan tallennettu, se näyttää Tallenna nimellä-valintaikkunan.

Tallenna kopio työkirjasta (aikaleimalla)

kun työskentelen monimutkaisten tietojen ja kojelaudan kanssa Excel-työkirjoissa, luon usein erilaisia versioita työkirjoistani. Tämä on hyödyllistä, jos jokin menee vikaan nykyisessä työkirjassa. Minulla olisi ainakin kopio siitä tallennettu eri nimellä (ja olisin vain menettää työtä tein jälkeen luoda kopio).

tässä on VBA-koodi, joka luo kopion työkirjastasi ja tallentaa sen määritettyyn paikkaan.

Sub CreateaCopyofWorkbook()ThisWorkbook.SaveCopyAs Filename:="C:\Users\sumit\Desktop\BackupCopy.xlsm"End Sub

yllä oleva koodi tallentaisi kopion työkirjastasi joka kerta, kun käytät tätä makroa.

vaikka tämä toimii hyvin, tuntisin oloni mukavammaksi, jos minulla olisi eri kopioita tallennettuna aina, kun suoritan tätä koodia. Tämä on tärkeää siksi, että jos teen tahattoman virheen ja ajan tämän makron, se pelastaa työn virheineen. Enkä pääsisi töihin ennen kuin tekisin virheen.

tällaisten tilanteiden hoitamiseen voit käyttää alla olevaa koodia, joka tallentaa uuden kopion teoksesta joka kerta, kun tallennat sen. Ja se lisää myös päivämäärän ja aikaleiman osana työkirjan nimeä. Tämä voi auttaa sinua seurata virhe teit, koska et koskaan menetä mitään aiemmin luotu varmuuskopiot.

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

yllä oleva koodi loisi kopion joka kerta, kun käytät tätä makroa, ja lisäisi päiväys / aikaleiman työkirjan nimeen.

Luo uusi työkirja jokaiselle laskentataulukolle

joissakin tapauksissa sinulla voi olla työkirja, jossa on useita laskentataulukoita, ja haluat luoda työkirjan jokaiselle laskentataulukolle.

näin voi olla, kun sinulla on kuukausittain / neljännesvuosittain raportteja yhdessä työkirjassa ja haluat jakaa ne yhteen työkirjaan kutakin laskentataulukkoa varten.

tai, jos sinulla on osaston viisaita raportteja ja haluat jakaa ne yksittäisiin työkirjoihin, jotta voit lähettää nämä yksittäiset työkirjat osastopäälliköille.

tässä on koodi, joka luo työkirjan jokaiselle laskentataulukolle, antaa sille saman nimen kuin laskentataulukolle ja tallentaa sen määritettyyn kansioon.

Sub CreateWorkbookforWorksheets()Dim ws As WorksheetDim wb As WorkbookFor Each ws In ThisWorkbook.WorksheetsSet wb = Workbooks.Addws.Copy Before:=wb.Sheets(1)Application.DisplayAlerts = Falsewb.Sheets(2).DeleteApplication.DisplayAlerts = Truewb.SaveAs "C:\Users\sumit\Desktop\Test\" & ws.Name & ".xlsx"wb.CloseNext wsEnd Sub

edellä mainitussa koodissa on käytetty kahta muuttujaa ” ws ” ja ”wb”.

koodi käy läpi jokaisen laskentataulukon (käyttäen jokaista seuraavaa silmukkaa) ja luo sille työkirjan. Se käyttää myös laskentataulukon objektin kopiomenetelmää luodakseen kopion laskentataulukosta uudessa työkirjassa.

huomaa, että olen määritellyt ” wb ” – muuttujan millä tahansa koodilla luodulla uudella työkirjalla.

voit käyttää tätä tekniikkaa työkirjan objektin määrittämiseen muuttujalle. Tätä käsitellään seuraavassa jaksossa.

Määritä työkirjan objekti muuttujalle

VBA: ssa voit määrittää objektin muuttujalle, ja käyttää sitten muuttujaa viitataksesi kyseiseen objektiin.

esimerkiksi alla olevassa koodissa käytän VBA: ta uuden työkirjan lisäämiseen ja sitten kyseisen työkirjan liittämiseen muuttujaan wb. Voit tehdä tämän, minun täytyy käyttää asettaa lauseke.

kun olen antanut työkirjan muuttujalle, kaikki työkirjan ominaisuudet ovat myös muuttujan käytettävissä.

Sub AssigntoVariable()Dim wb As WorkbookSet wb = Workbooks.Addwb.SaveAs Filename:="C:\Users\sumit\Desktop\Examples.xlsx"End Sub

huomaa, että koodin ensimmäinen vaihe on ilmoittaa ” wb ” työkirjan tyyppimuuttujaksi. Tämä kertoo VBA, että tämä muuttuja voi pitää työkirja objekti.

seuraava lauseke käyttää setiä muuttujan osoittamiseen uudelle työkirjalle, jota lisäämme. Kun tämä tehtävä on tehty, voimme käyttää WB muuttuja tallentaa työkirjan (tai tehdä mitään muuta sen kanssa).

Looping through Open Workbooks

we have already see a few example codes that used looping in the code.

tässä osiossa selitän erilaisia tapoja silmukoida avoimia työkirjoja VBA: n avulla.

Oletetaan, että haluat tallentaa ja sulkea kaikki avoimet työkirjat, paitsi sen, jossa on koodi, niin voit käyttää alla olevaa koodia:

Sub CloseandSaveWorkbooks()Dim wb As WorkbookFor Each wb In WorkbooksIf wb.Name <> ThisWorkbook.Name Thenwb.Close SaveChanges:=TrueEnd IfNext wbEnd Sub

yllä oleva koodi käy jokaisen silmukan avulla jokaisen työkirjan läpi työkirjojen kokoelmassa. Tätä varten meidän on ensin ilmoitettava työkirjan tyyppimuuttujaksi ”wb”.

jokaisessa silmukkasyklissä jokaisen työkirjan nimi analysoidaan, ja jos se ei vastaa sen työkirjan nimeä, jossa koodi on, se suljetaan sen sisällön tallentamisen jälkeen.

sama voidaan saavuttaa myös eri silmukalla kuten alla on esitetty:

Sub CloseWorkbooks()Dim WbCount As IntegerWbCount = Workbooks.CountFor i = WbCount To 1 Step -1If Workbooks(i).Name <> ThisWorkbook.Name ThenWorkbooks(i).Close SaveChanges:=TrueEnd IfNext iEnd Sub

yllä oleva koodi sulkee For Next Loopilla kaikki työkirjat paitsi sen, jossa koodi on. Tällöin meidän ei tarvitse ilmoittaa työkirjamuuttujaa, vaan meidän on laskettava avoimien työkirjojen kokonaismäärä. Kun olemme laskeneet, käytämme seuraavaa silmukkaa jokaisen työkirjan läpikäymiseen. Käytämme myös indeksinumeroa viittaamaan työkirjoihin tässä tapauksessa.

huomaa, että edellä mainitussa koodissa loopataan wbcountista arvoon 1, jossa on vaihe -1. Tämä on tarpeen, kuten jokaisella silmukalla, työkirja sulkeutuu ja työkirjojen määrä vähenee 1: llä.

virhe työskenneltäessä työkirjan objektin kanssa (Ajonaikavirhe ’9’)

yksi yleisimmistä työkirjojen kanssa mahdollisesti kohtaamistasi virheistä on-Ajonaikavirhe ’9’ – alaindeksi alueen ulkopuolella.

Työkirjaobjekti VBA - Runtime Error 9 alaindeksi Out of Range

yleensä VBA-virheet eivät ole kovin informatiivisia ja jättävät usein sinun huoleksesi selvittää, mikä meni vikaan.

Tässä muutamia mahdollisia syitä, jotka voivat johtaa tähän virheeseen:

  • työkirjaa, jota yrität käyttää, ei ole olemassa. Jos esimerkiksi yritän käyttää viidettä työkirjaa työkirjojen(5) avulla, ja vain 4 työkirjaa on auki, saan tämän virheen.
  • jos viittaat työkirjaan väärällä nimellä. Esimerkiksi, jos työkirjasi nimi on esimerkkejä.xlsx ja käytät esimerkkiä.xlsx. sitten se näyttää tämän virheen.
  • Jos et ole tallentanut työkirjaa ja käytät laajennusta, saat tämän virheen. Esimerkiksi, jos työkirjasi nimi on Book1, ja käytät nimeä Book1.xlsx tallentamatta sitä, saat tämän virheen.
  • työkirja, johon yrität päästä, on suljettu.

Hanki lista kaikista avoimista työkirjoista

Jos haluat saada listan kaikista avoimista työkirjoista nykyisessä työkirjassa (työkirja, jossa käytät koodia), voit käyttää alla olevaa koodia:

Sub GetWorkbookNames()Dim wbcount As Integerwbcount = Workbooks.CountThisWorkbook.Worksheets.AddActiveSheet.Range("A1").ActivateFor i = 1 To wbcountRange("A1").Offset(i - 1, 0).Value = Workbooks(i).NameNext iEnd Sub

yllä oleva koodi lisää uuden työkirjan ja luettelee sitten kaikkien avoimien työkirjojen nimet.

Jos haluat saada myös tiedostopolun, voit käyttää alla olevaa koodia:

Sub GetWorkbookNames()Dim wbcount As Integerwbcount = Workbooks.CountThisWorkbook.Worksheets.AddActiveSheet.Range("A1").ActivateFor i = 1 To wbcountRange("A1").Offset(i - 1, 0).Value = Workbooks(i).Path & "\" & Workbooks(i).NameNext iEnd Sub

avaa määritelty työkirja kaksoisnapsauttamalla solua

Jos sinulla on luettelo Excel-työkirjojen tiedostopoluista, voit käyttää alla olevaa koodia kaksoisnapsauttamalla solua tiedostopolulla ja se avaa kyseisen työkirjan.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)Workbooks.Open Target.ValueEnd Sub

tämä koodi sijoitettaisiin Thisworkbookin koodi-ikkunaan.

tehdäksesi tämän:

  • kaksoisnapsauta ThisWorkbook-objektia Project Explorerissa. Huomaa, että ThisWorkbook-objektin pitäisi olla työkirjassa, johon haluat tämän toiminnon.
  • kopioi ja liitä yllä oleva koodi.

nyt, jos sinulla on avattavien tiedostojen tarkka polku, voit tehdä sen yksinkertaisesti kaksoisnapsauttamalla tiedostopolkua ja VBA avaisi kyseisen työkirjan välittömästi.

mihin VBA-koodi

mietit, mihin VBA-koodi menee Excel-työkirjassasi?

Excelissä on VBA-taustajärjestelmä, jota kutsutaan VBA-editoriksi. Sinun täytyy kopioida ja liittää koodi VB Editor moduuli koodi ikkuna.

tässä ovat vaiheet tämän tekemiseen:

  1. Siirry Kehittäjä-välilehteen.työkirjojen käyttäminen Excel VBA - Kehittäjä-välilehdessä nauhassa
  2. klikkaa Visual Basic-vaihtoehtoa. Tämä avaa VB-editorin taustajärjestelmässä.Napsauta Visual Basic
  3. Projektinhallintaruudussa VB-muokkaimessa hiiren kakkospainikkeella mitä tahansa työkirjan objektia, johon haluat lisätä koodin. Jos et näe Project Exploreria, siirry Näytä-välilehteen ja napsauta Project Explorer.
  4. siirry kohtaan Lisää ja klikkaa moduulia. Tämä lisää moduuliobjektin työkirjaasi.käyttäen työkirjoja Excel VBA - lisäämällä moduuli
  5. kopioi ja liitä koodi moduulin ikkunaan.työkirjojen käyttäminen Excel VBA - asetusmoduulissa

voit pitää myös seuraavista Excel VBA-ohjeista:

  • kuinka tallentaa makro Exceliin.
  • luodaan käyttäjän määrittelemä funktio Excelissä.
  • Kuinka luoda ja käyttää lisäosaa Excelissä.
  • kuinka palauttaa makrot sijoittamalla ne henkilökohtaiseen Makrotyökirjaan.
  • Hanki Tiedostojen nimilista Excel-kansiosta (VBA: lla ja ilman).
  • Kuinka käyttää Excel VBA InStr-toimintoa (käytännön esimerkein).
  • tietojen lajittelu Excelissä VBA: n avulla (vaiheittainen opas).