Guide / Excel and VBA

Inventory systems in Excel with VBA: the honest limits

A VBA inventory system is a real achievement and a real ceiling: one truth, one user, one accidental overwrite. What it handles, what breaks, and how to migrate without losing your data.

The key facts

  • A VBA inventory workbook is a genuine single-user system: forms, validation, macros for movements — impressive and often sufficient at small scale.
  • The ceiling is structural: one file means one truth, and Excel cannot host two users' simultaneous, auditable writes.
  • The migration trigger: the second location, the second user, or the first quantity nobody can explain.
  • The migration path is kind: spreadsheet import is a first-class feature in real systems — your columns, your product list, into a record with guardrails.
  • The full picture: how the inventory record works is the hub page for everything above.
Diagram — index of this pageThe ground this page covers
  1. 01The key facts
  2. 02What a VBA system genuinely handles
  3. 03Where the ceiling is — exactly
  4. 04Migrating without losing your work

What a VBA system genuinely handles

Give the VBA builder their due: a well-built workbook — a products sheet, a movements sheet, UserForms for receipt and issue, data validation, macros that write movements rather than overwrite totals — is a real application. It beats the unstructured spreadsheet most businesses start with, and it teaches exactly the right lesson: record movements, derive quantities. If the builder in your business did that, they independently arrived at the same architecture production systems use (the Java-builder angle names it formally).

Where it works, it works because the volume is one user's attention: a shop counter, a single store, a stock list reviewed weekly. Many businesses run this way for years, and there is no dishonest urgency here — if nobody else touches the file and volumes are slow, it is fine.

Genuine BSimple screenThe BSimple stocktakes index at the count and review step.
The BSimple stocktakes index at the count and review step.

Where the ceiling is — exactly

Concurrency. Excel cannot host two users writing the same sheet at once. Shared workbooks and OneDrive co-authoring are workarounds with real failure modes — the second writer's macro either errors or, worse, the write happens and the movement history forks.

Integrity. A workbook has no guardrails: no way to stop an issue below zero, no audit trail beyond "the cell changed", and one accidental sort-overwrite from a bad day. Data validation is a suggestion, not a gate.

Reach. The warehouse floor does not have the workbook open — scanning a barcode means a laptop and a macro, not a phone or tablet at the shelf. And quantities do not reach a website, a portal or the bookkeeper without someone emailing the file.

Each of these alone is tolerable; together they define the moment the business needs a record rather than a file. The Excel-only version of this problem and the spreadsheet-to-cloud pattern cover the earlier stages.

DiagramDiagram: spreadsheet data imported into live stock records.
Diagram: spreadsheet data imported into live stock records.

Migrating without losing your work

The good news: a disciplined VBA system is the best possible preparation for a real inventory system, because your columns are already a data model. The migration is: export products and current quantities (or better, the movements history), import into the system, run a stocktake to establish truth, and record movements there from day one. BSimple — built by the people writing this, so weigh that — treats spreadsheet import as a first-class feature: products in, live quantities across locations, guardrails on bad entries, and barcode scanning when the floor is ready. Accounting stays with Xero or MYOB; US integrations are rolling out.

Run the trial with your actual workbook open beside it — the import is an afternoon, and the honest comparison is your macro doing less and less.

DiagramOrderPick and packInvoiceXero
Diagram: Order → Pick and pack → Invoice → Xero — how this work moves through BSimple.

Frequently Asked Questions

Can Excel with VBA be a real inventory system?

A real single-user inventory tool, yes — and a good one beats a bad cloud system. It stops being a system when others need the same truth simultaneously, quantities must be guarded, or the record must reach beyond the workbook.

How do I stop staff overwriting formulas in the workbook?

Protection and structure — but honestly, the more effective answer is that protection in Excel is a speed bump. If the integrity question is serious enough to ask, the system has outgrown its medium.

What is the first feature a real system adds over VBA?

Shared, simultaneous truth: every user on one live record with an audit trail. Guardrails and barcode support follow immediately, but the shared record is the leap — everything else is refinement.

Will my product list transfer without re-typing?

Yes — import from spreadsheet is standard, and a disciplined VBA workbook exports cleanly. The stocktake on day one establishes the baseline; after that, movements live in the system and the workbook retires honourably.

Can we keep parts of the workbook (reports, dashboards)?

Often, yes — reports can read from exports or an API rather than the live record. Keep the truth in one system; the workbook becomes a reporting surface at most, not a second record.

BSimple

Get started with BSimple