Sündmuse makro Exceli päise muutmiseks - Exceli näpunäited

Lang L: none (table-of-contents)

Donna Missourist küsis:

Kas teil on aimugi, kuidas saan päise või jalusena märgitud tee, kus dokument esitatakse, või kusagil dokumendis. Saan faili nime & f-iga sisse, kuid ma ei saa aru, kuidas seda teed teha.

Esiteks saan aru, et Microsoft on selle funktsionaalsuse Excel XP-sse lisanud ja pakun neile kiitust, kuna see on sageli küsitav probleem. Lugejad, kes on juba Office XP-le üle läinud, ei vaja selle nädala lahendamiseks selle nädala näpunäidetes olevaid tehnikaid, kuid on siiski kasulikud muude probleemide lahendamiseks.

Selle näpunäite lahendus on spetsiaalne makrotüüp, mida nimetatakse sündmuste käitleja makroks. Võtame Exceli lühidalt kontrolli alla iga kord, kui see hakkab meie töövihikut printima ja praeguse tee päisesse lisama.

Paljud Exceli kasutajad on lihtsate makrosid salvestanud. Makrod salvestatakse moodulisse nimega moodul1 või moodul2 ja need saavad teie projekti osaks. Täna arutlen sündmuste käitleja makrode üle. Need makrod asuvad spetsiaalses koodimoodulis, mis on seotud iga töölehe või töövihikuga.

Varasemad näpunäited, nagu Enter Exceli aeg ilma koolonita, on käsitlenud sündmust Worksheet_Change. Tänane näpunäide nõuab, et lisaksime töövihiku sündmusele BeforePrint koodi.

Sündmusele lisatud koodi käitatakse alati, kui see sündmus "vallandatakse". Sel juhul lülitab Excel enne printimise alustamist igal ajal enne printimise algust juhtimise üle VBA-koodile ja lubab kõigil, mida saate VBA-koodis määrata, enne printimist toimuda.

Eeldan, et olete sündmuste käitleja makrodes uus. Lähen täpselt läbi, kuidas sellesse makrosse sisenemiseks õigesse kohta jõuda.

Mul on töövihik nimega 'Tip055 Sample.xls'. Kui Excelisse laaditud töövihik on visuaalse põhiredaktori käivitamiseks vajutanud alt = "" + F11. Redaktori vaikevaade on paremal näidatud. Vasakul näete tavaliselt projekti paani, mis on virnastatud atribuutide paani kohale. Enamik ekraani paremast küljest sisaldab koodipaani. Kui teie töövihikus pole makrosid, on teie koodipaan hall, nagu paremal näidatud.

Kolme paani tuvastamiseks olen lisanud pildile sinise kursiiviga skriptsõnad - te ei näe neid oma näites.

On oluline, et teil oleks võimalik projekti paani näha VB redaktoris. Kui teie vaade VB-redaktorisse ei sisalda projekti paani, siis vajutage projekti paani kuvamiseks klahvikombinatsiooni Ctrl + R. Või klõpsake allpool näidatud tööriistariba ikooni:

Projektipaanil kuvatakse iga avatud Exceli töövihiku ja kõigi installitud lisandmoodulite projekt. Töövihiku projekti laiendamiseks klõpsake töövihiku nime kõrval oleval hallil plussil. Seejärel klõpsake objekti kausta laiendamiseks kausta Microsoft Excel Objects kõrval olevat halli plussil. Nüüd peaksite nägema iga töölehe kohta ühte kirjet ja üht kannet nimega ThisWorkbook.

Paremklõpsake ThisWorkbooki kirjel ja valige hüpikmenüüst Kuva kood.

Tõenäoliselt on teil nüüd suur tühi valge koodipaan, mis asub ekraani paremas servas. Koodipaani ülaosas on kaks rippmenüüd, mis ütlevad (Üldine) ja (Deklaratsioonid).

  • Valige vasakpoolsest rippmenüüst Töövihik.
  • Parempoolne rippmenüü täidetakse nüüd kõigi töövihikuga seotud programmeeritavate sündmustega. Siin on sündmusi, mis käivitavad koodi igal ajal, kui töövihik avatakse, aktiveeritakse, deaktiveeritakse jne. Täna tahame koodi kirjutada sündmusesse BeforePrint, seega valige paremast rippmenüüst BeforePrint.

Pange tähele, et iga kord, kui valite parempoolsest rippmenüüst midagi, kirjutab VBA-redaktor teie jaoks koodimoodulisse koodi alguse ja lõpu rea. Esimest korda, kui muudate vasakpoolse rippmenüü Töövihikuks, sai tõenäoliselt vaikimisi alamprogrammi Workbook_Open algus. Kui te ei kavatse kirjutada protseduuri Workbook_Open, peaksite kaaluma selle tühja protseduuri kustutamist.

Nüüd VBA koodi kirjutamisest. Seal on paar kasulikku muutujat, mida saate kasutada.

  • ActiveWorkbook.Path tagastab töövihiku tee. See võib välja näha nagu "C: My Documents MrExcel".
  • ActiveWorkbook.FullName tagastab töövihiku tee ja failinime. See võib välja näha nagu "C: My Documents MrExcel Tip055 Sample.xls".

Selle muutuja saate määrata üheks järgmisest 6 positsioonist:

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

Siin on kolm võimalikku näidismakrot.

Selle makro juurde lisatakse tee ja failinimi aktiivse töölehe paremaks jaluseks:

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

Sellele makrole lisatakse tee lehe1 vasaku päisena ja lehe2 keskmise jalusena:

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

Kui kipute printimisel kasutama suvandit "Kogu töövihik", lisab see versioon kõigile lehtedele keskmise jalusena täisnime:

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

Järgige ühte neist näidetest või looge oma. Kui olete lõpetanud, sulgege VBA-redaktor menüükäsuga Fail> Sule ja naaske Microsoft Exceli juurde.

Töölehe printimisel käivitatakse kood alati ja sisestatakse praegune tee vastavasse päisesse või jalusesse, mille olete VBA-koodis märkinud.

Mõned märkused ja hoiatused:

  • Algajatele Exceli kasutajatele jääb vähe aimugi, et see kood on töövihikus. Töövihiku avamisel võivad nad saada turvahoiatuse, et fail sisaldab makrosid, kuid hoiatust ei toimu, kui VBA-kood lööb kõik, mis neil keskjalusena on, ja paneb sinna teeraja. See võib põhjustada kõrvetisi. Kujutage ette, et 5 aasta pärast kasutab keegi teie töövihikut ja uus haldur soovib, et failinimi liiguks kesksest jalusest paremasse jalusse. See inimene võib osata sätteid käsitsi muuta menüüs Fail> Lehekülje seadistamine, kuid kui ta ei tea, et kood on olemas, ajab see teda pahaks, kuna kood muudab jaluseid pidevalt tagasi.

    On väga ebatõenäoline, et nad leiavad teie koodimooduli, kuid igaks juhuks võiksite jätta koodimoodulisse kommentaari, mis suunab nad seletamiseks tagasi sellele veebisaidile.

    Samuti võite lisada lahtrisse A1 kommentaari, tuletades endale meelde, et prindipäiste vahetamiseks on seadistatud sündmuste käitleja.

  • VBA-s on seade, mis takistab sündmuste käitamist. Kui teie makro järsku lakkab töötamast, on t tavaline, et mõni VBA-s olev seade on selle sätte sündmuste käitamise takistamiseks muutnud. Levinud stsenaarium on see, et programmeerija käivitab makro järgmisega:

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

    Kui makros ilmneb tõrge, ei lülitata sündmusi enam kunagi uuesti sisse. Kui see juhtub, on vähe hoiatusi. Kui kahtlustate, et teie sündmuste käitlejaid ei käivitata, minge visuaalse põhiredaktori juurde. Kohese paani kuvamiseks vajutage klahvikombinatsiooni Ctrl + g. Tippige vahetule paanile:

    Print Application.EnableEvents

    ja vajuta Enter. Kui leiate, et selle väärtuseks on seatud Väär, sisestage otsepaanile järgmine rida:

    Application.EnableEvents = True

    ja vajuta Enter.

Täname Donnat toreda küsimuse eest. Vastuse selgitamise käigus oli see suurepärane võimalus laiendada VBA-s toimuvate sündmuste käitlejate kontseptsiooni.

Huvitavad Artiklid...