The VB method to save a file in RTF or TXT is fairly simple:
DoCmd.OutputTo acOutputReport, "Report Name", acFormatRTF (or acFormatTXT), strMyReportName, False
You'll need to come up with a naming scheme to set 'strMyReportName' with. See the help file for OutputTo for more information.
The problem is integrating the code into the report. If there is an event that differentiates between printing a report and formatting it for preview, I haven't found it. You could tie this code into the print button on the menu bar. However, if the client selects File, Print, then the script won't be called. Here's the best work around I could come up with. Though if anyone knows a better way please speak up. I'd like to know myself.
Tie the code above into the print button on the menu bar. Also include a public variable (I'll call it bolPrinted for the sake of the example) that is set to true if the script runs. Then, in the reports 'On Close' event do something like:
If bolPrinted = True then
Response = MsgBox ("This report has not been saved to disk. Would you like to save it now?", vbYesNo, "Save File")
If Response = yes then
DoCmd.OutputTo acOutputReport, "Report Name", acFormatRTF, strMyReportName, True
End If
End If
Hope this helps.
~Abby