Renginio makrokomanda norint pakeisti „Excel“ antraštę - „Excel“ patarimai

Turinys

Donna iš Misūrio paklausė:

Ar turite idėjų, kaip galėčiau gauti kelią, kur dokumentas paduodamas, nurodytą antraštėje ar poraštėje, ar bet kur dokumente. Failo pavadinimą galiu gauti naudodamas & f, bet negaliu suprasti, kaip padaryti kelią.

Visų pirma, aš suprantu, kad „Microsoft“ pridėjo šią funkciją prie „Excel XP“ ir aš jiems siūlau pagarbą, nes tai yra dažnai užduodama problema. Visiems skaitytojams, kurie jau atnaujino „Office XP“, šios savaitės patarime nereikės šios problemos sprendimo būdų, tačiau jie vis tiek bus naudingi sprendžiant kitas problemas.

Šio patarimo sprendimas yra specialus makrokomandos tipas, vadinamas įvykių tvarkymo makrokomanda. Kiekvieną kartą, kai ketinama atsispausdinti mūsų darbaknygę ir prie antraštės pridėti esamą kelią, ketiname trumpai perimti „Excel“ valdymą.

Daugelis „Excel“ vartotojų atsisakė įrašyti paprastas makrokomandas. Makrokomandos saugomos modulyje, vadinamame „Module1“ arba „Module2“, ir tampa jūsų projekto dalimi. Šiandien ketinu aptarti įvykių tvarkytojų makrokomandas. Šios makrokomandos yra specialiame kodo modulyje, susietame su kiekvienu darbalapiu ar darbaknyge.

Ankstesni patarimai, tokie kaip „Enter Excel Time Without Colon“ patarimas, buvo susiję su įvykiu „Worksheet_Change“. Šios dienos patarimas reikalauja, kad pridėtume tam tikrą kodą prie „Workbook“ „BeforePrint“ įvykio.

Prie įvykio pridėtas kodas bus paleistas kiekvieną kartą, kai tas įvykis bus „paleistas“. Tokiu atveju bet kada, kai bus spausdinama „Excel“ darbaknygė, prieš pradedant spausdinti, „Excel“ valdymą perkelia į VBA kodą ir leidžia viskam, ką galite nurodyti VBA kode, automatiškai įvykti prieš spausdinant.

Aš manysiu, kad jūs esate naujas renginių tvarkymo makrokomandas. Aš eisiu tiksliai, kaip patekti į reikiamą vietą, kad galėčiau patekti į šią makrokomandą.

Turiu darbaknygę pavadinimu „Tip055 Sample.xls“. Kai darbaknygė bus įkelta „Excel“, paspausiu alt = "" + F11, kad galėčiau pradėti vizualinį pagrindinį redaktorių. Numatytoji redaktoriaus išvaizda yra tokia, kaip parodyta dešinėje. Kairėje jūs paprastai matote projekto sritį, sukrautą ant ypatybių srities. Dešinėje dešinėje ekrano pusėje yra kodų sritis. Jei darbaknygėje nėra makrokomandų, kodo sritis bus pilka, kaip parodyta dešinėje.

Pridėjau mėlynus kursyvo scenarijaus žodžius prie atvaizdo, kad identifikuočiau tris langus - jų nematysite savo pavyzdyje.

Svarbu, kad VB redaktoriuje galėtumėte pamatyti projekto sritį. Jei VB redaktoriaus rodinyje nėra projekto srities, tada paspauskite „Ctrl“ + R, kad peržiūrėtumėte projekto sritį. Arba spustelėkite toliau pateiktą įrankių juostos piktogramą:

Projekto srityje bus rodomas kiekvienos atidarytos „Excel“ darbaknygės ir kiekvieno įdiegto priedo projektas. Spustelėkite pilką pliusą šalia darbaknygės pavadinimo, kad išplėstumėte savo darbaknygės projektą. Tada spustelėkite pilką pliusą šalia aplanko „Microsoft Excel Objects“, kad išplėstumėte objektų aplanką. Dabar turėtumėte pamatyti po vieną įrašą kiekvienam darbalapiui ir vieną įrašą pavadinimu „ThisWorkbook“.

Dešiniuoju pelės mygtuku spustelėkite „ThisWorkbook“ įrašą ir iššokančiajame meniu pasirinkite Peržiūrėti kodą.

Dabar tikriausiai turėsite didelę tuščią baltą kodo sritį, užimančią dešinę ekrano pusę. Kodo srities viršuje yra du išskleidžiamieji meniu, kuriuose bus parašyta (Bendra) ir (Deklaracijos).

  • Kairiajame išskleidžiamajame meniu pasirinkite Darbaknygė.
  • Dešiniajame išskleidžiamajame meniu yra visi programuojami įvykiai, susieti su darbaknyge. Čia yra įvykių, kurie vykdys kodą bet kuriuo metu, kai atidaroma, įjungiama, išjungiama ir tt darbaknygė. Šiandien mes norime įrašyti kodą į „BeforePrint“ įvykį, todėl dešinėje išskleidžiamajame meniu pasirinkite „BeforePrint“.

Atkreipkite dėmesį, kad kiekvieną kartą, kai pasirenkate ką nors iš dešiniojo išskleidžiamojo meniu, VBA redaktorius užrašo jums kodo pradžią ir pabaigą į kodo modulį. Pirmą kartą pakeisdami kairįjį išskleidžiamąjį meniu į „Workbook“, pagal numatytuosius nustatymus tikriausiai gavote „Workbook_Open“ paprogramės užuomazgas. Jei neketinate rašyti „Workbook_Open“ procedūros, turėtumėte apsvarstyti galimybę ištrinti šią tuščią procedūrą.

Dabar rašykite VBA kodą. Yra keli naudingi kintamieji, kuriuos galite naudoti.

  • „ActiveWorkbook.Path“ grąžins darbaknygės kelią. Tai gali atrodyti „C: My Documents MrExcel“.
  • „ActiveWorkbook.FullName“ grąžins darbaknygės kelią ir failo pavadinimą. Tai gali atrodyti „C: My Documents MrExcel Tip055 Sample.xls“.

Šį kintamąjį galite priskirti vienai iš šių 6 pozicijų:

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

Čia yra trys galimi pavyzdiniai makrokomandos.

Šioje makrokomandoje kelias ir failo vardas bus pridėti kaip dešinioji aktyvaus darbalapio poraštė:

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

Šios makrokomandos kelias bus pridėtas kaip kairysis „Sheet1“ antraštė ir kaip centrinė „Sheet2“ antraštė:

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

Jei spausdindami naudojate parinktį „Visa darbaknygė“, ši versija prie visų lapų pridės visą vardą kaip centrinę poraštę:

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

Sekite vieną iš šių pavyzdžių arba sukurkite savo. Baigę uždarykite VBA redaktorių naudodami Failas> Uždaryti ir grįžkite į „Microsoft Excel“.

Kaskart, kai atspausdinsite darbalapį, kodas bus paleistas ir įterps dabartinį kelią į atitinkamą antraštę arba poraštę, kurią nurodėte VBA kode.

Keletas pastabų ir įspėjimų:

  • Naujieji „Excel“ vartotojai nelabai įsivaizduos, kad šis kodas yra darbaknygėje. Atidarę darbaknygę, jie gali gauti saugos įspėjimą, kad faile yra makrokomandų, tačiau įspėjimo nebus, kai VBA kodas sugadins viską, ką turėjo kaip centrinę poraštę, ir ten įdės kelio pavadinimą. Tai gali sukelti rėmuo. Įsivaizduokite, kad po 5 metų kažkas naudoja jūsų darbaknygę, o naujasis vadybininkas nori, kad failo vardas būtų perkeltas iš centrinės poraštės į dešinę. Šis asmuo gali žinoti, kad rankiniu būdu reikia pakeisti nustatymus Failas> Puslapio nustatymas, tačiau jei jis nežino, kad kodas yra, tai paskatins juos piktintis, nes kodas nuolat keičia poraštes atgal.

    Tikrai mažai tikėtina, kad jie galės rasti jūsų kodo modulį, tačiau tik tuo atveju, jei jie tai padarys, galbūt norėsite palikti komentarą kodo modulyje, kuris nukreiptų juos atgal į šią svetainę paaiškinti.

    Taip pat galbūt norėsite pridėti komentarą prie langelio A1, primindami sau, kad yra įvykių tvarkytuvas, nustatytas spausdinimo antraštėms pakeisti.

  • VBA nustatymas neleidžia įvykiams vykdyti. Jei jūsų makrokomanda staiga nustoja veikti, dažnai pastebima, kad kažkas VBA viduje pakeitė šį nustatymą, kad įvykiai nebūtų vykdomi. Įprastas scenarijus yra tas, kad programuotojas paleidžia makrokomandą:

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

    Kai makrokomandoje įvyksta klaida, įvykiai niekada neįsijungia. Kai tai atsitiks, mažai įspėjama. Jei įtariate, kad jūsų įvykių tvarkytojai nevykdomi, eikite į „Visual Basic“ redaktorių. Paspauskite „Ctrl“ + g, kad būtų parodyta tiesioginė sritis. Tiesioginiame skydelyje įveskite:

    Print Application.EnableEvents

    ir paspauskite Enter. Jei pastebėsite, kad tai nustatyta kaip „Netiesa“, tada tiesioginėje srityje įveskite šią eilutę:

    Application.EnableEvents = True

    ir paspauskite Enter.

Ačiū Donnai už puikų klausimą. Aiškinantis atsakymą, tai buvo puiki proga išplėsti VBA renginių tvarkytojų koncepciją.

Įdomios straipsniai...