If it can be reasonably assumed that the number of columns to be retrieved is fairly static and that the rows may grow/shrink then querying against a 'named range' with a workbook scope may be the best method.
You've provided no sample data but let us further assume that the data block goes from column A to column N and that while there may be some blank fields, column A always has a part number/serial number/identifier of a numeric nature. The data resides on a worksheet named Sheet2.
Go to Formulas ► Defined Names ► Name Manager. Start a New named range. Use myData for the Name:, make sure that the Scope: is Workbook, not Worksheet, and use the following for the Refers to:
=Sheet2!$A$2:INDEX(Sheet2!$N:$N, MATCH(1e99, Sheet2!$A:$A))
If the column you choose to define the extents of your data was alphabetic (aka Text) in nature, that formula would,
=Sheet2!$A$2:INDEX(Sheet2!$N:$N, MATCH("zzz", Sheet2!$A:$A))
Click OK to create the new named range then Close to close the Name Manager. Test your defined data range by tapping F5 and typing myData into the Reference: box and clicking OK.
If everything has worked according to plan, your data range should be selected. You should be able to query against that rather than a worksheet name or worksheet range of cells.
The following may be of help in designing your query: Using excels named range in a sql string in VBScript. There are numerous other resources that a search will produce.