If you think this project is helpful to you, please click the Star button in the upper right corner to star it. For Chinese translations of other TIOBE Top 20 programming languages, please see awesome-code-resources. The original warehouse address for this project is here.
Awesome VBA - Compatible on all platforms
-Mac compatible -Windows compatible Application compatibility
- -All apps
- -Word
- -Excel
- -access
- -Outlook
- -PowerPoint
- - Miscellaneous applications - (ms-project, AutoCAD, etc.) - specified in short description
Other important information
- - 32 bit only
- -Written in VBA but the code is password protected
- - Requires external dependencies, such as,, etc.
- -Requires installation
- -Links include/lead to paid content
content
- Symbolism
- Platform compatibility
- Application compatibility
- Other important information
- content
- frame
- library
- Data format - (JSON, CSV, XML, etc.)
- Data structures - (array lists and dictionaries)
- math library
- Database tools
- UserForm Tools
- Low level tools
- parser/interpreter
- Web tools
- Developer Tools
- Miscellaneous
- Example
- Algorithms, code optimization and performance testing
- UI ribbon
- UI userform
- low level example
- plug-in
- Games/Fun Projects
- external tools
- style guides
- information
- resource
- Win32-API resources
- VB6-/-VBScript
- website
- books
- Youtube
- forum
frame
- stdVBA - A framework containing a large number of automation and utility classes. Focus on code compactness and long-term maintainability.
- VbCorLib - a framework that brings a lot of power. NET classes to VBA/vb6.
- Hidennotare - A framework for Japanese author RelaxTools. Contains many classes, interfaces and forms.
library
Data format
JSON
- VBA-JSON-JSON conversion and parsing.
- mdJSON - JSON library with dot notation for extracting paths.
- JSONBag - Extract keys from a JSON string using shebang notation. You can also use this library to build JSON.
- From the frame:
CSV
- VBA-CSV-interface - Powerful, fast and comprehensive RFC-4180 compliant CSV/TSV/DSV data management library.
- From the frame:
XML
- VBA-XML-XML conversion and parsing.
post code
- Excel-ZipTools - Parse and read Zip files.
data structure
array list
- Better array - An array class providing functionality found in more modern languages.
- From the frame:
- In search - as above.
- In search - as above. Also includes methods to search the array or perform checks from callbacks.
dictionary
- VBA - FastDictionary - Fast, cross-platform, native dictionary. Replacement script dictionary.
- VBA-Dictionary - A dictionary object that stores key-value pairs.
- VBA-ExtendedDictionary - A Dictionary object that uses Scripting.dictionary, but exposes some additional useful functionality.
- cHashList - Simple, fast and lightweight HashList class that does not use Win32 API. But a string key is required.
- CollectionEx - Extends the default VBA (/VB6) collection with methods for retrieving and checking for the existence of keys.
- clsTrickHashTable - A hash table using machine code injected at runtime. Complete replacement of script dictionary with bonus features.
- From the frame:
math library
- VBA-Math-Objects - Matrix and vector library.
- VBA Float - A utility to perform calculations on large integers and rational numbers with thousands of digits.
Database tools
- SQL Library - OOP SQL library for psql, mssql, mysql database.
UserForm Tools
- Task Dialog - Lots of UI functionality from this 1st class, in a strictly dynamic and modular way. Great data entry form. Also see vbforumspost for more information.
- Material UI - Make your userform feel modern with Material UI.
- Easy EventListener - Consolidates all event handling for userform into 1 callback.
- Pseudo Control Arrays - The best way to integrate all event handling of userforms. Demonstrated usage of the API. It's also worth checking out this class for me too.
- Modern UI Components - Customize modern controls.
- MVVM - Model-View - ViewModel infrastructure for maintainable userform development.
- VBA Userform Transitions and Animations - A great library for implementing animation easings into userforms.
- Trick's Timer - If you need to run a piece of code continuously and don't have access (and/or you need to run it more than once per second), this is the course for you! Also checked the forum post for more info.
- Drag and Drop filepaths - Allows your userforms to handle drag and drop files.
- Late-bound WebBrowser Control Events - A technique for locking WebBrowser events in a late-bound manner.
- Mark's userform tools - Lots of UI tools and beautiful userforms.
- VBA-UserForm-MouseScroll - Allows mouse wheel scrolling on MSForms controls and Userforms.
- MSForms (All VBA) Treeview Control - Treeview control replacement coded entirely in VBA by JKP and Peter Thornton.
- Custom Userform TitleBar color
- Multi-color ListBox class
- Use of GDIPlus in VBA - GDIPlus can be used to create an element that can draw any image. Also take a look at this GDI32 class from the same author.
- Use of OpenGL in VBA - OpenGL is a cross-language, cross-platform application programming interface for rendering 2D and 3D vector graphics. In this article, the author of the GDIPlus class.
- VB6 Graph Control - Will not work natively in VBA, no compatible replacement, but a very high performance graph control regardless.
Low level tools
- VBA - MemoryTools - provides a super-fast, memory-copying option.
- Safe Subclassing - Provides the ability to subclass Excel/Word/PowerPoint windows or user forms to perform further automation. In a later thread, there is also an example for subclassing other windows from other applications.
- Calling private module functions
- Universal DLL Calls - A library that can be used to call functions and functions of any function pointer, DLL or object.
- VBA state-loss callback - Faultless detector for VBA state loss. State loss can occur when: someone clicks in an unhandled error; you click the VBA Stop button; you enter design mode; the application exits.
- vb2clr - C# using VBA. NET CLR runtime.
- From the frame:
- Find - A one-stop shop for COM automation, from calling interfaces via offsets to extracting type information.
- In Find - Registry automation from searching to setting values.
parser/interpreter
- VbPeg - Parser generator for VBA. Convert PEG syntax like this into VBA code like this. Very useful if you implement a new programming language in VBA. Wqweto also includes some mathematical expression parsers as tests.
- Volpi's Math Expression Parser - A fast mathematical expression parser. No calls to objects are allowed, there is no call stack.
- VBA Expressions - A powerful string expression calculator focused on math and data processing.
- ClooWrapperVBA - Execute OpenCL from VBA using GPU or CPU.
- From the frame:
- Find - The complete programming language, including object manipulation, call stack, and more.
Web tools
- VBA-Web - Connect VBA, Excel, Access and Office for Windows and Mac to web services and the web
- VBA-WebSocket - Microsoft sample code for a WebSocket client that can be used with an echo server. There is also a class and an async version generated by Microsoft Code Discoverer.
- vbAsyncSocket - Simple and thin WinSock API wrapper for VB6 based on the original CAsyncSocket wrapper in MFC.
- Edge Automation - Automate Chromium edge execution using the devtools protocol. Github backup here
- Chrome Automation (via devtools protocol) - Automate chrome using the Chrome devtools protocol.
- webxcel - A web server running a RESTful backend. Creator also made an article about how it works on dev.to.
Developer Tools
- Rubberduck - An open source COM add-in project that integrates with the Visual Basic editor, adding modern functionality to a familiar IDE. Works in VBA6, VBA7.x (x86/x64), and yes, in VB6 too!
- VBA-IDE-Code-Export-Addin contains code importer and exporter for git (or any VCS).
- -RibbonX - Visual ribbon editor for AndyPope.
- Custom UI XML Editor - Plug-in for directly adding, editing and validating ribbon XML (Excel 2010).
- MZ-Tools-VBE addin provides development tools
- VbPeg - Parser generator for VBA. Convert PEG syntax like this into VBA code like this. Very useful if you want to implement a new programming language in VBA.
- VBA Resource File Editor - Store other files in excel/word/powerpoint files for later use with this handy tool.
- vbRichClient - an external client full of useful libraries
- vbWatchDog - Hack the VBA runtime to provide the module name, procedure name and line number where the error occurred.
Miscellaneous
- Excel Name Manager - treeview control replacement entirely coded in VBA by JKP and Peter Thornton.
- Excel Flex Find - treeview control replacement entirely coded in VBA by JKP and Peter Thornton.
Example
Algorithms, code optimization and performance testing
- VBSpeed - Visual Basic Performance Site - Focused on VB6, but transferable to VBA.
UI ribbon
- Ron de Bruin - Ribbons/QAT - Leading resource for information/examples on developing custom ribbons and context menus.
- Office MSO Icons - Ribbon icons are typically available using one of 1500 (3 pages on this site) MSO icons wich come pre-existing in Office applications.
UI userform
- Drag and drop control - Drag and drop image controls around the UserForm.
low level example
- Iterating the ROT - Example of iterating the ROT to find instances of an Excel workbook.
- Iterating Excel Instances via IAccessible - In some cases, Excel instances are not registered with ROT. However, the Excel application implements that it can be used not only to automate the UI but also to obtain an Excel instance from hwnd.
plug-in
- MenuRighter - MenuRighter is an Excel add-in that allows you to modify the right-click menu. You can add almost any control found in other right-click menus or in Excel 2003's "Classic" menu.
- Sam Rad's DatePicker - Visually impressive and professional DatePicker addin for Excel. Worksheet only/cannot be used with userforms.
Games/Fun Projects
- xlStudio - DAW for Microsoft Excel. Also checked out the awesome video.
- Cellivization - A cool RTS-like game created in Excel. Also checked out the awesome video.
- Arkanoid - Arkanoid, the retro arcade game built into Excel. On some machines it runs faster than others.
- Battleships
- Pacman
- ExcelCommodroid - Commodore computer loader for using MS Excel on Windows. VBA7 only.
external tools
- oletools - Python tool that can be used to decode VBA P-code (VBA's intermediate language).
- twinBasic - A VBA-compatible parser, evaluator and compiler.
- vscode-vba - Extension that adds VBA editor support to Visual Studio Code.
style guides
- RubberDuck's style guide - has some great intermediate-advanced guidance.
- VB6 Coding conventions - Variable/class/module naming conventions used in VBA. Hugely helps organization in VBE (unless you have rubberduck).
information
- Thunder - The birth of Visual Basic - A short article about the birth of VB7/VBA.
- My First Bill Gates Review-Joel Spolsky, project manager on the Excel team, tells about his first Bill Gates review. Joel added many features such as , , and . It also discusses the horrible date bug when porting from Lotus 123 to Excel.
- Ruby, EB and DLL composition - Translated copy of VBStreets article created by Russian VBer. Detailed introduction to the composition of VB6 and VBA dll in language history.
- PCode Internals - VBA compiled to PCode. Understanding lower level P code is a very interesting and researched topic.
- How many lines of code in EB - Untranslated article by Russian VBer which estimates the number of lines of code in VB6/VBA.
- SAFEARRAYS - The internal structure of the array.
- Articles by Sancarn - Various articles written by Sancarn about VBA, including performance, practical issues with VBA, and more.
resource
Win32 API resources
- JKP API Declarations
- Microsoft Office Code Compatibility Inspector - Microsoft Office Code Compatibility Inspector was designed by Microsoft to resolve compatibility issues with VBA code when upgrading Office from 32-bit to 64-bit. Although a version of the software can apparently be found on the internet, MS has not maintained a link to the software for downloading from its servers.
VB6/VBScript
- Planet Source Code - The original Github before Github was Github. Now available on Github. Probably not the entire collection of projects/source code previously available on the PSC website (?), although it's certainly more than enough for more people to enjoy and keep themselves entertained on a Friday night.
- vbAccelerator Archive - Archived copy of the vbAccelerator website (articles, source code, etc.) disappeared in 2015, reappeared in 2018, and it's anyone's guess what happens next... mostly VB6, but useful VBA resources.
website
- Excel Development Platform Blog - Blog dealing with advanced topics/VBA.
- MSDN VBA Documentation
- MS-VBAL Language Spec
- Ron de Bruin-Easy-Intermediate Theme. Note: Ron has archived all of these sites, it will not be updated and some of the information is out of date, but it is still an incredible resource for VBA.
- Bytecomb VBA Reference - Intermediate - Advanced Topics.
- Chip Pearson's website - a great resource for beginners - intermediate.
- VBA for smarties - A great reference to many data structures and mechanisms.
- Automate Excel's cheat sheets
- Rubberduck Blog - Intermediate - Advanced themes.
- Slipstick - Diane Poremsky's (MVP) website, focusing on Outlook and VBA.
- TechnicLee - Outlook Blog, many examples include code variations based on user requests.
- PowerPoint VBA - A website dedicated to teaching VBA by making games in PowerPoint.
- MS KB Archive - Extensive archive of vb6/vba problems, solutions and tutorials.
books
- Hard Core Visual Basic - An advanced programmer's guide to the new 5.0 version of Visual Basic. Includes a core set of utilities, shortcuts, and problem solvers for a wide range of functional programs. Hard books also exist. Also checked Comments and corrections.
- The VBA Developer's Handbook - Write bulletproof VBA code for any situation. This book is an essential resource for developers of more than 300 products using the Visual Basic for Applications programming language. Also available in hardcover elsewhere.
- Advanced Visual Basic 6 - Power Techniques for Everyday Programs Matthew Curland. Also available in hardcover elsewhere.
- Professional Excel Development - In this book, four world-class Microsoft® Excel developers provide start-to-finish guidance on building powerful, robust, and secure applications with Excel. Also available in hardcover.
- Excel VBA Programming For Dummies - It's time to move to the next level - create your own custom Excel 2010 solutions using Visual Basic for Applications (VBA). Using step-by-step instructions and an accessible, fool-friendly style, this practical book shows you how to use VBA, write macros, customize your Excel apps, see and work the way you want, avoid errors, and more
- Power Programming with VBA - Power Programming with VBA for Excel 2019 has been fully updated to cover all the latest tools and tips for Excel 2019. Including an analysis of Excel application development and a complete introduction to Visual Basic for Applications (VBA), this comprehensive book introduces all the techniques needed to develop Excel applications large and small.
- (E-Book) VBA beginners
- (E-Book) Excel VBA beginners
Youtube
- Excel Macro Mastery - Paul Kelly (MVP) - excelmacromastery.com.
- Sigma Coding - A large catalog of tutorials - from beginner to advanced. Delve into interesting areas of VBA unexplored by other content creators.
- WiseOwl's VBA tutorials - great comprehensive VBA resource. Provides the perfect introduction for beginners. Learn all aspects of VBA in depth. Huge playlist covering most types of VBA.
- VBA A2Z - Many tutorials, some paid content. Nice interesting and different topic on arrays - in-depth tutorials into different parts of VBA, with some. NET/VSTO video. Strong focus on UI development.
- Excel VBA Is Fun
- Excel for Freelancers - Hands-on tutorials to develop a specific application from start to finish. All levels.
- Leila Gharani - an office-wide focal point - useful for beginners.
- Get to know VBA - Some great applications presented and created using VBA.
forum
- Reddit - Daily VBA Q&A. Occasional pro tips are shared and published by Show & Tell Library.
- StackOverflow is a great place to ask questions. Duplicate questions are marked as duplicates and the author is sent to the correct location.
- Chandoo-Chandoo Forum-Purna Duggirala (MVP)'s blog. Very active.
- Visual Basic Discord - A chat room for VB.NET/VBA/VB6 enthusiasts.
- Excel Discord - The Discord server is hosted by Tim Heng (Excel MVP) and focuses on helping Excel users.
- MrExcel - Mainly Excel general, but a lot of VBA content can be found here as well.
- Excel Forum
- Slipstick - Excellent forum for Diane Poremsky's (MVP) Slipstick website (Outlook VBA). Diane was very responsive and her answers were very helpful.
- VBForums - Office Development-Forum, focusing on VB6/.NET and VBA.
contribute
Your contributions are always welcome! Please take a look at the contribution guidelines first.
Expand