The vba-blocks manifest (vba-block.toml) serves as the foundation for your project and provides information on your package, source, dependencies, references, and targets, as detailed below.

[package] or [project]

[package] / [project] includes general information about your package.

name = "my_package"
version = "0.1.0"
authors = ["[email protected]"]

All three of the above fields (name, version, and authors) are mandatory for packages. Packages are designed to be included in other packages/projects, which projects are used for Office documents like Workbooks and have slightly different requirements.

name = "my_package"
target = "xlsm"


vba-blocks is built on the concept of Semantic Versioning, so the version field should follow these rules:


target is used to define what application/extension to use when building your project. It can be a string for the extension, in which case target/ includes the source files for creating the target. Otherwise, type and path can be used to define a custom target path

target = "xlsm"
# equivalent to target = { type = "xlsm", path = "target" }

target = { type = "xlam", path = "targets/xlam" }


a = "src/a.bas"
b = "src/b.cls"


dictionary = "^1"
json = { version = ">= 1.2, 1.5" }

version = "1.2.3"