أحمد العيسى قام بنشر يونيو 20 قام بنشر يونيو 20 السلام عليكم بمزيج من : استخدام أداة الأخ العزيز Foksh ، والتدخل اليدوي فى صناعة القوائم بأوفيس 2003 ( لأنه هو الوحيد الذى يسمح بذلك ) تم إنشاء هذه القائمة المختصرة التى تناسب ظهورها الاستفادة السريعة من التقارير جربت هذه القائمة على كافة إصدارات الأكسس وكانت ممتازة وكل محتوياتها مفعلة ومتاحة ( غير خافتة ) وعند تجربتى لتصدير التقرير بصيغة وورد .. كانت رائعة فى 2003 و 2024 .. لكن بدون ظهور الجدول المحيط بالبيانات كنت قد قرأت فيما سبق عن حلول بالمنتدى فى هذا الموضوع .. لكنها غير ناجحة تماماً إذا كان هناك موضوع لم أصل إليه .. أرجو الإشارة إليه سأرفق الملف الذى يحتوي على القائمة المختصرة أعلاه ( بالمرفقات) لمن يريد الاستفادة منها ShortMenu_qryPrinting.mdb 1
أحمد العيسى قام بنشر الإثنين at 15:48 الكاتب قام بنشر الإثنين at 15:48 (معدل) التصدير بصيغة PDF غير متاح من داخل أوفيس 2003 لكنه متاح فى باقى الإصدارات ، و أظن أن باقى زملائي القدامى يعلم بأنه كانت هناك صيغة تصدير snp مدمجة فى 2003 ( Snapshot Viewer ) وهى ممتازة فى الاحتفاظ بتنسيق الملف كاملاً بكل جداوله وباقى محتوياته ويمكن الطباعة منها مثل الصورة : وقد استخدمت الكود التالي فى استخراج الملف السابق وحفظه فى مكان محدد بالكمبيوتر Private Sub btnSnap2_Click() On Error GoTo Err_btnSnap2_Click Dim defaultFolder As String Dim filePath As String defaultFolder = "D:\_BackUp_Teacher\" If Not (Me.cbo_Class = "") Then If Dir(defaultFolder, vbDirectory) = "" Then MkDir defaultFolder End If filePath = defaultFolder & [Forms]![frm_Section]![cbo_Class] & ".snp" DoCmd.OutputTo acReport, "1_سرى_القاهرة_مع_داخلى", "SnapshotFormat(*.snp)", filePath, False, "", 0 MsgBox "تم استخراج ملف سناب شوت وحفظه في:" & vbCrLf & vbCrLf & filePath, vbInformation + vbMsgBoxRight, "" Else MsgBox (" !!!!! عفواً ،،،، أختر مجموعة من القائمة"), vbOKOnly + vbMsgBoxRight, "ملاحظـة" End If Exit_btnSnap2_Click: Exit Sub Err_btnSnap2_Click: MsgBox ("لا يوجد سجلات لتصديرها "), vbOKOnly + vbMsgBoxRight, "تنبيه" Resume Exit_btnSnap2_Click End Sub بالتجربة وجدت أن هذه الوسيلة متاحة أيضاً فى باقى الإصدارات بشرط تثبيت ملف Snapshot المرفق فهل من وسيلة لإضافة الكود السابق لبنود القائمة المختصرة أعلاه ؟؟ Snapshot Viewer 10.rar تم تعديل الإثنين at 15:51 بواسطه أحمد العيسى
jjafferr قام بنشر الثلاثاء at 06:54 قام بنشر الثلاثاء at 06:54 وعليكم السلام نعم ممكن ، عن طريق القائمة المختصرة المؤقته : . 1. اعمل قائمة مختصرة عند النقر على اليمين ، بحيث يظهر لك اسم القائمة (مثلا) : Export_to_SNP Set cmbCtrl = cmb.controls.Add cmbCtrl.Caption = "Export_to_SNP" cmbCtrl.OnAction = "=fExport_SnapShot" 2. حوّل الحدث الذي ارفقته اعلاه الى وحدة نمطية مستقلة (يجب ان تغير .Me الى مسار التقرير/النموذج) ، واسمها يكون fExport_SnapShot
Foksh قام بنشر الأربعاء at 16:47 قام بنشر الأربعاء at 16:47 وعليكم السلام ورحمة الله وبركاته .. مشاركة مع أخي جعفر .. كنت قد أضفت الخاصية هذه الى الأداة التي أشرت إليها . وهي في الزر Custom والذي وظيفته كانت استدعاء دالة محددة عامة من المديول مباشرة .. على سبيل المثال ولفكرتك التي طرحتها أعلاه . استعمل الدالة التالية بإضافتها داخل أي مديول :- Public Function ExportCurrentReportToSNP() On Error GoTo Err_ExportSNP Dim defaultFolder As String Dim filePath As String Dim rptName As String On Error Resume Next rptName = Screen.ActiveReport.Name If Err.Number <> 0 Then MsgBox "لا يوجد تقرير مفتوح ونشط حالياً لتصديره!", vbExclamation + vbMsgBoxRight, "تنبيه" Err.Clear Exit Function End If On Error GoTo Err_ExportSNP defaultFolder = "D:\_BackUp_Teacher\" If Dir(defaultFolder, vbDirectory) = "" Then MkDir defaultFolder End If filePath = defaultFolder & rptName & "_" & Format(Now(), "yyyy-mm-dd_hhmmss") & ".snp" DoCmd.OutputTo acReport, rptName, "SnapshotFormat(*.snp)", filePath, False, "", 0 MsgBox "تم استخراج ملف سناب شوت بنجاح وحفظه في:" & vbCrLf & vbCrLf & filePath, vbInformation + vbMsgBoxRight, "تم التصدير" Exit_ExportSNP: Exit Function Err_ExportSNP: If Err.Number = 2501 Then MsgBox "لا يوجد سجلات لتصديرها أو تم إلغاء العملية.", vbOKOnly + vbMsgBoxRight, "تنبيه" Else MsgBox "حدث خطأ غير متوقع: " & Err.Description, vbCritical + vbMsgBoxRight, "خطأ رقم " & Err.Number End If Resume Exit_ExportSNP End Function ثم اذهب الى نموذج الأداة ، وقم بإنشاء قائمة مختصرة جديدة أو افتح قائمة موجودة . وانقر الزر Custom . واتبع ما يلي :- 2
أحمد العيسى قام بنشر الأربعاء at 19:24 الكاتب قام بنشر الأربعاء at 19:24 (معدل) تمام .. شكراً لك سبب عدم اهتمامي بهذا الـ SnapShot أنه قد عفا عليه الزمن ولا أظن أن أحداً يتذكره واستغنيت عنه بالتصدير لـ PDF لكن لا بأس كتدريب على عمل القائمة المختصرة بأفكار جديدة فقد أنشأت هذه القائمة ولأول مرة كنت أود أن يكون سطر الاختيار Save as PDF باهتاً إذا كانت بيئة التشغيل 2003 SnapShot.mdb تم تعديل الأربعاء at 19:25 بواسطه أحمد العيسى رفع ملف
Foksh قام بنشر الأربعاء at 20:35 قام بنشر الأربعاء at 20:35 منذ ساعه, أحمد العيسى said: ولأول مرة كنت أود أن يكون سطر الاختيار Save as PDF باهتاً إذا كانت بيئة التشغيل 2003 يعني هل ما زلت تريد التصدير كـ PDF للتقارير في 2003 !!!!!! أم تغاضيت عن الفكرة 😅
Foksh قام بنشر الأربعاء at 20:41 قام بنشر الأربعاء at 20:41 وما أقصده هو أنه يوجد طريقة لدمج وظيفة التصدير كـ PDF للتقارير في اكسيس 2003 .. فإن كنت ترغب بها سأحاول دمجها من ضمن التحديثات التي تمت على أداة إنشاء القوائم المختصرة . 1
أحمد العيسى قام بنشر الأربعاء at 21:44 الكاتب قام بنشر الأربعاء at 21:44 منذ ساعه, Foksh said: يعني هل ما زلت تريد التصدير كـ PDF للتقارير في 2003 !!!!!! أم تغاضيت عن الفكرة 😅 لا طبعاً لم أتغاضى عنها الـ PDF ليس مدمجاً فى 2003 كباقى الإصدارات التالية له ولذلك فى كل الأحوال أستخدم برنامج خارجي( pdf Factory pro 9.25 ) لحفظ الملفات كـ PDF
Foksh قام بنشر الأربعاء at 23:51 قام بنشر الأربعاء at 23:51 2 ساعات مضت, أحمد العيسى said: الـ PDF ليس مدمجاً فى 2003 كباقى الإصدارات التالية له ممتاز .. طيب شو رأيك بحل بسيط إذا كان الاستخدام على ويندوز 10 ومتوافق مع أوفيس 2003 ؟؟؟؟ الفكرة اللي خطرت ببالي انه نستخدم طابعة الويندوز الإفتراضية علشان نحفظ التقرير كـ PDF .. كيف ؟ رح نستخدم الدالة التالية :- Public Function ExportToPDF_Win10() Dim reportName As String Dim defaultPrinter As String Dim prt As Printer Dim pdfPrinterExists As Boolean On Error Resume Next reportName = Screen.ActiveReport.Name If Err.Number <> 0 Then MsgBox "لا يوجد تقرير نشط", vbExclamation + vbMsgBoxRight, "" Exit Function End If On Error GoTo 0 pdfPrinterExists = False For Each prt In Application.Printers If prt.DeviceName = "Microsoft Print to PDF" Then pdfPrinterExists = True Exit For End If Next prt If Not pdfPrinterExists Then MsgBox "طابعة 'Microsoft Print to PDF' غير متوفرة في جهازك . النظام يحتاج إلى ويندوز 10 أو أحدث", vbCritical + vbMsgBoxRight, "" Exit Function End If defaultPrinter = Application.Printer.DeviceName Set Application.Printer = Application.Printers("Microsoft Print to PDF") DoCmd.PrintOut acPrintAll Set Application.Printer = Application.Printers(defaultPrinter) End Function وفي زر Custom رح نضيف زر للقائمة كالمعتاد من واجهة الأداة . ونسميه مثلاً تصدير التقرير الحالي كـ PDF . ونستخدم الإستدعاء للدالة :- =ExportToPDF_Win10() النتيجة رح تكون :- طبعاً على عكس الفكرة المطروحة للشهير Lebans في موضوعه هذا ، والتي لا تدعم اللغة العربية عند تصدير التقارير كملف PDF .
أحمد العيسى قام بنشر الخميس at 04:20 الكاتب قام بنشر الخميس at 04:20 4 ساعات مضت, Foksh said: ممتاز .. طيب شو رأيك بحل بسيط إذا كان الاستخدام على ويندوز 10 ومتوافق مع أوفيس 2003 ؟؟؟؟ وإذا كان الاستخدام على ويندوز 7 ( وهو الويندوز الشعبي المفضل فى أغلب مدارسنا ) وهو متوافق مع 2003 ، كيف سيكون الحل ؟ لأنه مع الحل السابق سوف تتلقى هذا الإعتراض : 1
Foksh قام بنشر الخميس at 09:24 قام بنشر الخميس at 09:24 (معدل) ملاحظة وقبل الذهاب بعيداً .. جرب أولاً تثبيت طابعة افتراضية وهمية على الويندوز 7 . مع تعديل فكرة الكود السابق ليصبح :- Public Function ExportToPDF_SmartPrinter() Dim reportName As String Dim defaultPrinter As String Dim prt As Printer Dim pdfPrtName As String On Error Resume Next reportName = Screen.ActiveReport.Name If Err.Number <> 0 Then MsgBox "لا يوجد تقرير نشط", vbExclamation + vbMsgBoxRight, " Exit Function End If On Error GoTo 0 pdfPrtName = "" For Each prt In Application.Printers If InStr(1, prt.DeviceName, "PDF", vbTextCompare) > 0 Or _ InStr(1, prt.DeviceName, "Cute", vbTextCompare) > 0 Or _ InStr(1, prt.DeviceName, "Foxit", vbTextCompare) > 0 Then pdfPrtName = prt.DeviceName Exit For End If Next prt If pdfPrtName = "" Then MsgBox "لم نتمكن من العثور على طابعة PDF في جهازك" & vbCrLf & vbCrLf & _ "إذا كنت تستخدم ويندوز 7 ، يرجى تثبيت طابعة مجانية مثل (PDFCreator)." & vbCrLf & _ "أما الويندوز 10 فيحتوي عليها مسبقاً", vbCritical + vbMsgBoxRight, "" Exit Function End If defaultPrinter = Application.Printer.DeviceName Set Application.Printer = Application.Printers(pdfPrtName) DoCmd.PrintOut acPrintAll Set Application.Printer = Application.Printers(defaultPrinter) End Function حيث أن الدالة ستتعامل مع البحث عن الطابعات التي يتضمن اسمها PDF - على افتراض أنها طابعة قمت أنت بتعريفها في الويندوز 10 - أو طابعات ناتجة عن برامج مشهورة مثل Adobe PDF أو PDFCreator ... إلخ . لذا جربه وأخبرني بالنتيجة .. تم تعديل الخميس at 09:26 بواسطه Foksh 1
أحمد العيسى قام بنشر الخميس at 14:03 الكاتب قام بنشر الخميس at 14:03 تمام الكود الأخير أتاح استخدام الطابعة الافتراضية على جهازي و ظهور التقرير مباشرة على pdf Factory pro وحيث أن هذا البرنامج _مسبقاً_ قد أعطيت له الخاصية Set as Default Printer فهو يقوم عندي بنفس وظيفة الأمر "طباعة سريعة" بالقائمة المختصرة
أحمد العيسى قام بنشر منذ 9 ساعات الكاتب قام بنشر منذ 9 ساعات (معدل) أخى / Foksh شكراً على مساهماتك لتلك الأكواد ، ومن خلالها وصلت إلى التعديل التالي وكل بنود القائمة المختصرة متاحة على أكسس 2003 وأيضا متاحة (رغم البهتان للسمات ) على أكسس 2024 وتم الاستغناء تماماً عن Snapshot Viewer لأن شركة مايكروسوفت ألغت دعم ملفات لقطات Access التي تنتهي بامتداد (.snp) بشكل تلقائي في حزمة أوفيس 2010 وما بعدها ، حيث أصبحت صيغة مهجورة. سأرفع لك الملف لمراجعته .. لأن الكود المشار إليه بالماوس لم يعمل الناتج منه معي بشكل صحيح 100 % فأحياناً يقوم بتحويل التقرير إلى PDF ، ومع تقرير آخر يقوم بتحويل شكل النموذج المختار منه إلى PDF ربما أحتاج لمراجعة الخصائص المختلفة لكل التقارير .. قد يكون أحدها هو السبب ، وإن كنت أشك فى ذلك ExToPDF.mdb تم تعديل منذ 6 ساعات بواسطه أحمد العيسى
أحمد العيسى قام بنشر منذ 4 ساعات الكاتب قام بنشر منذ 4 ساعات (معدل) زمن فترة التعديل التى يتيحها المنتدى قليلة جداً مما يجعل العضو يكتب فى تبويب جديد لشر ح ما استجد من أمور أرجو زيادتها من إدارة المنتدى بخصوص الكود المشار إليه بالماوس لم يعمل الناتج منه معي بشكل صحيح 100 % اكتشفت أن التقرير يلزمه شي غريب ليتم تحويله إلى PDF وهو وجود هذا الكود من ضمن أكواد التقرير ، مثل هذا : Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) End Sub وكل تقرير لا يحتوي على الكود السابق لا يتم تحويله بالطابعة الافتراضية إلى PDF وهذا أيضاً شئ غير مؤكد بدليل أن التقرير الموجود بالملف المرفق لا يحتوي عليه بعد العديد من التجارب إذا قمت باستدعاء التقرير من النموذج وأردت تحويله بالطابعة الوهمية إلى PDF فسوف تجد أن ملف الـ PDF هو صورة النموذج لكن إذا قمت بعرض التقرير مباشرة دون المرور على النموذج فإنه لا يوجد مشكلة لزيادة الإيضاح أرفقت ملف به نموذج وثلاث تقارير وأرجو حل مشكلة استدعاء التقرير من النموذج الطابعة الوهمية المستخدمه هى pdf Factory ExToPDF2.mdb تم تعديل منذ 1 ساعه بواسطه أحمد العيسى
تمت الإجابة Foksh قام بنشر منذ 1 ساعه تمت الإجابة قام بنشر منذ 1 ساعه 3 ساعات مضت, أحمد العيسى said: عد العديد من التجارب إذا قمت باستدعاء التقرير من النموذج وأردت تحويله بالطابعة الوهمية إلى PDF فسوف تجد أن ملف الـ PDF هو صورة النموذج لكن إذا قمت بعرض التقرير مباشرة دون المرور على النموذج فإنه لا يوجد مشكلة لزيادة الإيضاح أرفقت ملف به نموذج وثلاث تقارير أهلاً أخي أحمد .. الحل يسير إن شاء الله تعالى .. قبل أمر الطباعة في الدالة ExportToPDF_SmartPrinter .. فقط كل ما عليك هو نقل التركيز الى التقرير . بحيث قم بإضافة السطر التالي قبل أمر الطباعة . DoCmd.SelectObject acReport, reportName, False يصبح الكود كالتالي :- Public Function ExportToPDF_SmartPrinter() Dim reportName As String Dim defaultPrinter As String Dim prt As Printer Dim pdfPrtName As String On Error Resume Next reportName = Screen.ActiveReport.Name If Err.Number <> 0 Then MsgBox "لا يوجد تقرير نشط", vbExclamation + vbMsgBoxRight, "" Exit Function End If On Error GoTo 0 pdfPrtName = "" For Each prt In Application.Printers If InStr(1, prt.DeviceName, "PDF", vbTextCompare) > 0 Or _ InStr(1, prt.DeviceName, "Cute", vbTextCompare) > 0 Or _ InStr(1, prt.DeviceName, "Foxit", vbTextCompare) > 0 Then pdfPrtName = prt.DeviceName Exit For End If Next prt If pdfPrtName = "" Then MsgBox "لم نتمكن من العثور على طابعة افتراضية وهمية في نظامك" & vbCrLf & vbCrLf & _ "يرجى تثبيت طابعة مجانية على الويندوز مثل بي دي إف فاكتوريً", vbCritical + vbMsgBoxRight, "" Exit Function End If defaultPrinter = Application.Printer.DeviceName Set Application.Printer = Application.Printers(pdfPrtName) DoCmd.SelectObject acReport, reportName, False DoCmd.PrintOut acPrintAll Set Application.Printer = Application.Printers(defaultPrinter) End Function جرب بنفسك وأخبرني 1
أحمد العيسى قام بنشر منذ 33 دقائق الكاتب قام بنشر منذ 33 دقائق تمام هذا ما توقعته ( نقل التركيز على التقرير قبل تحويله ) شكراً جزيلاً على سرعة الرد
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان