So there is no reason to use the CRViewer.

VB Code:
  1. Dim objReport as CRAXDRT.Report
  2.  
  3. Set objReport = <CrystalAppObject>.OpenReport(PathToReport)
  4.  
  5. 'Set any parameter fields
  6.  
  7. objReport.ReadRecords
  8. objReport.PrintOut False

objReport.PrinterSetup 0 - shows a dialog that allows the user to select a printer.

As far as I know the report is always printed to the default printer.

There is another method called PrinterSelect or is it SelectPrinter that allows you to set the printer in code without a dialog box.