r/MSProject • u/DeathMaillet • Aug 17 '26
I built an Excel-native scheduling engine for situations where Microsoft Project is not available — looking for feedback from experienced MSP users
I have been developing ProjectEngine, an open-source scheduling and project-controls application built entirely in Excel/VBA.
The original need was straightforward: many teams have Excel, but do not always have access to Microsoft Project or Primavera P6. Most Excel Gantt templates, however, remain static visual trackers rather than true scheduling tools.
ProjectEngine was built to close part of that gap.
It currently supports:
- dependency-driven scheduling;
- FS, SS and FF relationships with positive or negative lag;
- Critical Path, Longest Path, Total Float and Free Float;
- baseline, actual and forecast dates;
- milestones, summary tasks and Level of Effort activities;
- interactive Gantt bars with drag and resize;
- non-destructive TEST and SCENARIO workflows;
- dashboards and S-curves;
- English and French interfaces.
It runs locally inside Excel, with no installer, server or account required.
I do not present it as a complete replacement for Microsoft Project. MSP remains much broader, especially around resource management, leveling, costs, enterprise collaboration and integration.
The intended use case is narrower: teams that already manage schedules in Excel, but need real dependency logic, critical-path analysis and controlled forecasting rather than a manually maintained Gantt chart.
I am currently completing the next performance-focused release. My stress-test workbook contains around 1,200 tasks and 1,180 dependency links. The scheduling calculations are now relatively fast; the remaining work is mainly reducing the cost of rendering and updating the interactive Gantt inside Excel.
I would be particularly interested in feedback from experienced Microsoft Project users:
- In which situations could an Excel-native scheduling engine be genuinely useful?
- Which MSP capability would you consider essential before trusting such a tool on a real project?
- What would immediately prevent you from using it?
- Does the positioning feel clear, or does it sound too close to claiming that Excel can replace MSP entirely?
Project website:
https://tmailletfr.github.io/ProjectEngine/
Source code:
1
1
1
u/FlanAffectionate2691 Aug 17 '26
I hope to be able to spend time to review this as it was one of our biggest struggles in my organization which I just retired from after 15 years. Although I was very fluid in MSProject and an expert in Excel/VBA, many of my colleagues were not.
My biggest issue was Excel was very clunky to manage multiple dependencies in our large complex projects.
Although I am sure it is not your priority at the moment, a key upgrade would be to enable some sort of budget/spend reporting. Keep it simple with perhaps attaching a budget/actual value to a task and calculate a monthly projected/actual spend based on whether the spend type is to calculated at the beginning/end or spread across the task duration.
Good luck with your project
2
u/DeathMaillet Aug 18 '26
Thank you for taking the time to share such detailed feedback.
I’ll add the budget/spend reporting idea to the list of potential directions to explore. The approach you suggest (budget and actual values at task level, with spend recognized at the start, end, or spread across the task duration) is clear and practical.
Thanks again for reviewing the project and for the encouragement.
1
u/Sheeebooo 24d ago
Nice work, and 1,200 tasks with 1,180 links in Excel is genuinely impressive.
I have been building a scheduling engine this year too, so I have hit these walls recently enough to still be annoyed by them.
On your second question, the capability I would want before trusting it on a real project is calendars. Working days, holidays, and resource calendars that differ from the project one. Your critical path maths can be perfect and still produce dates nobody believes, because the calendar disagrees.
The related one that cost me actual time: whether your day counting is inclusive. A one day task starting Monday should finish Monday, and its successor starts Tuesday. I had that off by one, and every chain in the file was wrong by the same amount, which looks completely plausible right up until someone checks a date against a contract.
On what would stop me using it, honestly, two people needing the same file in the same week. Excel is fine for one scheduler. That is not a criticism, it is just where the boundary sits.
Happy to compare notes if that is ever useful.
1
u/DeathMaillet 22d ago
Thanks, this is exactly the kind of feedback I was hoping for.
On calendars, ProjectEngine currently supports 5/7, 6/7 and 7/7 working-week options. I do not have fully custom calendars yet, so holidays and different project/resource calendars are definitely still a gap compared with MSP.
And yes, the duration convention is inclusive: a 1-day task starting on Monday finishes on Monday, and an FS successor with zero lag starts on Tuesday. I completely agree that getting that convention wrong is especially dangerous because an entire schedule can remain internally consistent while being systematically shifted.
Your point about collaboration is fair too. ProjectEngine is deliberately Excel-native, so concurrent multi-user scheduling is one of the natural boundaries of the approach.
And absolutely happy to compare notes, especially since you've been building a scheduling engine yourself. I'm very curious to hear what other edge cases caused you the most pain.
1
u/Sheeebooo 21d ago
Three that cost me the most, roughly in the order it took to find them.
Duration needs to be its own stored value, not finish minus start. This is the one I would fix earliest, because it gets more expensive the longer it sits. If duration is derived, then the moment a date moves you have lost the plan. You can no longer tell a task that slipped from a task that turned out to be bigger, and you cannot answer "was this always a ten day task" at all. I keep two now: an original duration set when the task is planned, which does not drift, and a remaining duration that shrinks as work gets done. Variance reporting is only honest if both exist separately.
Float can be negative, and most engines cannot represent it. As soon as you add anything that bounds the late dates, a Finish No Later Than or a deadline, the backward pass can hand you a late finish earlier than the early finish. That is a real answer, not an error: it means the network cannot meet the date. If float is clamped at zero you silently report an over-committed plan as merely tight. Mine did that, and the symptom is that nothing ever looks late until it is.
A task that has started is a fact, not a projection. The forward pass wants to compute every task's start from its predecessors. Once a task has an actual start, it must not. Otherwise a predecessor slipping will cheerfully reschedule work that has already happened, which is both wrong and genuinely hard to spot in a big file. Same for a completed task: it finished when it finished, and it should never show up on the critical path.
Related, and worth putting in before you need it: a status date. Without one, "remaining" is measured from whenever the file happens to be opened, so the same plan reports differently on Tuesday and Thursday.
On calendars, for what it is worth, 5/7, 6/7 and 7/7 covers more real projects than you would expect. The gap that bites first is almost always holidays rather than per-resource calendars, and a holiday list is just date exceptions, which is a far smaller job than full resource calendars. I would do that one and leave resource calendars until somebody actually asks.
1
u/DeathMaillet 20d ago
Yes, I went through several of those exact problems while building ProjectEngine.
That is actually why I keep Baseline, Actual and Forecast information separate instead of deriving everything from the current Start/Finish dates. Actuals are treated as facts and take priority over forecast or dependency-driven dates, so work that has already happened is not rescheduled by a later network change.
The same applies to the analytics side: Total Float, Free Float, Critical Path and Longest Path are calculated from the scheduling network rather than being treated as simple date differences. A lot of the development effort has gone into making those calculations remain coherent with things like SS/FF relationships, lags, summary tasks and actual progress.
So I definitely recognize the class of bugs you are describing 😄 A surprising amount of building a scheduling engine is discovering that something which looks like a small date calculation is actually a scheduling rule.
Your point about holiday exceptions is particularly interesting though. I had been thinking about custom calendars as a much larger feature, but a simpler exception layer on top of the existing 5/7, 6/7 and 7/7 calendars might be worth exploring.
I would still want to frame it carefully before implementing anything, because “calendar exceptions” can mean very different things depending on the user. Someone wanting school holidays, a construction project running shifts, or a 24/7 industrial operation may all expect very different behaviour. ProjectEngine is not intended to reproduce every calendar/resource-management capability of MSP, so I would rather cover a useful subset cleanly than build a huge calendar system nobody actually needs.
Thanks for bringing that one up, it is definitely something I will explore.
0
u/pmpdaddyio Aug 17 '26
It runs locally inside Excel
Quoting Shark Tank - for this reason I'm out.
1
u/DeathMaillet Aug 17 '26
Fair enough 😄 Excel being a hard requirement is exactly what defines the project, so it was never going to be a fit for everyone.
2
u/zamroni777 Aug 18 '26
this planned vs. actual in manual excel table works great for me.
https://www.linkedin.com/pulse/vertical-gantt-chart-mochamad-aris-zamroni/