Přeskočit navigaci | Přeskočit na novinky

Jste zde: Úvodní stránka » excel » vba-listy-sheet » zahlavi-zapati-excel-vba

Zápatí a záhlaví pomocí VBA Excel

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Jak formátovat záhlaví a zápatí v Microsoft Excelu pomocí VBA.

6.7.2013: Doplněno a zpřehledněno.

Microsoft Excel 2010 VBA - logo

Úvodem

Cílem tohoto článku je zpřístupnění kódu pro práci se záhlavím a zápatím v Microsoft Excelu. Jednotlivé kapitoly:


Vložení textu do zahlaví

Vložení textu" Nějaký text.

Worksheets("List1").PageSetup.LeftHeader = "Nějaký text."

Vložení textu, který se odkazuje na buňku,

Sub VlozitZahlavi() With ActiveSheet.PageSetup .LeftHeader = Range("A1") .CenterHeader = Range("A2") .RightHeader = Range("A3") End With End Sub

Vložení textu do zápatí

Jendoduchá vložení textu:

Worksheets("List1").PageSetup.CenterFooter = "Nějaký jiný text."

Text který se odkazuje na buňku:

Sub VlozitZapati() With ActiveSheet.PageSetup .LeftFooter = Range("A1") .CenterFooter = "Text zadaný přímo" .RightFooter = "" End With End Sub

Další kódy

Další kódy pro práci se záhlavím a zápatím:

Kody pro čísla stránek, datum, list...

With ActiveSheet.PageSetup .LeftHeader = "&P" .CenterHeader = "&N" .RightHeader = "&D" .LeftFooter = "&T" .CenterFooter = "&F" .RightFooter = "&A" End With

Seznam kódu

Do hlavičky lze pomocí VBA kódu vložit například aktuální stránky, datum, čas. Jaké kódy jsou k dispozici a co umí viz následující tabulka:

Kód Popis
&D Vypíše aktuální datum
&T Vypíše aktuální čas
&F Vypíše název dokumentu
&A Vypíše název listu
&P Vypíše číslo stránky
&P+číslo Vypíše číslo stránky zvýšené o uvedené číslo
&P-číslo Vypíše číslo stránky snížené o uvedené číslo
&& Vytiskne jeden znak &
&N Vypíše počet stránek v dokumentu
&Z Vytiskne cestu k souboru
&G Vloží obrázek

Formatovácí kódy hlavičky / patičky

Následuje seznam formatovacích znaku, které se dají použít ve VBA pro naformatování textu v hlavičce / patičce listu Microsoft Excelu. Použít lze u (LeftHeader, CenterHeader, RightHeader, LeftFooter, CenterFooter a RightFooter).

Kód Popis
&L Zarovnání textu doleva
&C Zarovnání textu ne střed
&R Zarovnání textu doprava
&E Dvojité podtržení – zapnout nebo vypnoutí
&X Tisk superscript – zapnout nebo vypnoutí
&Y Tisk subscript – zapnout nebo vypnoutí
&B Tučné písmo – zapnout nebo vypnoutí
&I Kurzívá – zapnout nebo vypnoutí
&U Podtržení jednoduché – zapnout nebo vypnoutí
&S Přeškrtnutí textu – zapnout nebo vypnoutí
&„JménoFontu“ Změna fontu
&nn Velikost fontu velikost v bodech (dvě čísla)
&K[barva] Změna barvy – hexadecimální hodnota

Změna barvy

Sice v manuálu Microsft je pro změnu barvy uvedeno chybně &barva, správně má být vkládání kódu doplněno o "K" tj. &K[barva], ukázky čísla stránky v modré barvě.

LeftFooter = "&K0000FF&P"

Kódy barev v HEX

Barva HEX Červená Zelená Modrá Anglicky
Černá #000000 0 0 0 Black
Bíla #FFFFFF 255 255 255 White
červená #FF0000 255 0 0 Red
Zelená #00FF00 0 255 0 Green
Modrá #0000FF 0 0 255 Blue
Žlutá #FFFF00 255 255 0 Yellow
Růžová #FF00FF 255 0 255 Magenta
Sv. modrá #00FFFF 0 255 255 Cyan

Automatické názvy

Zadat automaticky název souboru do každé hlavičky (levé části).

Worksheets("List1").PageSetup.LeftHeader = ActiveWorkbook.Name

Celé jméno do středové patičky:

ActiveSheet.PageSetup.CenterFooter = ThisWorkbook.FullName

Velikost, typ - font - záhlaví/zápatí

Změna velikosti textu, fontu.

Worksheets("List3").PageSetup.LeftHeader = _ "Nějaký&B&""Courier New""&10 Bold Courier New Size 10&B&""Arial"" text na ukázku."

Kompletní kód

Takto se vloží kód při nahrávání makra.

With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "&""Arial CE,tučné""&D" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.787401575) .RightMargin = Application.InchesToPoints(0.787401575) .TopMargin = Application.InchesToPoints(0.984251969) .BottomMargin = Application.InchesToPoints(0.984251969) .HeaderMargin = Application.InchesToPoints(0.4921259845) .FooterMargin = Application.InchesToPoints(0.4921259845) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 600 .CenterHorizontally = False .CenterVertically = False .Orientation = xlPortrait .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 100 End With

Závěrem

Máte-li zajímavý kód ve VBA pro vkládání a úpravu textu záhlaví a zápatí, můžete jej přidat do komentáře.

Článek byl aktualizován: 19.09.2020 11:07

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře


arny

Přidáno: 22.05.13 13:45

Dobrý deň. Chcel by som sa len spýtať, ako sa dá urobiť makro na zápis toho istého záhlavia a zápätia, ale len do vybraných listov z celého zošita. Ďakujem.

Pavel Lasák

Přidáno: 22.05.13 20:03

To arny: Vybrat listy Sheets(Array("List2", "List3")).Select více v článku: Práce s listy (sheet) - Microsoft Excel VBA a pak zapsat potřebné.

arny

Přidáno: 23.05.13 07:54

Vďaka za radu. Pokúšam sa vytvoriť makro, ktoré si údaje načíta z Listu 2 a zapíše ich do hlavičky a päty Listu 4 a Listu 5. Kde je prosím vás chyba? Private Sub CommandButton1_Click() Sheets(Array("List4", "List5")).Select With Selection.PageSetup .LeftHeader = Format(Worksheets("List2").Range("B2").Value) .CenterHeader = Format(Worksheets("List2").Range("B3").Value) .RightHeader = Format(Worksheets("List2").Range("B4").Value) .LeftFooter = Format(Worksheets("List2").Range(("B5") + " &F").Value) .CenterFooter = Format(Worksheets("List2").Range(("B6") + " &A").Value) .RightFooter = Format(Worksheets("List2").Range(("B7") + " &P / &N").Value) End With End Sub

Pavel Lasák

Přidáno: 27.05.13 17:05

To arny: nefunguje Selection, možné řešení: For Each sh In ActiveWorkbook.Sheets If sh.Index = 4 Or sh.Index = 5 Then With sh.PageSetup .CenterHeader = "aa" .LeftHeader = "aaa" End With End If Next sh

PL

Přidáno: 18.07.13 09:42

Dobry den, prosim Vas mohl by jste mi poradit, jak by melo vypadat makro, ktere by umoznilo do zapati nakopirovat hodnotu z konktretni bunky Listu 1 (napr. "B4") a zaroven aby tato hodnota byla naformatovana napr. na: pismo tahoma / velikost 8 / dolni index / kurziva / zarovnani vlevo. Aby to bylo jeste komplikovanejsi, potreboval bych, aby se hodnota v zapati menila okamzite pri zmene hodnoty v konretni bunce ("B4"). Predem dekuji za vasi ochotu a cas. S pozdravem PL.

Pavel Lasák

Přidáno: 18.07.13 16:10

To PL: Viz výše v textu, Range("A1") v kapitole Velikost, typ - font zadat patříčný font a velikost, atd. a v kapitole další kódy je popsáno další nastavení.

Pro automatickou změnu vložit kód do Worksheet_Change

PL

Přidáno: 19.07.13 08:29

Dekuji za rychlou odpoved, na zaklade vyse uvedenych nastaveni jsem se jiz o vytvoreni makra pokousel, ale vysledek byl nevydareny... Vkazdem pripade dekuji budu pokracovat ve snazeni. S pozdravem PL.

míra

Přidáno: 17.10.13 09:53

zdravím, poradíte prosím, jak pomocí makra změnit výšku a šířku záhlaví/zápatí a povolit tisk záhlaví až od druhé stránky ve stejném listě - tedy aby se netisklo na první straně? předem díky

Honza

Přidáno: 13.11.13 10:28

Dobrý den, pěkný článek, taky řeším jak vynechat záhlaví na první stránce, kdyby někdo věděl, jak na to, moc by mi to pomohlo :-) napadá mne leda udělat makro, které vytiskne první stranu a pak teprve vloží záhlaví a zápatí :-)

Mira

Přidáno: 22.11.13 20:52

Zkusil jsem měnit záhlaví a funguje to perfektně , tedy až na jednu výjimku a tou je list, který vznikl při uložení grafu na nový list, takový list je z přepisu záhlaví vynecháván. Ono se tedy záhlaví nezmění ani když v excelu označím všechny listy a vložím záhlaví, výsledek je změna záhlaví u všech listů, kromě onoho listu / grafu. Pokud má někdo řešení budu rád za nápovědu.

Jan Polák

Přidáno: 14.02.14 11:03

Existuje řešení, jak do prostředního záhlaví vložit dva obrázky vedle sebe? Napadlo mne jen ty obrázky napřed v nějakém grafickém programu spojit v jeden a pak jej tam vložit. Je ale i něco elegantnějšího? Využít další části záhlaví (pravé nebo levé) nemohu. Předem díky za rady.

Jarmil

Přidáno: 10.06.14 09:55

Dobrý den Existuje možnost kde při tisku jednoho list na více stránek oboustranně vložit na první stranu každého listu číslo listu. Pořád mi to počítá jako strany. Děkuji za info

Adéla

Přidáno: 01.08.14 10:43

Dobrý den, můžete mi poradit, jak vložit tabulku do zápatí dokumentu v excelu, kde bych mohla vepisovat uáje kdo zhotovil a změnil dokument. Děkuji moc. Adéla

Stnda

Přidáno: 01.01.15 20:17

Kdyby to někdo zachytil: Je možné takový kód vložit do kódu listu pro událost "print"?

Přemek

Přidáno: 10.03.15 09:00

Vrátím se k dotazu od Adély: jde vložit v excelu 2010 tabulka do záhlaví tak, aby se zobrazila i s rámováním? Díky předem

Karel

Přidáno: 01.12.15 12:32

Dobrý den, lze záhlaví nějak "orámovat" VBa scriptem?

mircar

Přidáno: 02.03.16 07:35

Dobrý den, prosím o radu, jak rozdělit zápatí na 2 řádky. -První normálně left-center-right -Druhý jako obrázek (protože věta o duševním vlastnictví je příliš dlouhá) a bylo by pod 1 řádkem zápatí. Je na to nějaký příkaz nebo nějaké jiné řešení? Předem moc moc děkuji za odpověď. S pozdravem Radka






Excel


Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2024 |