Bored and had time to kill, so here is a tip I learned from Alnoor. If you need a button to be enabled even when a record is not loaded, then configure the button as a DDE link instead of an MS Script link. Use the ""Edit Script"" button and then in the ""Program"", enter ""*PERFORM"", in the the ""Topic"", enter the path to a text file containing provideX code. This has a slight drawback as you can't code your solution in VBScript as I've not yet figured out how to dynamically point the button to a VBScript file using the button's Tag$ variable, it seems the CMWSDA program will always look at the M4L record for the button to determine the script configuration. At least that is how it is behaving in my v2015 VM. Anyway, provideX isn't that bad and I've attached a pvc file showing how you could accomplish this, complete with a progress bar and also checking if the user is on a record, you wouldn't want to move from the record if they haven't saved a bunch of changes yet.
On another note, if you absolutely want to use VBScript, then you could use another approach to enable a MS Link button even when a record is not loaded. This requires a Post-Load UI event script (an additional dependency). I've attached a VBScript called enable_buttons.vbs. This file allows you to specify the groups and and controls using arrays and then looping through them and executing the appropriate commands. If you only want to enable a single button, then look at the enable_button.vbs file for a much simpler example.