تفضل استاذ @moho58 اليك احدي الحلول لأنك لم ترفق مرفق !!!
الحل الأول: ضبط إعدادات الطباعة يدويًا باستخدام VBA
يمكنك تغيير إعدادات الطابعة عبر VBA قبل طباعة التقرير بحيث يتم تصغير المحتوى ليلائم حجم الورقة A4.
الكود:
Private Sub PrintReportA4()
Dim rpt As Report
Dim strReportName As String
strReportName = "اسم_التقرير" ' استبدل باسم تقريرك
' فتح التقرير في وضع المعاينة
DoCmd.OpenReport strReportName, acViewPreview
' التأكد من أن التقرير مفتوح
If SysCmd(acSysCmdGetObjectState, acReport, strReportName) <> 0 Then
Set rpt = Reports(strReportName)
' ضبط إعدادات الطابعة للطباعة على ورقة A4 مع تصغير الحجم
With rpt.Printer
.PaperSize = acPRPSA4 ' ضبط حجم الورقة إلى A4
.Orientation = acPRORLandscape ' (اختياري) ضبط الاتجاه أفقي أو عمودي
End With
' طباعة التقرير بعد ضبط الإعدادات
DoCmd.PrintOut
' إغلاق التقرير بعد الطباعة
DoCmd.Close acReport, strReportName
End If
End Sub
الحل الثاني: تصغير التقرير تلقائيًا عند الطباعةالكود لحفظ التقرير كـ PDF ثم الطباعة:
إذا كان التقرير يحتوي على عناصر تتجاوز حجم A4، يمكنك تعديل خاصية التكبير والتصغير (Zoom) للطباعة بدون قص الأجزاء الكبيرة.
استخدم إعدادات Fit to Page في الطابعة، ولكن يتم ذلك عبر إعدادات الطابعة وليس VBA مباشرة.
الحل الثالث: حفظ التقرير كملف PDF ثم الطباعة
إذا كان هناك مشاكل في الطباعة المباشرة، يمكنك حفظ التقرير بصيغة PDF ثم طباعته بالحجم المطلوب.
الكود لحفظ التقرير كـ PDF ثم الطباعة:
Private Sub ExportAndPrintPDF()
Dim strReportName As String
Dim strFilePath As String
strReportName = "اسم_التقرير" ' استبدل باسم تقريرك
strFilePath = "C:\Temp\ReportOutput.pdf" ' مسار حفظ التقرير
' تصدير التقرير إلى PDF
DoCmd.OutputTo acOutputReport, strReportName, acFormatPDF, strFilePath
' طباعة الملف المحفوظ
Shell "cmd /c start /min " & Chr(34) & strFilePath & Chr(34), vbHide
End Sub
ملحوظات:
تأكد من ضبط إعدادات الطابعة الافتراضية للطباعة على A4.
إذا كان التقرير يحتوي على عناصر كبيرة جدًا، قد تحتاج إلى إعادة تصميمه بحيث يكون قابلًا للطباعة على A4 بشكل أوضح.
تأكد من تجربة الطباعة أولًا عبر المعاينة (acViewPreview) قبل الطباعة الفعلية.