Skip to content

This release adds 3 notable features for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

compound-file deterministic excel file-format macro-extraction ms-cfb
+13 more
ms-ovba office-automation openxml pure-python python roundtrip vba vba-macros xlam xls xlsb xlsm zero-dependencies

Summary

AI summary

Adds full read/write support for Word and PowerPoint macro files plus new create‑new helpers.

Changes in this release

Feature Medium

Adds full read/write support for Word macro-enabled files (.docm, .dotm, .doc).

Adds full read/write support for Word macro-enabled files (.docm, .dotm, .doc).

Source: llm_adapter@2026-05-27

Confidence: high

Feature Medium

Adds full read/write support for PowerPoint macro-enabled files (.pptm, .potm, .ppt).

Adds full read/write support for PowerPoint macro-enabled files (.pptm, .potm, .ppt).

Source: llm_adapter@2026-05-27

Confidence: high

Feature Medium

Adds `WordFile.create_new(path)` to create a brand‑new .docm file from scratch.

Adds `WordFile.create_new(path)` to create a brand‑new .docm file from scratch.

Source: llm_adapter@2026-05-27

Confidence: high

Feature Medium

Adds `PowerPointFile.create_new(path)` to create a brand‑new .pptm file from scratch.

Adds `PowerPointFile.create_new(path)` to create a brand‑new .pptm file from scratch.

Source: llm_adapter@2026-05-27

Confidence: high

Feature Medium

Adds disk‑based `pull_word()` and `push_word()` helpers mirroring Excel pull/push API.

Adds disk‑based `pull_word()` and `push_word()` helpers mirroring Excel pull/push API.

Source: llm_adapter@2026-05-27

Confidence: high

Feature Medium

Adds disk‑based `pull_ppt()` and `push_ppt()` helpers for PowerPoint.

Adds disk‑based `pull_ppt()` and `push_ppt()` helpers for PowerPoint.

Source: llm_adapter@2026-05-27

Confidence: high

Feature Medium

Adds `scripts/bake_xlsb_template.py` to bake empty .xlsb template into `_templates/__init__.py`.

Adds `scripts/bake_xlsb_template.py` to bake empty .xlsb template into `_templates/__init__.py`.

Source: llm_adapter@2026-05-27

Confidence: high

Feature Medium

Adds full support for creating class modules across Excel, Word, and PowerPoint via `add_module(kind=other)`.

Adds full support for creating class modules across Excel, Word, and PowerPoint via `add_module(kind=other)`.

Source: llm_adapter@2026-05-27

Confidence: high

Feature Medium

Adds `.xlsb` support to `ExcelFile.create_new()` using the file extension.

Adds `.xlsb` support to `ExcelFile.create_new()` using the file extension.

Source: llm_adapter@2026-05-27

Confidence: low

Feature Low

Extends `ExcelFile.create_new()` to support `.xlsb` files based on the path extension.

Extends `ExcelFile.create_new()` to support `.xlsb` files based on the path extension.

Source: granite4.1:30b@2026-05-27-audit

Confidence: low

Refactor Low

Updates pyproject.toml description and keywords to include Word and PowerPoint hosts.

Updates pyproject.toml description and keywords to include Word and PowerPoint hosts.

Source: llm_adapter@2026-05-27

Confidence: high

Refactor Low

Fully updates README with tagline, supported formats tables, 30‑second tour, `create_new` section, and pull/push workflow covering Excel, Word, and PowerPoint.

Fully updates README with tagline, supported formats tables, 30‑second tour, `create_new` section, and pull/push workflow covering Excel, Word, and PowerPoint.

Source: granite4.1:30b@2026-05-27-audit

Confidence: low

Full changelog

Added

  • WordFile -- full read/write support for Word macro-enabled files:
    .docm, .dotm (OOXML/ZIP), and legacy .doc (raw CFB/BIFF8).
    Exposes the same API as ExcelFile: module_names(), get_module(),
    set_module(), vba_project(), save(), pull_modules(),
    push_modules().
  • PowerPointFile -- full read/write support for PowerPoint
    macro-enabled files: .pptm, .potm (OOXML/ZIP), and legacy .ppt
    (raw CFB). Same API surface as ExcelFile and WordFile.
  • WordFile.create_new(path) -- create a brand-new .docm from
    scratch without launching Word. Ships with ThisDocument and an empty
    Module1; opens cleanly with no repair prompt.
  • PowerPointFile.create_new(path) -- create a brand-new .pptm
    from scratch without launching PowerPoint. Ships with an empty
    Module1; opens cleanly with no repair prompt.
  • ExcelFile.create_new() now supports .xlsb in addition to
    .xlsm. The extension in the path controls which baked-in template is
    used.
  • pull_word(document, dest_dir) / push_word(src_dir, document)
    -- disk-based pull/push helpers for Word, mirroring the Excel pull()
    / push() API.
  • pull_ppt(presentation, dest_dir) / push_ppt(src_dir, presentation)
    -- disk-based pull/push helpers for PowerPoint.
  • scripts/bake_xlsb_template.py -- bakes the empty .xlsb template
    blob into _templates/__init__.py using the same splice pattern as the
    docm/pptm bake scripts.
  • Class module creation is now fully supported across all three hosts.
    When adding a class module via add_module(kind=other), callers must
    supply the full attribute header including
    Attribute VB_Base = "0{FCFB3D2A-A0FA-1068-A738-08002B3371B5}" (the
    universal VBA class CLSID); without it Office raises "Invalid procedure
    call or argument" on instantiation.

Changed

  • pyproject.toml description updated to reflect all three supported
    Office hosts; word, powerpoint, docm, and pptm added to
    keywords.
  • README fully updated: tagline, supported formats tables, 30-second tour,
    create_new section, and pull/push workflow section now cover Excel,
    Word, and PowerPoint.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track WilliamSmithEdward/pyOpenVBA

Get notified when new releases ship.

Sign up free

About WilliamSmithEdward/pyOpenVBA

All releases →

Related context

Earlier breaking changes

  • v3.0.0 Renamed the `AccessFile` class to `AccessReader`.
  • v3.0.0 Renamed `pyopenvba.access` module to `pyopenvba.access_read`.
  • v1.1.1 `add_module(kind=other)` now requires an explicit attribute header; automatic synthesis is disabled.

Beta — feedback welcome: [email protected]