Okay, I've managed to hack a "solution".
I went down the route of referencing the Save & Save As CommandBarButtons
and then assigning my own handler to their Click events. This worked because
the CancelDefault ref param *does* work. However, this does not address the
Ctrl-S keyboard shortcut. Application.OnKey could have worked had the
function I wanted to use been addressable in the COM Add-In I'm using. It
wasn't, as it was in a satellite assembly that is started dynamically. Yes, I
guess I could have re-jigged my abstract class to allow this assembly to
register its interest with the parent COM Add-In, but that seemed too much
re-engineering to get round a feature that MS are hopefully addressing ;-)
So, my terribly elegant solution is to leave the wiring exactly as it was
where I register a handler with the Workbook's BeforeSave event. I have left
my alternate Save methods there, and continue to set the (non-functioning)
Cancel ref parameter to true. My magic line of code to get rid of the pesky
dialog is... wait for it...
_myWorkbook.Application.SendKeys("{ESC}", true);
I may have to monitor whether setting the wait arg to true rather than false
gets me into trouble.
Here's hoping someone finds this of use :-)