Visual Basic for Applications (neboli VBA) je programovací jazyk od firmy Microsoft, který je používán v jeho balíčku Microsoft Office. VBA umožňuje vytváření uživatelsky definovaných funkcí, automatizaci procesů, přístup k Windows API a ostatní nízkoúrovňové funkce prostřednictvím dynamicky linkovaných knihoven (DLL). VBA zároveň rozšiřuje možnosti dřívějších programovacích jazyků, které ovšem byly specifické pro různé aplikace, například pro textový procesor Microsoft Word existoval jazyk WordBasic. Program v jazyce VBA může být použit pro kontrolu mnoho aspektů hostující aplikace, včetně manipulace s funkcemi uživatelského rozhraní, například menu, nebo také dovoluje pracovat s vlastními uživatelskými formuláři nebo dialogy.
Jak již název tohoto jazyka napovídá, VBA je velmi úzce příbuzné s Visual Basic a používá stejnou běhovou knihovnu Visual Basic Runtime Library, avšak program napsaný v tomto jazyce dokáže běžet pouze spolu s hostující aplikací, nikoliv jako samostatný program. Program napsaný v tomto jazyce může ovládat jednu aplikaci z jiné prostřednictvím protokolu OLE Automation. Pomocí programu v jazyce VBA tak například lze automaticky generovat report do Wordu z dat uložených v Excelu.
Prostředí VBA je k dispozici ve většině aplikací v sadě Microsoft Office, včetně verzí pro macOS (od verze 2008) a ostatních aplikací od Microsoftu (například Microsoft MapPoint nebo Microsoft Visio).
Kód, který je napsán ve VBA je přeložen[1] do proprietárního prováděcího kódu, který se jmenuje Microsoft P-code (z anglického packed code, což znamená zabalený kód). Tento kód hostující aplikace (například Microsoft Access, Microsoft Excel, Microsoft Word, Microsoft Outlook nebo Microsoft PowerPoint) ukládá jako samostatný stream v samotném dokumentu (například .docx
soubor nebo .xlsx
soubor). Kód je poté spuštěn ve virtuálním stroji[1], který hostuje hostující aplikace.
Aplikace ve VBA, které jsou psané tak, aby používaly rozhraní OLE Automation jedné aplikace nemohou být použity k automatizaci jiné aplikace i přes to, že také obsahuje prostředí pro běh aplikací VBA, protože rozhraní je v obou aplikacích odlišné. Například aplikace napsané pro automatizaci Microsoft Wordu nemohou automatizovat jiný textový procesor, i přes to, že také hostuje prostředí pro běh VBA.
Může být automatizováno více aplikací z jednoho hosta prostřednictvím vytváření objektů aplikací v kódu VBA. VBA kód psaný v aplikaci Microsoft Access může vytvořit spojení s Excelem, formátovat text, spojit e-maily z Outlooku.
VBA programy mohou reagovat na stisknutí tlačítka v menu, na makro, na klávesovou zkratku nebo na OLE/COM událost, například otevření dokumentu v aplikaci nebo jeho zavření.
Stejně, jako programy vytvořené v jiných programovacích jazycích mohou být vytvořena se zlým úmyslem, mohou existovat i viry napsané ve VBA. V okamžiku použití skriptu v jazyce VBA, je většina z bezpečnostních funkcí v rukou uživatele, nikoliv autora makra. Koncový uživatel makra se může chránit například tím, že deaktivuje všechna makra, kromě těch, kterým explicitně dovolil spuštění.
V tomto článku byl použit překlad textu z článku Visual Basic for Applications na anglické Wikipedii.