أحمد العيسى قام بنشر السبت at 16:32 قام بنشر السبت at 16:32 السلام عليكم بمزيج من : استخدام أداة الأخ العزيز 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 قام بنشر منذ 16 ساعات قام بنشر منذ 16 ساعات وعليكم السلام ورحمة الله وبركاته .. مشاركة مع أخي جعفر .. كنت قد أضفت الخاصية هذه الى الأداة التي أشرت إليها . وهي في الزر 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
أحمد العيسى قام بنشر منذ 14 ساعات الكاتب قام بنشر منذ 14 ساعات (معدل) تمام .. شكراً لك سبب عدم اهتمامي بهذا الـ SnapShot أنه قد عفا عليه الزمن ولا أظن أن أحداً يتذكره واستغنيت عنه بالتصدير لـ PDF لكن لا بأس كتدريب على عمل القائمة المختصرة بأفكار جديدة فقد أنشأت هذه القائمة ولأول مرة كنت أود أن يكون سطر الاختيار Save as PDF باهتاً إذا كانت بيئة التشغيل 2003 SnapShot.mdb تم تعديل منذ 14 ساعات بواسطه أحمد العيسى رفع ملف
Foksh قام بنشر منذ 13 ساعات قام بنشر منذ 13 ساعات منذ ساعه, أحمد العيسى said: ولأول مرة كنت أود أن يكون سطر الاختيار Save as PDF باهتاً إذا كانت بيئة التشغيل 2003 يعني هل ما زلت تريد التصدير كـ PDF للتقارير في 2003 !!!!!! أم تغاضيت عن الفكرة 😅
Foksh قام بنشر منذ 13 ساعات قام بنشر منذ 13 ساعات وما أقصده هو أنه يوجد طريقة لدمج وظيفة التصدير كـ PDF للتقارير في اكسيس 2003 .. فإن كنت ترغب بها سأحاول دمجها من ضمن التحديثات التي تمت على أداة إنشاء القوائم المختصرة . 1
أحمد العيسى قام بنشر منذ 12 ساعات الكاتب قام بنشر منذ 12 ساعات منذ ساعه, Foksh said: يعني هل ما زلت تريد التصدير كـ PDF للتقارير في 2003 !!!!!! أم تغاضيت عن الفكرة 😅 لا طبعاً لم أتغاضى عنها الـ PDF ليس مدمجاً فى 2003 كباقى الإصدارات التالية له ولذلك فى كل الأحوال أستخدم برنامج خارجي( pdf Factory pro 9.25 ) لحفظ الملفات كـ PDF
Foksh قام بنشر منذ 9 ساعات قام بنشر منذ 9 ساعات 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 .
أحمد العيسى قام بنشر منذ 5 ساعات الكاتب قام بنشر منذ 5 ساعات 4 ساعات مضت, Foksh said: ممتاز .. طيب شو رأيك بحل بسيط إذا كان الاستخدام على ويندوز 10 ومتوافق مع أوفيس 2003 ؟؟؟؟ وإذا كان الاستخدام على ويندوز 7 ( وهو الويندوز الشعبي المفضل فى أغلب مدارسنا ) وهو متوافق مع 2003 ، كيف سيكون الحل ؟ لأنه مع الحل السابق سوف تتلقى هذا الإعتراض : 1
Foksh قام بنشر منذ 21 دقائق قام بنشر منذ 21 دقائق (معدل) ملاحظة وقبل الذهاب بعيداً .. جرب أولاً تثبيت طابعة افتراضية وهمية على الويندوز 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 ... إلخ . لذا جربه وأخبرني بالنتيجة .. تم تعديل منذ 19 دقائق بواسطه Foksh
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان