Skip to content

Beakerboy/VBA-Precompiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Coverage Status Build Status

VBA-Precompiler

About

The Microsoft VBA language includes a simple precompilation language (Conditional Compilation). This tool allows users to specify environment parameters to convert a conditional-module-body into a preprocessed-module-body.

This software operates as recommended in the Microsoft VBA Language Specification.

Requirements

vba_precompiler is tested on python 3.8 and higher.

Installation

Use the package manager pip to install VBA-Precompiler.

pip install vba_precompiler

Getting Started

vba_precompiler will take a specified directory that contains vba source code, and a set of environment values, and produce a set of matching vba source files in which code is excluded as directed by the precomiler directives.

For example, the following

Attribute VB_Name = "Input"
#Const TestType="testing"
#If Win16 Or Then
    foo = 6
#ElseIf Win32
    foo = 7
#EndIf
'Additional VBA code follows

Will be transformed to the following:

Attribute VB_Name = "Input"
'#Const TestType="testing"
'#If Win16 Then
    foo = 6
'#ElseIf Win32
'    foo = 7
'#EndIf
'Additional VBA code follows

To run the program

python vba_precompiler.py [-h] [-s SYSTEM] [-D DEFINE] [-v VERSION] [-o OUTPUT] directory

positional arguments:
  directory             The source directory.

options:
  -h, --help            show this help message and
                        exit
  -s, --system          System Type, Win16, Win32, Win64, or Mac.
  -D, --define          Define an environment variable 
  -v, --version         VBA version, 6 or 7.
  -o, --output         output path, defaults to ./build.

examples:
  python -m vba_precompiler -s Win32 -D TESTING=True -v 7 -o ./build32_7 ./project

Tests

The tests directory contains complete unit and functional tests.

Contributing

Contributions are welcome. Please ensure new features include unit tests to maintain 100% coverage. All code must adhere to the PEP8 Standards for both formatting and naming. Method signatures must be fully annotated.

About

Precompile VBA source files with specified environment values.

Resources

License

Stars

Watchers

Forks

Packages

No packages published