طيب اليك حل آخر إذا كنت تعمل على أكسيس 2002
Dim prt As Printer
' تعبئة مربع السرد بالطابعات المتوفرة .
Me!cboPrinter.RowSourceType = "Value List"
For Each prt In Application.Printers
Me!cboPrinter.AddItem Item:=prt.DeviceName
Next prt
' للحصول على الطابعة الافتراضية.
strDefaultPrinter = Application.Printer.DeviceName
' غير مربع السرد الى الطابعة الافتراضية.
Me!cboPrinter = strDefaultPrinter
' احصل على كائن الطابعة حسب اختيار المستخدم من مربع السرد.
Set prt = Application.Printers(Me!cboPrinter.Value)
' معاينة التقرير .
DoCmd.OpenReport ReportName:="ReportName", View:=acViewPreview
'تغيير طابعة التقرير المعروض الى الطابعة التى اخترناها .
Reports(ReportName).Printer = prt
الكود من حلول الأخ أبو لمى ( مشرف سابق بالفريق العربي )
***********************
بعدين فيه فكرة أخرى : عند تصميمك للتقرير يمكن وضع طابعة افتراضية تصمم عليها لتقرير وهذا المثال قد يفيدك .
أشرف خليل
____________.zip