I welcome solutions that serve this need for "better than excel" without succumbing to its pitfalls but I'm not holding my breath. Even this article just outlines a solution that could be implemented in Excel with a little extra knowledge from the user, making it "no better than excel" for the specified use case.
On a turing-completeness spectrum, they live on the opposite half of where VBA+formulas stand proudly. Therefore, it is no surprise that for anything beyond "out-of-the-box", it is expected that an experienced IT developer/consultant will be needed to figure something out.
A decent reason to disallow custom code is that these platform are to be upgraded regularly, yet every major version seems to bring its lot of breaking changes while my decade-old macros still run like a champ. Oh the irony.
It works well - we have successfully applied this to about 20 really critical spreadsheets for functions such as pricing, deal valuation, risk analysis, and even for engineering analysis. Users simply use a web app (that can look like the underlying spreadsheet - or not). The system is also integrated with SAML, so authentication is there, and you can also integrate the apps you create with 3rd party systems - we are looking at launching Excel-based pricing apps directly from SF.com, for example.
Anyway, the site is https://easasoftware.com/ - there are some vids there which probably do a better job of explaining it than I have done here. It's not just about putting an app on top of a spreadsheet, but really putting an app on top of processes that involve spreadsheets. And you can use things other than Excel as the logic module, like Matlab, R, Python - in fact we are dabbling with using EASA to deploy ML models created in Python.
See basically "no dev needed", perfect for old timers who can't code. Or not.
private void placeAnOrder() { listSheet.unprotect(""); Range costCell = spreadsheet.getRangeByName(exchangeSheet.getSheetId(), COST_CELL); if (!costCell.toString().isEmpty()) { Double cost = costCell.getRangeValue().getCellValue().getDoubleValue(); if (cost > 0) { Double amount = spreadsheet.getRangeByName(exchangeSheet.getSheetId(), "amount").getRangeValue().getCellValue().getDoubleValue(); Range orderTable1stRow = spreadsheet.getRange(BOOK_NAME, listSheet.getSheetId(), "C6:G6"); orderTable1stRow.getEntireRow().insert(Range.InsertShiftDirection.ShiftDown, Range.InsertFormatOrigin.RightOrBelow); orderTable1stRow.setValues(DateUtil.getExcelDate(new Date()), cost, destinationCurrency, destinationRate, amount); } } listSheet.protect(PROTECTION); }
And when I'm referring to "old timers", I'm referring to users, not the developers. Why would a user need to understand that snippet? Are we even talking about the same thing?
> "C6:G6"
I think the bigger problem is it's not going to be a developer maintaining this. It's going to be a pretty literate VBA user and nothing will go wrong. Inevitably they will move on and pass over the code, the 'user application' to someone who will feel reassured they can read it too, but then when it comes time to make a change, they won't be able to. And then it'll be passed over again and become a black box.
A developer (if there's funding) will not like picking up something undocumented, then it becomes a project (less funding). The process, a magical black box that may or may not have stopped working also loses documentation. Governance is lost. Particularly but not exclusively in financial applications, potential for misuse and loss, either accidentally or fraudulently, has been introduced.
So, the above looks (mainly) OK to me. But only because I know to insist on maintaining a manual backup or otherwise maintaining knowledge of how the black box works.