Makronaredba za promjenu zaglavlja u Excelu - Excel savjeti

Sadržaj

Donna iz Missourija pitala je:

Imate li pojma kako mogu pronaći put do kojeg se dokument nalazi, naznačen u zaglavlju ili podnožju - ili bilo gdje u dokumentu. Naziv datoteke mogu dobiti s & f, ali nisam u mogućnosti shvatiti kako to učiniti.

Prije svega, razumijem da je Microsoft dodao ovu funkciju u Excel XP i nudim im pohvale jer je to često postavljani problem. Čitatelji koji su već nadogradili na Office XP neće trebati tehnike iz ovotjednog savjeta za rješavanje ovog problema, ali i dalje će biti korisne za rješavanje drugih problema.

Rješenje ovog savjeta je posebna vrsta makronaredbe koja se naziva makronaredba za obradu događaja. Kratko ćemo preuzeti kontrolu nad Excelom svaki put kad će ispisati našu radnu knjigu i dodati trenutni put u zaglavlje.

Mnogi su se korisnici programa Excel bavili snimanjem jednostavnih makronaredbi. Makronaredbe se pohranjuju u modul nazvan Module1 ili Module2 i postaju dijelom vašeg projekta. Danas ću razgovarati o makronaredbama za rukovanje događajima. Te se makronaredbe nalaze na posebnom modulu koda koji je povezan sa svakim radnim listom ili radnom knjigom.

Prethodni savjeti, poput savjeta Enter Excel Time Without Colon, bavili su se događajem Worksheet_Change. Današnji savjet zahtijeva da dodamo neki kôd događaju u Workbook Prije ispisa.

Kôd dodan događaju pokrenut će se kad god se taj događaj "aktivira". U ovom slučaju, bilo kada se ispisuje Excel radna knjiga, prije početka ispisa, Excel prebacuje kontrolu na VBA kôd i omogućuje da se sve što navedete u VBA kodu automatski dogodi prije ispisa.

Pretpostavit ću da ste novi u makronaredbama za obradu događaja. Proći ću kroz točno kako doći do pravog mjesta kako bih ušao u ovu makronaredbu.

Imam radnu knjigu pod nazivom "Tip055 Sample.xls". Kad se radna knjiga učita u Excelu, pritisnut ću alt = "" + F11 da bih započeo s uređivanjem visual basic. Zadani izgled uređivača prikazan je zdesna. S lijeve strane obično vidite okno Projekt složeno na vrhu okna Svojstva. Većina desne strane zaslona uključuje okno koda. Ako u radnoj knjizi nemate makronaredbi, okno koda bit će sive boje kao što je prikazano s desne strane.

Na sliku sam dodao plave kurzivne riječi kako bih prepoznao tri okna - u vašem primjeru ih nećete vidjeti.

Važno je da u VB editoru možete vidjeti okno projekta. Ako vaš pogled na uređivač VB ne uključuje okno projekta, pritisnite Ctrl + R da biste pogledali okno projekta. Ili kliknite ikonu alatne trake prikazane dolje:

U oknu projekta prikazat će se projekt za svaku otvorenu Excel radnu knjigu i svaki instalirani dodatak. Kliknite sivi plus pored naziva vaše radne knjige da biste proširili projekt za svoju radnu knjigu. Zatim kliknite sivi plus pored mape Microsoft Excel Objects da biste proširili mapu objekata. Sada biste trebali vidjeti jedan unos za svaki radni list i jedan unos pod nazivom ThisWorkbook.

Desnom tipkom miša kliknite unos za ThisWorkbook i na padajućem izborniku odaberite View Code.

Sad ćete vjerojatno imati veliko prazno bijelo okno s kodom koje zauzima desnu stranu zaslona. Postoje dva padajuća izbornika na vrhu okna s kodom koji će reći (Općenito) i (Izjave).

  • S padajućeg izbornika s lijeve strane odaberite Radna knjiga.
  • Desni padajući meni sada je popunjen svim programirljivim događajima povezanim s radnom knjigom. Ovdje postoje događaji koji će pokretati kôd svaki put kad se radna knjiga otvori, aktivira, deaktivira itd. Danas želimo upisati kôd u događaj BeforePrint, pa odaberite BeforePrint s desnog padajućeg izbornika.

Imajte na umu da svaki put kada odaberete nešto s desnog padajućeg izbornika, VBA editor umjesto vas upisuje početni i završni redak koda u modul koda. Prvi put kada promijenite lijevi padajući meni u Radna knjiga, vjerojatno ste prema zadanim postavkama dobili početke potprograma Radna knjiga_Otvori. Ako nećete pisati postupak Workbook_Open, trebali biste razmisliti o brisanju ovog praznog postupka.

Sada, na pisanju VBA koda. Postoji nekoliko korisnih varijabli koje možete koristiti.

  • ActiveWorkbook.Path vratit će put radne knjige. Moglo bi izgledati kao "C: Moji dokumenti MrExcel".
  • ActiveWorkbook.FullName vratit će put i ime datoteke radne knjige. Moglo bi izgledati kao "C: My Documents MrExcel Tip055 Sample.xls".

Ovoj varijabli možete dodijeliti jednu na sljedećih 6 pozicija:

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

Evo tri moguća uzorka makronaredbi.

Ovoj će makronaredbi put i naziv datoteke biti dodani kao desno podnožje aktivnog radnog lista:

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

Ovoj će makronaredbi staza biti dodana kao lijevo zaglavlje Sheet1 i kao središnje podnožje Sheet2:

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

Ako prilikom ispisa obično upotrebljavate opciju "Cijela radna bilježnica", ova će inačica dodati puno ime kao središnje podnožje svim listovima:

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

Slijedite jedan od ovih primjera ili izradite vlastiti. Kada završite, zatvorite VBA editor s File> Close i Return to Microsoft Excel.

Kad god ispišete radni list, kôd će se pokrenuti i umetnuti trenutnu putanju u odgovarajuće zaglavlje ili podnožje koje ste naveli u VBA kodu.

Neke napomene i upozorenja:

  • Korisnici početnici programa Excel neće imati pojma da se ovaj kôd nalazi u radnoj knjižici. Kad otvore radnu knjigu, mogu dobiti sigurnosno upozorenje da datoteka sadrži makronaredbe, ali neće biti upozorenja kad VBA kôd udari sve što su imali kao središnje podnožje i tamo stavi naziv puta. To može dovesti do žgaravice. Zamislite da nakon pet godina netko koristi vašu radnu knjigu, a novi upravitelj želi da se naziv datoteke premjesti iz središnjeg podnožja u desno podnožje. Ova osoba možda zna ručno promijeniti postavke u Datoteka> Podešavanje stranice, ali ako ne zna da je kôd tamo, odvest će je u vodu dok kôd neprestano vraća podnožja.

    Stvarno je malo vjerojatno da će moći pronaći vaš modul koda, no za svaki slučaj, možda biste htjeli ostaviti komentar u modulu koda koji ih vraća na ovo web mjesto radi objašnjenja.

    Također biste mogli dodati komentar u ćeliju A1 podsjećajući se da je postavljen obrađivač događaja za promjenu zaglavlja ispisa.

  • U VBA postoji postavka koja sprečava pokretanje događaja. Ako makronaredba iznenada prestane raditi, uobičajeno je ustanoviti da je nešto unutar VBA okrenulo ovu postavku kako bi spriječilo pokretanje događaja. Uobičajeni scenarij je da programer pokrene makronaredbu sa:

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

    Kada se u makronaredbi dogodi pogreška, događaji se nikad više neće ponovno uključiti. Kad se to dogodi, malo je upozorenja. Ako sumnjate da se vaši izvršitelji događaja ne izvršavaju, idite na uređivač visual basic. Pritisnite Ctrl + g da biste otvorili trenutno okno. U neposredno okno upišite:

    Print Application.EnableEvents

    i pritisnite Enter. Ako ustanovite da je ovo postavljeno na Netačno, unesite sljedeći redak u neposredno okno:

    Application.EnableEvents = True

    i pritisnite Enter.

Hvala Donni na izvrsnom pitanju. U procesu objašnjavanja odgovora bila je to izvrsna prilika da proširimo koncept voditelja događaja u VBA.

Zanimljivi članci...