Inlay takes a range from any modern workbook and draws it in a drafting view or a legend as real Revit geometry — filled regions, text notes and detail lines, cell for cell, with the fonts, fills, merges and borders intact. Not an image, not an OLE object: it prints exactly as it displays. The link lives inside the model, so the whole team sees it; press Refresh and Inlay tells you — by content, not by file date — which tables Excel has left behind, and one click redraws them in the same view, at the same anchor.
Every project carries Excel tables that must appear on sheets — finishes schedules, area summaries, code legends. The usual routes are a pasted image that blurs at print, or a retyped table nobody dares touch. Either way, when the workbook changes, the sheet doesn't — and nothing tells you.
Inlay has two halves. You link a workbook range and see exactly what will be drawn — that is the input. Then Draw turns it into pinned Revit geometry that Refresh keeps honest — that is the output.
Tap Input or Output to isolate a half — the other collapses.
Inlay reads the workbook file directly — no Excel install, no export ritual — and shows you, cell for cell, exactly what will be drawn before anything is drawn in the model.
Point Inlay at any .xlsx or .xlsm — it reads the file directly, even while a colleague has it open in Excel. Pick a sheet and the dialog proposes its used range; type your own and it counts the cells as you go, warning past a few thousand and refusing outright past 50,000, because every cell becomes several Revit elements. Then choose the targets: a drafting view Inlay creates for you, a legend that already exists, or both.
Select a row and the right-hand pane renders exactly what will be drawn — the same fonts, fills, alignments, merged headers and borders, with hidden rows and columns already collapsed, under a summary of sheet, range and size. Formulas arrive as their formatted results, and Excel's “General” alignment is honoured, so numbers land right-aligned exactly as they do on the printed sheet.
"Finishes"!A1:D24DraftingLegendNot drawn"Codes"!A1:D18DraftingLegendUp to date"GIA"!B2:F14DraftingLegendUp to date| Internal finishes | |||
| Code | Room | Floor | Area m² |
| FL-01 | Main Lobby | Terrazzo | 142.6 |
| FL-02 | Office 1.04 | Carpet tile | 38.2 |
| FL-03 | Stair core | Sealed concrete | 24.9 |
Numbers arrive as their displayed text, so a currency format or two decimal places survives the trip rather than a raw double. Theme colours resolve through the workbook's own theme, tint included, instead of collapsing to black. Excel's General alignment is taken from the cell's type — numbers and dates right, booleans centred, text left. Hidden rows and columns are skipped exactly as printing skips them. And what cannot cross is named plainly: images, charts, and anything Excel paints by conditional-formatting rule, with dashed borders arriving solid.
One named transaction — “BIMIO Inlay — Draw” — writes the geometry and the link record together, so a single Ctrl+Z takes back both.
What Draw leaves in the model is native, pinned and printable. And because the link record travels inside the model, every status pill tells the whole team the same truth.
Draw creates a drafting view named after the workbook, at 1:1 — one Excel point equals one millimetre on paper — and reproduces the table as native detail geometry: a filled region per coloured cell, a text note per value, measured and centred against its cell rather than estimated, and one clean detail line per border run, the heavier weight winning where Excel disagrees with itself. In a legend, you click once to place the top-left corner — and that anchor is remembered for good. Every element lands pinned, so a stray nudge gets Revit's warning before it moves anything.
| Internal finishes | |||
| Code | Room | Floor | Area m² |
| FL-01 | Main Lobby | Terrazzo | 142.6 |
| FL-02 | Office 1.04 | Carpet tile | 38.2 |
| FL-03 | Stair core | Sealed concrete | 24.9 |
Every type Inlay needs is namespaced and reused: one text note type per distinct font, size, weight and colour, one filled region type per fill colour, one Lines subcategory per border weight and colour. Each carries the FJV_Table_ prefix — FJV_Table_L_ for the line styles — so they sort together in the browser and purge together when a table goes. A redraw adopts whatever a previous draw left behind, so refreshing the same table twenty times adds nothing to the type list.
Refresh checks every linked file. Untouched size and date? Up to date, without even opening the workbook. Changed? Inlay re-reads the range and compares a fingerprint of content and formatting against what it drew — so a colleague saving the file unchanged raises no alarm, and a genuine edit turns the pill amber: Excel pending. Update all pending redraws every stale table in its own view, at its own anchor. And the pills never flatter: a deleted view says Missing in model, a locked file says Can't read, a moved file says Source missing — with Relink to point at the new path, keeping views and anchors.
"Finishes"!A1:D24DraftingLegendExcel pending"Codes"!A1:D18DraftingLegendExcel pending"GIA"!B2:F14DraftingLegendUp to date"FR"!A1:C30DraftingLegendSource missing| Internal finishes | |||
| Code | Room | Floor | Area m² |
| FL-01 | Main Lobby | Terrazzo | 142.6 |
| FL-02 | Office 1.04 | Carpet tile | 38.2 |
| FL-03 | Stair core | Sealed concrete | 24.9 |
The heavy part — parsing workbooks — never runs on Revit's thread. Opening the panel reads only cheap model facts and hands the parsing to the background with a progress bar; a drifted workbook is fingerprinted once per file version, not once per Refresh. Tick any subset and Draw selected works through them in turn. The summary counts honestly — updated, failed, and which rows to look at — and a failed draw is never rounded up to a green pill.
Every link — file, sheet, range, targets, anchors, drawn elements — is stored inside the Revit model itself. Synchronise, and the whole team opens Inlay to the same list with the same statuses; it survives Save As, detach and eTransmit, and the model being moved to another folder. And Inlay would rather stop than guess: with worksets closed it refuses to save state it cannot verify — the refusal lands in the status bar, in its own words — instead of quietly forking the team's table links.
"Finishes"!A1:D24DraftingLegendUp to date"Codes"!A1:D18DraftingLegendUp to date"GIA"!B2:F14DraftingLegendUp to date| Internal finishes | |||
| Code | Room | Floor | Area m² |
| FL-01 | Main Lobby | Terrazzo | 142.6 |
| FL-02 | Office 1.04 | Carpet tile | 38.2 |
| FL-03 | Stair core | Sealed concrete | 24.9 |
Inlay files a tile into BIMIO's Dashboard, headlined by the worst thing it finds and backed by four figures: linked tables, how many need refreshing, broken sources or ones not drawn yet, and how long ago anything was last drawn. It reaches that verdict cheaply — file existence, size and timestamp, plus a handful of element probes — without opening a single workbook. Broken outranks stale, because a missing source is not one refresh away from being fixed.
5 tables need attention: 3 to refresh from Excel, 2 not drawn yet.
Inlay ships on the Data panel of the BIMIO tab. Link the range, draw it once, and let Refresh tell you — honestly — when Excel has moved on. Revit 2024–2027, full trial, no card.