Tapahtuman makro Excel-otsikon vaihtamiseksi - Excel-vinkkejä

Sisällysluettelo

Donna Missourista kysyi:

Onko sinulla aavistustakaan, kuinka saan polun, johon asiakirja arkistoidaan, ilmoitettu otsikossa tai alatunnisteessa - tai missä tahansa asiakirjan kohdassa. Voin saada tiedostonimen sisään & f: llä, mutta en pysty selvittämään, miten polku tehdään.

Ensinnäkin ymmärrän, että Microsoft on lisännyt tämän toiminnon Excel XP: een, ja tarjoan heille kunniaa, koska se on usein kysytty ongelma. Lukijat, jotka ovat jo päivittäneet Office XP: ksi, eivät tarvitse tämän viikon vinkkejä tämän ongelman ratkaisemiseen, mutta niistä on silti hyötyä muiden ongelmien ratkaisemisessa.

Ratkaisu tähän vihjeeseen on erityistyyppi makroa, jota kutsutaan tapahtumankäsittelymakroksi. Aiomme ottaa Excelin hallinnan lyhyesti joka kerta, kun se aikoo tulostaa työkirjan ja lisätä nykyisen polun otsikkoon.

Monet Excel-käyttäjät ovat hämmentäneet yksinkertaisten makrojen tallentamista. Makrot tallennetaan moduuliin 1 tai moduuliin 2, ja niistä tulee osa projektiasi. Tänään aion keskustella tapahtumankäsittelijän makroista. Nämä makrot sijaitsevat erityisessä koodimoduulissa, joka liittyy kuhunkin laskentataulukkoon tai työkirjaan.

Aiemmat vinkit, kuten Enter Excel Time without the Colon -vinkki, ovat käsitelleet Worksheet_Change-tapahtumaa. Tämän päivän vinkki edellyttää, että lisätään koodi työkirjan BeforePrint-tapahtumaan.

Tapahtumaan lisätty koodi suoritetaan aina, kun tapahtuma "käynnistetään". Tässä tapauksessa, milloin tahansa, kun Excel-työkirja tulostetaan, ennen tulostuksen alkamista Excel muuttaa ohjauksen VBA-koodiksi ja sallii kaiken, mitä voit määrittää VBA-koodissa, tapahtua automaattisesti ennen tulostamista.

Oletan, että olet uusi tapahtumankäsittelijän makroissa. Aion käydä läpi tarkalleen kuinka päästä oikeaan paikkaan päästäksesi tähän makroon.

Minulla on työkirja nimeltä Tip055 Sample.xls. Kun työkirja on ladattu Exceliin, aion painaa alt = "" + F11 aloittaaksesi Visual Basic Editorin. Editorin oletusarvoinen ulkoasu on oikea. Vasemmalla näet yleensä Projekti-ruudun pinottu Ominaisuudet-ruudun päälle. Suurin osa näytön oikeasta reunasta sisältää koodiruudun. Jos työkirjassasi ei ole makroja, koodiruutu on harmaa, kuten oikealla näkyy.

Olen lisännyt kuvaan sinisiä kursivoituja komentosanoja kolmen ruudun tunnistamiseksi - et näe näitä esimerkissäsi.

On tärkeää, että pystyt näkemään Projektiruudun VB-editorissa. Jos näkymä VB-editorista ei sisällä projektiruutua, avaa projektiruutu painamalla Ctrl + R. Tai napsauta alla olevaa työkalupalkin kuvaketta:

Projektiruudussa näkyy projekti jokaiselle avoimelle Excel-työkirjalle ja jokaiselle asennetulle apuohjelmalle. Napsauta työkirjan nimen vieressä olevaa harmaata plusmerkkiä laajentaaksesi työkirjan projektia. Napsauta sitten Microsoft Excel Objects -kansion vieressä olevaa harmaata plusmerkkiä laajentaaksesi objektikansiota. Sinun pitäisi nyt nähdä yksi merkintä jokaiselle laskentataulukolle ja yksi merkintä nimeltä ThisWorkbook.

Napsauta hiiren kakkospainikkeella ThisWorkbook-merkintää ja valitse Näytä koodi ponnahdusvalikosta.

Sinulla on nyt todennäköisesti suuri tyhjä valkoinen koodiruutu, joka vie näytön oikean puolen. Koodiruudun yläosassa on kaksi avattavaa valikkoa, joissa lukee (General) ja (Declarations).

  • Valitse vasemmasta avattavasta valikosta Työkirja.
  • Oikea pudotusvalikko on nyt täynnä kaikkia työkirjaan liittyviä ohjelmoitavia tapahtumia. Täällä on tapahtumia, jotka suorittavat koodin milloin tahansa, kun työkirja avataan, aktivoidaan, deaktivoidaan jne. Tänään haluamme kirjoittaa koodin BeforePrint-tapahtumaan, joten valitse BeforePrint oikealta pudotusvalikosta.

Huomaa, että aina kun valitset jotain oikealta avattavasta valikosta, VBA-editori kirjoittaa koodin alku- ja loppurivin koodimoduuliin puolestasi. Ensimmäisen kerran, kun vaihdat vasemmanpuoleisen avattavan valikon työkirjaan, olet todennäköisesti saanut alikirjan Workbook_Open-aliohjelmasta. Jos et aio kirjoittaa Workbook_Open-menettelyä, sinun kannattaa poistaa tämä tyhjä menettely.

Nyt, kirjoittamalla VBA-koodi. Voit käyttää pari hyödyllistä muuttujaa.

  • ActiveWorkbook.Path palauttaa työkirjan polun. Se voi näyttää "C: My Documents MrExcel".
  • ActiveWorkbook.FullName palauttaa työkirjan polun ja tiedostonimen. Se voi näyttää "C: My Documents MrExcel Tip055 Sample.xls".

Voit määrittää tämän muuttujan yhdeksi seuraavista 6 sijainnista:

Worksheets("Sheet1").PageSetup.LeftHeader = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.CenterHeader = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.RightHeader = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.LeftFooter = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.CenterFooter = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.RightFooter = ActiveWorkbook.FullName

Tässä on kolme mahdollista näytemakroa.

Tämän makron polku ja tiedostonimi lisätään aktiivisen laskentataulukon oikeaan alatunnisteeseen:

Private Sub Workbook_BeforePrint(Cancel As Boolean) ActiveSheet.PageSetup.RightFooter = ActiveWorkbook.FullName End Sub

Tämän makron polku lisätään Taulukko1: n vasempaan otsikkoon ja Taulukko2: n keskimmäiseen alatunnisteeseen:

Private Sub Workbook_BeforePrint(Cancel As Boolean) Worksheets("Sheet1").PageSetup.LeftHeader = ActiveWorkbook.Path Worksheets("Sheet2").PageSetup.CenterFooter = ActiveWorkbook.Path End Sub

Jos käytät yleensä "Koko työkirja" -vaihtoehtoa tulostettaessa, tämä versio lisää koko nimen keskimmäiseksi alatunnisteeksi kaikille arkeille:

Private Sub Workbook_BeforePrint(Cancel As Boolean) For Each Sh In ActiveWorkbook.Worksheets Sh.PageSetup.CenterFooter = ActiveWorkbook.FullName Next Sh End Sub

Seuraa yhtä näistä esimerkeistä tai luo oma. Kun olet valmis, sulje VBA-editori valitsemalla Tiedosto> Sulje ja palaa Microsoft Exceliin.

Aina kun tulostat laskentataulukon, koodi suoritetaan ja lisätään nykyinen polku VBA-koodissa ilmoittamaasi oikeaan otsikkoon tai alatunnisteeseen.

Joitakin huomautuksia ja varoituksia:

  • Aloittelevien Excel-käyttäjien on vähän aavistustakaan siitä, että tämä koodi on työkirjassa. Kun he avaavat työkirjan, he voivat saada tietoturvavaroituksen, että tiedosto sisältää makroja, mutta varoitusta ei tule, kun VBA-koodi lyö mitä heillä on keskimmäisenä alatunnisteena ja laittaa polun nimen sinne. Tämä voi johtaa närästykseen. Kuvittele, että viiden vuoden kuluttua joku käyttää työkirjaasi ja uusi päällikkö haluaa tiedostonimen siirtyvän keskimmäisestä alatunnisteesta oikeaan alatunnisteeseen. Tämä henkilö saattaa osata muuttaa asetuksia manuaalisesti Tiedosto> Sivun asetukset -kohdassa, mutta jos hän ei tiedä, että koodi on siellä, se ajaa heitä harhaan, kun koodi muuttaa jatkuvasti alatunnistettaan.

    On todella epätodennäköistä, että he löytävät koodimoduulisi, mutta siinä tapauksessa, että he löytävät, voit jättää koodimoduuliin kommentin, joka ohjaa heidät takaisin tälle verkkosivustolle selitystä varten.

    Haluat ehkä myös lisätä kommentin soluun A1 muistuttamalla itseäsi siitä, että tulostuskenttien vaihtamiseen on asetettu tapahtumankäsittelijä.

  • VBA: ssa on asetus, joka estää tapahtumia suorittamasta. Jos makro lakkaa yhtäkkiä toimimasta, t on yleistä havaita, että jokin VBA: n sisällä on muuttanut tätä asetusta estääkseen tapahtumia. Yleinen skenaario on, että ohjelmoija käynnistää makron seuraavilla tavoilla:

    Application.EnableEvents = False '… macro here… Application.EnableEvents = True

    Kun makrossa tapahtuu virhe, tapahtumia ei koskaan käynnistetä uudelleen. Kun näin tapahtuu, varoituksia on vähän. Jos epäilet, että tapahtumakäsittelijöitäsi ei suoriteta, siirry Visual Basic -editoriin. Tuo välitön ruutu esiin painamalla Ctrl + g. Kirjoita välittömään ruutuun:

    Print Application.EnableEvents

    ja paina Enter. Jos huomaat, että tämän asetuksena on False, kirjoita seuraava rivi välittömään ruutuun:

    Application.EnableEvents = True

    ja paina Enter.

Kiitos Donnalle mahtavasta kysymyksestä. Vastauksen selittämisen yhteydessä se oli loistava tilaisuus laajentaa Tapahtumankäsittelijöiden käsitettä VBA: ssa.

Mielenkiintoisia artikkeleita...