Skip to content

Release history

WilliamSmithEdward/pyOpenVBA releases

All releases

8 shown

No immediate action
v3.0.1 Maintenance

Routine maintenance and dependency updates.

v3.0.0 Breaking risk
Breaking changes
  • Renamed module `pyopenvba.access` to `pyopenvba.access_read`
  • Renamed class `AccessFile` to `AccessReader`
Notable features
  • Added EXPERIMENTAL read‑only `AccessReader` supporting Access .accdb/.mdb parsing with VBA module extraction
Full changelog

Added

  • AccessReader (EXPERIMENTAL) -- pure-Python read-only support for
    Microsoft Access .accdb / .mdb (ACE / Jet 4) databases:
    • AccessReader(path) parses the 4 KiB page-layout file header and
      validates the ACE / Jet signature.
    • iter_vba_modules() yields every embedded VBA module (VBAModule
      dataclass with name, start_offset, attributes_text, source).
      Modules are discovered by scanning for MS-OVBA stream signatures and
      walking the LVAL page chains they live on -- no Access COM, no
      MSysObjects parser required.
    • vba_module_names() deduplicates shadow / undo copies and returns
      the live module name list.
    • read_vba_module(name) returns the user-visible source string with
      \r\n line endings preserved; matches Access COM
      CodeModule.Lines() output byte-for-byte (verified on a 1000-line
      Module + 1000-line Class + 500-line Module live fixture against an
      Access COM oracle).
    • Re-exported from pyopenvba as AccessReader.
    • Write path (re-compress + re-allocate LVAL pages) is not implemented;
      Access support is read-only by design.

Changed

  • BREAKING: Renamed pyopenvba.access module to pyopenvba.access_read
    and renamed the AccessFile class to AccessReader to make the
    read-only access posture explicit.
  • Adopted strict static analysis: pyright typeCheckingMode = "strict"
    and a curated ruff lint configuration (E, F, W, B, UP, SIM, I, RUF, PIE, C4, PERF, N, TC, RET, TRY) now run clean across src/ and
    tests/ with 0 errors.

Removed

  • Pruned ~1800 lines of dead Access write-path / probe code and the
    associated tests that exercised never-public APIs.
No immediate action
v2.0.1 New feature

synthesize_class_header helper

No immediate action
v2.0.0 New feature

Word & PowerPoint file support

No immediate action
v1.1.1 Bug fix

Fix for header loss on edit

No immediate action
v1.1.0 New feature

ExcelFile.create_new

No immediate action
v1.0.1 Bug fix

Excel module compression + duplicate PROJECT fix

No immediate action
v1.0.0 New feature

Full VBA round‑trip

Beta — feedback welcome: [email protected]