It seems you're using the table name to qualify the field names in the SELECT clause. Consider using an alias for the table name, and then you can qualify the field names with that alias instead. That approach would mean you could reuse the same query and only need to change the table name in the FROM clause.
Something like this ...
strSQL = "SELECT t.f05, t.f10, t.f23" & vbCrLf & _
"FROM [YourTable] AS t;"
I'm unsure how neatly that suggestion meshes with the rest of your code; it sort of depends on where and how you're using the SELECT query. But if it's used to open a recordset, for example, you could use Replace() to substitute just the table name ...
Dim rs As DAO.Recordset
Dim db As DAO.Database
Set db = CurrentDb
Set rs = db.OpenRecordset(Replace(strSQL, "YourTable", "a100"))
This would be easier if Access let you use a query parameter for the table name. Unfortunately, Access does not allow that flexibility.
As a side point, it seems you may have multiple tables with the same structure. In many cases, a better design is to use a single table with an additional field which you can use to distinguish between the data subsets which were formerly contained in the separate tables. If such a redesign is possible in your situation, you may find the query task is simpler afterward.