Jak na barevný programový kód (VBA)

Čas od času se vracím k tématu, kterak obarvovat prostý text programového kódu. Jeho zdrojem je v mém případě zpravidla Excel a editor VBA.

Programový kód v editoru VBA
Programový kód v editoru VBA

Prostým zkopírováním kódu do schránky se přenáší pouze neformátovaný text. A co víc, jeho přímé vložení do dialogu Skype v současné době není možné, dočkáte se pseudočínského paskvilu (musíte použít prostředníka – textový editor). Ve svých výukových materiálech si každopádně přeji mít kód obarvený (klíčová slova, komentáře atd.).

K řešení potřebujeme dvě věci – prvek, který umí zobrazovat naformátovaný text – RTF (Rich Text Format), případně HTML a techniku, jak kód přebírat obarvený (resp. jak jej znovu obarvit).

Samotný Excel či Word si s vkládaným naformátovaným textem poradí, na takovém formuláři ve VBA ale běžně nemáme k dispozici vhodný ActiveX prvek. Klasický TextBox zvládá pouze prostý text, a RichTextBox bychom museli na UserForm dopravit s dopomocí. V podstatě se jedná o prvek Visual Basicu 6, kdy jeho použití nebrání ani tak technické problémy, jako spíš zabezpečení a licencování (obojí se nechá obejít zásahem do registru, ale…). A když už si najdete jiný prvek (kdo hledá, najde InkEdit), musíte řešit obarvení přejatého kódu. Já osobně jsem zvolil regulární výrazy – objekt RegExp vypůjčený z VBScriptu). Ale o tom někdy jindy, chtěl jsem jen nastínit, jak trnitá cesta to je.

Pro administrátory webových stránek slouží k účelům zpracování programového kódu celé PHP moduly. Mezi nejznámější patří robustní GeSHi – Generic Syntax Highlighter. Vybírat si můžete z různých programovacích jazyků (VBA si dotvoříte ze stávající definice pro Visual Basic), řádky číslovat aj.

1
2
3
4
5
6
Sub VytvorSeznamObr()
   ReDim PoleSouboru(0 To 1)
   f = Dir(Directory, 7)
   'setřídění
   QuickSort PoleSouboru
End Sub

Přebírat text obarvený z okna editoru VBA zvládne kupříkladu placený HyperSnap a jeho modul TextSnap. Ačkoliv autoři od tohoto nástroje upouští a v budoucích verzích možná nebude vůbec (jednoduše se na soudobých prvcích podporujících DirectX, hardwarovou podporu atp. nechytá), na stařičkém editoru problém nemá. Z něj pak už obarvený text kopírujete přes schránku jinam.

HyperSnap - program pro snímání obrazovky (a textu)
HyperSnap – program pro snímání obrazovky (a textu)

Cílem tohoto článku je ovšem Notepad++. Ten slouží jako víc než skvělá náhrada textového editoru Notepad (Poznámkový blok). Je zdarma, existuje přenositelná verze, umí překódování textu, podporuje moduly a co nás zajímá nejvíce, umožňuje obarvovat programový kód podle vybrané syntaxe (a kromě jiného i třeba seskupovat programové bloky – procedury – a vytvořit z nich přehlednou stromovou strukturu). V Notepadu++ není samozřejmě problém předefinovat pravidla syntaxe dle vašich potřeb. Pro export naformátovaného textu použijete plugin NppExport.

Obarvení kódu a jeho export v programu Notepad++
Obarvení kódu a jeho export v programu Notepad++

Ve Wordu nebo jinde pak už jen překlopíte obsah ze schránky (s volbou zachování formátování zdroje). Následně můžete ještě aplikovat vlastní styly odstavce. Obrázek níže ukazuje užití modernějšího a vhodnějšího fontu Consolas a změnu řádkování (srovnání s přežitým fontem Courier New).

Microsoft Word - vložení programového kódu ze schránky
Microsoft Word – vložení programového kódu ze schránky