Tom
Many thanks for your comments on this query, which confirmed my level of ignorance.
objXl is declared as a private variable at the top of a module that contains several procedures that are called from the main procedure in the module and which also use objXl. It is declared, as you suggest, as Dim objXl as Excel.Application.
I am by no means sure when or how the MaxLocksPerFile was reset to default of 9300. I just know that I did not make the change back. Possibly it came from a Windows update.
Your comment about decompile is probably correct. I had done a compact and repair to try to sort out the problem, without success, and I had wrongly though that that, (and making changes to the code) caused a decompile because "Compile" was again shown in the VBA Debug menu. The DB in still being developed, so I had several previous versions going back some weeks. I checked them, and from about a week back they all compiled correctly without shifting the Excel reference up. The only changes since the last successfully compilable version were the addition of a new form containing some code. Your comment that it is not advisable to move added references up above the standard four caused me to move it back down to its original position, and to my relief the current version still compiles successfully. From that it seems likely that your suggestion that the move caused a decompile is correct, and that something in my last few versions has caused a problem, that unfortunately will now be untraceable.
So thank you for your help, and I am now somewhat wiser on the topic of decompiling.