Regarding the other aspect of your question where you have many different reports, with many different criteria.
My approach which I believe I found on smart Access years ago would also work but you'd have to create the system.
Basically each report would have a boilerplate piece of code (exactly the same code) in the report code module.
Now each individual reports layout would be different, and require a different record source. However it is likely that each record source would require identical data, like start date, end date, customer name. In other words variables which can be provided to order.
Although the report data layout is unique, each report contains repeating elements, in that each report will require a heading, possibly a date range, an author, typical generic information.
Although you have technically 100 individual, different reports you also have 100 reports with some very similar requirements and these could be handled with the generic module code for each report.
And again, you have 100 different record sources. You could choose the report from a combobox which would store the report name along with the SQL for creating the reports record source.
Have a pop-up form where you would select the name of the report. This would also provide the sql. The Pop-Up form would provide the variables and introduce them into the report SQL statement and then the report SQL statement and the other boilerplate elements would be passed into the report with the custom property methods already demonstrated.