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.
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" 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
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 pro práci se záhlavím a zápatím:
With ActiveSheet.PageSetup
.LeftHeader = "&P"
.CenterHeader = "&N"
.RightHeader = "&D"
.LeftFooter = "&T"
.CenterFooter = "&F"
.RightFooter = "&A"
End With
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 |
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 |
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"
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 |
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
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."
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
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
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.
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ů.
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.
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é.
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
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
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.
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
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.
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
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í :-)
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.
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.
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
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
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ř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
Přidáno: 01.12.15 12:32
Dobrý den, lze záhlaví nějak "orámovat" VBa scriptem?
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
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
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 |