AT
Anas Tabit — Process Automation Consultant
6+ years automating workflows at Citi, J.P. Morgan & HSBC. Specialises in Excel VBA, Power Automate & Python. LinkedIn →

Every few months I get a version of this question from a finance or operations team: "Our VBA macros are getting unwieldy — should we switch to Python?" Sometimes the answer is yes. More often, the answer is "not entirely." This guide gives you the practical framework to decide, based on what your workflows actually look like — not on technology hype.

What VBA actually is

Excel VBA (Visual Basic for Applications) is a programming language embedded directly inside Microsoft Office. It was purpose-built for one job: automating tasks within the Office suite. You write VBA code inside Excel itself, and it runs with direct, native access to every cell, formula, chart, pivot table, and formatting option in your workbook.

VBA does not require anything to be installed separately. If someone has Excel, they have VBA. That's a meaningful advantage in corporate environments where IT governance moves slowly. The language is verbose by modern standards — variable declaration, explicit loops, COM object references — but it has been doing this job reliably since the early 1990s, and every financial institution in the world has thousands of VBA files in production right now.

What Python actually is

Python is a general-purpose programming language with an exceptionally rich ecosystem of libraries. It was not built for Excel — but a set of well-maintained libraries has made it extremely capable at working with spreadsheet data. The critical difference is that Python operates outside Excel: it reads and writes files programmatically, processes data in memory, and can connect to virtually anything — APIs, databases, cloud storage, other applications.

Python requires a runtime environment to be installed (Anaconda, Python.org, or a cloud-hosted notebook environment). In a team context, this means dependency management, environment setup, and some level of IT involvement. That overhead is trivial for engineering teams and real for finance teams who just want to run a report.

The real-world difference in one sentence

VBA automates what happens inside a running Excel file. Python automates what happens to data before it reaches Excel — and increasingly, everything that happens after it leaves Excel too.

When VBA is the right choice

After deploying automation across Citi, J.P. Morgan, HSBC, and Société Générale, the pattern is consistent: VBA wins when the workflow is Excel-native from start to finish.

Example: use VBA

A fund accounting team runs a monthly reconciliation report: data from three internal source tabs is consolidated, variance calculations are applied, cells outside tolerance are flagged in red, a pivot summary is auto-generated, and the workbook is saved as a timestamped PDF for the audit trail. Everything happens within Excel — VBA is the right and obvious tool.

When Python wins

Python becomes the better choice the moment your process steps outside the Excel boundary, or when data volumes or transformation complexity start to genuinely strain VBA.

Example: use Python

A treasury team needs to pull trade data from three different system APIs every morning, join it against a reference dataset in SQL Server, calculate net exposures, flag limit breaches, write the results to SharePoint, and send a summary email. This is a Python job end-to-end — VBA cannot reach any of those systems cleanly.

Comparison at a glance

DimensionExcel VBAPython
Best forExcel-native automationData pipelines, multi-source, API
Data volume ceiling~100k rows comfortablyMillions of rows easily
Excel formatting controlNative & preciseGood via openpyxl/xlwings
Setup requiredNone — included in ExcelPython runtime + libraries
API / database connectionsLimited / awkwardExcellent
Version control (Git)Very difficultStandard practice
Runs without Excel openNoYes (server-side)
Maintainability for non-devsEasierSteeper learning curve
Community & librariesOffice-specificEnormous ecosystem
SchedulingTask Scheduler (Windows only)Cron, cloud functions, Airflow

The migration path — you don't have to choose

One of the most common mistakes I see is treating this as an either/or decision that requires a wholesale migration. It almost never is. Most finance teams get the best results from a phased, additive approach.

The practical path looks like this: identify the specific bottlenecks in your current VBA workflows. Is it data volume? Is it the need to connect to an external system? Is it maintenance burden? Then introduce Python precisely where those bottlenecks are, while leaving the rest of the VBA infrastructure intact.

Migration makes genuine sense when data volumes or workflow complexity have definitively outgrown what VBA handles well. A typical timeline for a properly scoped migration is 2–8 weeks per workflow, depending on complexity. Simpler report scripts can be rewritten in days. Multi-step pipelines with exception handling, scheduling, and monitoring take longer. The phased approach significantly reduces risk compared to a big-bang rewrite.

The "both together" pattern

The most powerful pattern I've deployed across financial services teams is Python as the processing engine, VBA as the Excel output layer. Here is what that looks like in practice:

  1. Python pulls data from the source system (database, API, file server), performs all heavy transformations, and writes clean structured data to a staging xlsx file
  2. A VBA macro picks up that staging file, applies all the formatting — conditional highlighting, charts, pivot tables, branded layouts — and generates the final report
  3. Optionally, Python then picks up the final file and distributes it via email, SharePoint, or an API endpoint

This pattern gives you Python's data muscle and VBA's Excel intimacy in the same workflow. Neither tool has to do what it's bad at. Teams that maintain VBA skills can still own the Excel output layer without needing to learn data engineering. Data engineers can own the pipeline without needing to understand Excel's object model.

Not sure which tool fits your specific workflow?

A 15-minute call is usually enough to give you a clear recommendation and rough build estimate. No commitment required.

Book Free 15-Min Call

Common mistakes teams make when choosing

Having advised teams across multiple institutions on exactly this decision, the same errors come up repeatedly:

The honest answer

If your workflow is self-contained within Excel, your team maintains it, and data volumes are under 100k rows — VBA is the right tool and you should not fix what isn't broken. The maintenance cost of introducing Python where it isn't needed is real.

If your workflow touches external systems, processes large data volumes, needs proper version control, or needs to run on a server without anyone logged in — Python is the right engine, possibly working alongside your existing VBA output layer rather than replacing it.

The framing of "VBA vs Python" is almost always wrong. The right question is: which layer of this workflow needs which tool? That question I can usually answer in a 15-minute conversation once I understand what the process actually does. If you'd like that conversation, the calendar is open.

Next step

Not sure which tool fits your workflow?

Book a free 15-minute audit. Tell me what your process does — I'll tell you whether VBA, Python, or Power Automate is the right fit, and what it would take to build it.

Book a Free 15-Min Audit → See the $500 Diagnostic