Geoff,

Use an Access form as the user interface to enter the variables, not an Excel spreadsheet. The query then can reference the fields on the form, like
WHERE Readings.Palace=Forms!Myform!f_palace and Readings.Star = Forms!Myform!f_star

This is much easier (seen from the Access side at least) then peeking around in a spreadsheet with OLE. I think it should become something like
WHERE Reading.Palace = LookInExcel("My spreadsheet","My worksheet","A7") where you have to write the function LookInExcel.

The whole setup, using three MS Office programs, seems rather complicated. You might like to tell why you think it's needed or optimal.

Kees