AFAIK, a saved Access query object cannot be set up to change the fields that are selected (I have tried).
VBA can modify a saved Access query object using QueryDefs collection or delete query and resave it with different structure (I do this). Examples:
Code:
Private Sub btnRun_Click()
If IsNull(Me.tbxFilter) Then
Me.tbxFilter = "SELECT * FROM ProjectRatesMainSub WHERE grading Like '*' " & GetMisc() & " ORDER BY projects.proj_num, grading;"
End If
Dim qdfUser As DAO.QueryDef
CurrentDb.QueryDefs.Delete ("UserQuery")
Set qdfUser = CurrentDb.CreateQueryDef("UserQuery", Me.tbxFilter)
DoCmd.OpenQuery "UserQuery"
End Sub
Private Sub btnExcel_Click()
Dim qdfUser As DAO.QueryDef
CurrentDb.QueryDefs.Delete ("UserQuery")
Set qdfUser = CurrentDb.CreateQueryDef("UserQuery", Me.tbxFilter)
DoCmd.OpenQuery "UserQuery", , acReadOnly
DoCmd.RunCommand acCmdExportExcel
End Sub
Or maybe you don't want to change the fields that are selected in the query, just change the filter criteria. I use VBA to construct WHERE clause and then apply it to the Filter property of form or pass it to a form/report with WHERE CONDITION argument of DoCmd.OpenForm (or OpenReport). Review http://allenbrowne.com/ser-62.html