Makro dogodka za spremembo glave Excel - Nasveti za Excel

Kazalo

Donna iz Missourija je vprašala:

Ali veste, kako lahko dobim pot, kamor je dokument vložen, navedeno v glavi ali nogi - ali kjer koli v dokumentu. Ime datoteke lahko dobim v & f, vendar ne morem ugotoviti, kako narediti pot.

Najprej razumem, da je Microsoft to funkcijo dodal v Excel XP, in jim ponujam pohvale, saj gre za pogosto zastavljen problem. Bralci, ki so že nadgradili na Office XP, za reševanje te težave ne bodo potrebovali tehnik iz nasveta tega tedna, vendar bodo vseeno koristni za reševanje drugih težav.

Rešitev tega nasveta je posebna vrsta makra, imenovana makro za obdelavo dogodkov. Na kratko bomo prevzeli nadzor nad Excelom vsakič, ko bo kmalu natisnil naš delovni zvezek in v glavo dodali trenutno pot.

Številni uporabniki Excela so se ukvarjali s snemanjem preprostih makrov. Makri so shranjeni v modulu, imenovanem Module1 ali Module2, in postanejo del vašega projekta. Danes bom razpravljal o makroh za obdelavo dogodkov. Ti makri se nahajajo v posebnem modulu kode, ki je povezan z vsakim delovnim listom ali delovnim zvezkom.

Prejšnji nasveti, kot je namig Enter Excel Time Without Colon, so obravnavali dogodek Worksheet_Change. Današnji namig zahteva, da v dogodek BeforePrint v delovnem zvezku dodamo nekaj kode.

Koda, dodana dogodku, se bo izvajala vsakič, ko bo dogodek "sprožen". V tem primeru Excel kadar koli, ko se natisne Excelov delovni zvezek, pred začetkom tiskanja spremeni nadzor na kodo VBA in omogoči, da se vse, kar lahko določite v kodi VBA, samodejno zgodi pred tiskanjem.

Predvidevam, da ste novi v makroh za obdelavo dogodkov. Sprehodil se bom natančno, kako priti na pravo mesto, da vstopim v ta makro.

Imam delovni zvezek z imenom 'Tip055 Sample.xls'. Ko je delovni zvezek naložen v Excelu, bom pritisnil alt = "" + F11, da začnem z urejevalnikom visual basic. Privzeti videz urejevalnika je prikazan na desni. Na levi strani običajno vidite podokno Project, ki je zloženo na vrh podokna Properties. Večina desne strani zaslona vključuje podokno s kodami. Če v delovnem zvezku nimate makrov, bo podokno s kodo sivo, kot je prikazano na desni.

Sliki sem dodal modre ležeče pisave, da prepoznam tri podokna - v vašem primeru jih ne boste videli.

Pomembno je, da si lahko v urejevalniku VB ogledate podokno projekta. Če vaš pogled urejevalnika VB ne vključuje podokna projekta, pritisnite Ctrl + R, da si ogledate podokno projekta. Ali pa kliknite spodnjo ikono orodne vrstice:

V podoknu projekta bo prikazan projekt za vsak odprti Excelov delovni zvezek in vsak nameščen dodatek. Kliknite sivi znak poleg imena delovnega zvezka, da razširite projekt za svoj delovni zvezek. Nato kliknite siv znak poleg mape Microsoft Excel Objects, da razširite mapo predmetov. Zdaj bi morali videti en vnos za vsak delovni list in en vnos, imenovan ThisWorkbook.

Z desno miškino tipko kliknite vnos za ThisWorkbook in v pojavnem meniju izberite View Code.

Zdaj boste verjetno imeli veliko prazno belo podokno s kodo, ki zajema desno stran zaslona. Na vrhu podokna s kodo sta dva spustna menija, ki se glasi (Splošno) in (Izjave).

  • V levem spustnem meniju izberite Delovni zvezek.
  • Desni spustni meni je zdaj zapolnjen z vsemi programabilnimi dogodki, povezanimi z delovnim zvezkom. Tu so dogodki, ki bodo zagnali kodo vsakič, ko se delovni zvezek odpre, aktivira, deaktivira itd. Danes želimo vpisati kodo v dogodek BeforePrint, zato v desnem spustnem meniju izberite BeforePrint.

Upoštevajte, da vsakič, ko izberete nekaj iz desnega spustnega menija, urejevalnik VBA zapiše začetno in končno vrstico kode v kodni modul namesto vas. Ko ste prvič spremenili levi spustni meni v Delovni zvezek, ste verjetno privzeto prejeli začetke podprograma Delovni zvezek_Open. Če ne nameravate pisati postopka Workbook_Open, razmislite o brisanju tega praznega postopka.

Zdaj pa k pisanju kode VBA. Obstaja nekaj uporabnih spremenljivk, ki jih lahko uporabite.

  • ActiveWorkbook.Path vrne pot delovnega zvezka. Lahko je videti kot "C: Moji dokumenti MrExcel".
  • ActiveWorkbook.FullName bo vrnil pot in ime datoteke delovnega zvezka. Izgleda lahko "C: My Documents MrExcel Tip055 Sample.xls".

To spremenljivko lahko dodelite enemu od naslednjih 6 položajev:

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

Tu so trije možni vzorčni makri.

Ta makro bosta dodala pot in ime datoteke kot desno nogo aktivnega delovnega lista:

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

Ta makro bo imel pot dodano kot leva glava Sheet1 in kot sredinska noga Sheet2:

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

Če pri tiskanju običajno uporabljate možnost »Celoten delovni zvezek«, bo ta različica dodala polno ime kot osrednjo nogo na vse liste:

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

Sledite enemu od teh primerov ali ustvarite svojega. Ko končate, zaprite urejevalnik VBA z Datoteka> Zapri in se vrnite v Microsoft Excel.

Kadar koli natisnete delovni list, se koda zažene in vstavi trenutno pot v ustrezno glavo ali nogo, ki ste jo navedli v kodi VBA.

Nekaj ​​opomb in opozoril:

  • Začetni uporabniki Excela ne bodo niti slutili, da je ta koda v delovnem zvezku. Ko odprejo delovni zvezek, lahko dobijo varnostno opozorilo, da datoteka vsebuje makre, vendar opozorila ne bo, ko bo koda VBA udarila tisto, kar so imeli kot osrednjo nogo, in tam postavila ime poti. To lahko privede do zgage. Predstavljajte si, da čez pet let nekdo uporablja vaš delovni zvezek in novi upravitelj želi, da se ime datoteke premakne iz osrednje noge v desno nogo. Ta oseba bo morda lahko ročno spremenila nastavitve v meniju File> PageSetup, vendar če ne ve, da je koda tam, jo ​​bo odnesla, saj bo koda nenehno spreminjala noge.

    Res je malo verjetno, da bodo lahko našli vaš kodni modul, toda v primeru, da ga najdete, boste morda želeli v modulu kode pustiti komentar, ki jih bo usmeril nazaj na to spletno mesto za razlago.

    V celico A1 boste morda želeli dodati tudi komentar, ki vas bo opomnil, da je za spreminjanje glav tiskanja nastavljen upravljalnik dogodkov.

  • V VBA je nastavitev, ki preprečuje izvajanje dogodkov. Če makro nenadoma preneha delovati, je običajno ugotoviti, da je nekaj v VBA obrnilo to nastavitev, da prepreči izvajanje dogodkov. Pogost scenarij je, da programer zažene makro z:

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

    Ko pride do napake v makru, se dogodki nikoli več ne vklopijo. Ko se to zgodi, je malo opozoril. Če sumite, da se vaši izvršitelji dogodkov ne izvajajo, pojdite v urejevalnik visual basic. Pritisnite Ctrl + g, da odprete takojšnje podokno. V neposredno podokno vnesite:

    Print Application.EnableEvents

    in pritisnite Enter. Če ugotovite, da je to nastavljeno na False, vnesite naslednjo vrstico v neposredno podokno:

    Application.EnableEvents = True

    in pritisnite Enter.

Hvala Donni za odlično vprašanje. V postopku razlage odgovora je bila to odlična priložnost za razširitev koncepta vodnikov dogodkov v VBA.

Zanimive Članki...