Choosing the right Excel add-in approach
There are plenty of good ways to extend Excel. This page tries to give you an honest take on which tool to pick for your situation.
| Approach | Setup complexity |
Performance | Cross- platform |
Distribution ease |
Code reusability |
Learning curve |
Cost | AI assistance |
|---|---|---|---|---|---|---|---|---|
| xllify | Simple | Excellent | Yes | Easy | High | Gentle | $ | Strong |
| VBA | Simple | Moderate | Mac / Win | Workbook only | Low | Gentle | Free | Moderate |
| LAMBDA | Simple | Moderate | Yes | Workbook only | Moderate | Moderate | Free | Strong |
| Excel-DNA | Moderate | Excellent | No | Moderate | High | Moderate | Free | Moderate |
| PyXLL | Moderate | Moderate | No | Workbook only | High | Gentle | $$ | Strong |
| Office.js | Complex | Slow | Yes | Moderate | High | Moderate | Free | Strong |
| Python in Excel | Moderate | Network call | Partial | Workbook only | Moderate | Gentle | $$$ | Strong |
| C API / XLL | Complex | Excellent | No | Moderate | Moderate | Steep | Free | Limited |
Detailed comparison
Best for: Automating Office tasks, quick one-off scripts, legacy workbooks that already rely on VBA. If you know it and it does the job, there's no reason to change.
- Code lives in the workbook, hard to version or share as a library
- Macro security warnings put users off and require policy changes in corporate environments
- No real distribution story beyond "share the file"
- macOS support is deteriorating with each release
- No cross-platform runtime, no web support
- Code in files, versioned in git, tested before deploy
- Single installable file, no macros, no warnings
- Works on Windows, Mac, and the web from one build
Best for: Encapsulating formula logic you'd otherwise repeat across cells. Great for self-contained calculations that don't need external data or complex control flow.
- Logic stays in the workbook, no git, no testing outside Excel
- Can't call external APIs, query databases, or do I/O
- Sharing across workbooks is manual copy-paste
- Complex recursive LAMBDAs are hard to read and debug
- Requires a recent Microsoft 365 version
- Multi-threaded recalculation at native speed
- Cross-platform from the same source
- Distributable as a self-contained file independent of the workbook
- Testable locally before deploy
Best for: Teams already writing C# or F#, who need maximum performance or deep Excel integration (menus, ribbon, dialogs). Good RTD and async support via observables. Great documentation and responsive support on Google Groups. The best-in-class option for .NET developers on Windows. It really is excellent and highly recommended.
- Windows-only, no Mac or web support
- .NET toolchain required (SDK, NuGet, build config)
- No built-in AI assistant or high-level abstraction
- Cross-platform from the same source
- No toolchain to install, remote builds available
- AI assistant purpose-built for the task
Best for: Data-science and quant teams already living in pandas, numpy, and scipy. If your logic is already in Python and you need it in Excel, PyXLL is the most direct path. It's mature, well-regarded, simple to use, and highly recommended, with good support for RTD and async, and great documentation.
- Windows-only
- End users need Python installed, deployment is complex
- Commercial licence required per developer
- Python interpreter must be installed and loaded on the end user's machine
- Cross-platform, same add-in on Mac and web
- No end-user install required (XLL is self-contained)
- Free tier available
Best for: When you need rich UI (task panes, ribbon customisation, dialog boxes) or when you're building something that goes beyond custom functions. The officially supported direction from Microsoft.
- Custom functions run in a JavaScript sandbox, not in-process, slower for computation-heavy work; notably poor performance on macOS
- Requires hosting a web server and distributing a manifest
- Node.js project setup, manifest XML, SSL certificate for local dev
- Distribution typically via domain policy or the Office Store, deeply tied to the Microsoft ecosystem
- For pure custom functions: much simpler setup
- Native XLL performance on Windows
- Single-file XLL distribution, no hosting required
Best for: Exploratory data analysis, visualisation, and statistics directly in a workbook without leaving Excel. The matplotlib and seaborn integration is genuinely useful for analysts.
- Code runs on Microsoft's servers, every recalculation is a network round trip
- Not deterministic (Microsoft document it as potentially non-deterministic)
- Requires a Microsoft 365 plan that includes the feature (not universally available)
- No way to package or distribute the result as a standalone add-in
- Per-session usage limits
- Runs locally, no internet connection required after install
- Deterministic by design
- Distributable as a standalone add-in
- No per-use cost or usage limits
Best for: xllify's own runtime is built on this. If you need absolute control over every byte, non-standard Excel integration not supported anywhere else, or you're maintaining a legacy XLL, this is the level to work at.
- C/C++ only, no higher-level language
- Manual XLOPER memory management, type conversion, and error handling
- Windows and MSVC only, no cross-platform build
- No significant API changes since Excel 2013, documentation is sparse
- Write in Luau or describe in plain English instead of C/C++
- All XLOPER handling, registration, and memory management handled automatically
- Remote builds, no MSVC required
Spot anything wrong? Let us know.