The New keyword is the approach you have to take.
But the report then depends on the variable you created. When the routine
exists, the variable is cleaned up, and so the report is closed. Since this
all happens very fast, you just see the report flash and disappear.
You therefore need a way to manage the various instances. You can do that
with a custom collection. But there is a problem. The whole point of opening
multiple instances of the same report object is that you want to filter them
differently. Since you are using the New keyword to generate them, there is
no WhereCondition like OpenReport has, so you must programmatically set the
Filter of each instance in its Open event. The trouble is that there is a
bug in how Access applies the filter, so it is likely to apply the filter to
the wrong instance. There is therefore no way to use multiple instances of
the same report reliably in Access.
This problem does not arise with forms, so if you are interested in the
technique of multiple instances, see:
Managing Multiple Instances of a Form
at:
http://allenbrowne.com/ser-35.html
For info about the Access bug:
Incorrect filtering of forms and reports
at:
http://allenbrowne.com/bug-02.html
The filter bugs that apply to forms are fixed in Access 2007. I have not yet
tested if the report problems are fixed in the new version yet. If you want
to test it for yourself, you can download the beta from:
http://microsoft.com/office/preview/beta/