اذهب الي المحتوي
أوفيسنا

Moosak

أوفيسنا
  • Posts

    2,034
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    51

كل منشورات العضو Moosak

  1. وعليكم السلام ورحمة الله وبركاته أخي @النجاشي 🙂 بالاستعانة بالـ ChatGPT .. يوجد هناك كود للتحويل من PDF إلى الأكسل .. ولكنه يحتاج لمكتبة وسيطة .. وهي مكتبة ال Adobe Acrobat API لذلك لازم يكون البرنامج منصب عندك في الجهاز لكي يعمل معاك الكود .. وهذا هو الكود (لم أجربه) : Sub ConvertPDFToExcel() Dim AcroApp As Object Dim AcroAVDoc As Object Dim AcroPDDoc As Object Dim ExcelApp As Object Dim ExcelWorkbook As Object Dim ExcelWorksheet As Object Dim PDFFilePath As String Dim ExcelFilePath As String ' Set the file paths for the PDF file and the Excel file PDFFilePath = "C:\Path\to\input.pdf" ExcelFilePath = "C:\Path\to\output.xlsx" ' Create an instance of the Acrobat application Set AcroApp = CreateObject("AcroExch.App") ' Open the PDF file Set AcroAVDoc = CreateObject("AcroExch.AVDoc") If AcroAVDoc.Open(PDFFilePath, "") Then Set AcroPDDoc = AcroAVDoc.GetPDDoc() ' Save the PDF as an Excel file AcroPDDoc.SaveAs ExcelFilePath, "com.adobe.acrobat.xlsx" ' Close the PDF document AcroPDDoc.Close End If ' Release the Acrobat objects Set AcroAVDoc = Nothing Set AcroPDDoc = Nothing AcroApp.Exit Set AcroApp = Nothing ' Open the Excel file Set ExcelApp = CreateObject("Excel.Application") Set ExcelWorkbook = ExcelApp.Workbooks.Open(ExcelFilePath) Set ExcelWorksheet = ExcelWorkbook.Sheets(1) ' Manipulate the Excel data as needed ' ... your code here ... ' Close and save the Excel file ExcelWorkbook.Close SaveChanges:=True ExcelApp.Quit ' Release the Excel objects Set ExcelWorksheet = Nothing Set ExcelWorkbook = Nothing Set ExcelApp = Nothing End Sub ملاحظة من ChatGPT : لاستخدام Adobe Acrobat API ، تحتاج إلى تثبيت Adobe Acrobat على جهازك ، وقد تحتاج إلى إضافة المكتبة "Adobe Acrobat" أو "Adobe Acrobat xx.0 Type Library" في برنامجك. بالإضافة إلى ذلك ، تحتاج إلى التأكد من أن إصدار Adobe Acrobat المثبت على جهازك يدعم استدعاءات ال API . يرجى الرجوع إلى وثائق Adobe Acrobat API للحصول على مزيد من المعلومات حول الطرق المتاحة والإصدارات المدعومة.
  2. طبعا الأساتذة الكرام جزاهم الله خيرا أجابوا عن هذا السؤال بالأكواد البرمجية .. وهناك طريقتين سهلتين لا تحتاج لبرمجة وسريعة خصوصا في حال أن النقل لمرة واحدة وليست عملية متكررة 🙂 الأولى : عن طريق معالج الاستيراد الخاص بالأكسس ، وهو نفسه الذي نستورد به الجداول ولكن نختار النماذج من تبوب النماذج .. الثانية : وهي أسهل من الأولى (السحب والإفلات) .. يعني تختار النموذج .. تسحبه بالماوس من القاعدة 1 وتفلته في القاعدة 2 في مكان النماذج .. وتم بحمد الله 😄✋🏻
  3. وطريقة سريعة لتحويل الجدول المرتبط لجدول محلي .. أن تضغط بيمين الماوس على الجدول ثم تختار Convert to Local Table 🙂
  4. أستاذنا العزيز @ابوخليلهل لك أن تسأل الأخ @حسونة حسين عن إمكانية تحديث قائمة المواضيع حتى لو كان في ملف الأكسل ؟ 🙂
  5. وعليكم السلام ورحمة الله وبركاته أخي صالح .. هل يوجد نسخ احتياطية للبرنامح ؟
  6. وعليكم السلام ورحمة الله وبركاته أخي @Mohameddd200300 .. 🙂 فعلا رأيت أن تخطيط النسخة الجديدة مختلف عن السابقة .. سأجرب بإذن الله ..
  7. أصلحت لك موضوع التقرير بإنشاء موديول يخزن رقم الـ ID للشخص الحالي في متغير عام ثم يسنده إلى دالة تقوم بفلترة الاستعلام الذي يفتح التقرير : الدالة في الموديول : وبذلك يتم تخزين التقرير الخاص بكل شخص وإرساله إليه ثم حذفه وإرسال التقرير التالي .. وهكذا .. مرسال (2).accdb
  8. الأول واضح .. الثاني ال AttachmentType نوعه ثابت دائما وهو (مستند) لأننا سنرسل التقرير على شكل pdf لذلك لن تحتاج لتعبئة هذه الخانة أساسا .. بل يعمل النوع في الكود مباشرة ً
  9. لم أفهم أخ محمد .. إشرح بالمسميات الموجودة عندك في الملف ..
  10. ولم الانتظار ؟ الحلول مطروحة الآن بين يديك ، إبدأ بالتطبيق حالا .. واستعن بالله وجرب .. وإن أخطأت حاول ثانية وثالثة ورابعة .... 🙂 هكذا تعلمنا ممن سبقونا 🙂
  11. وعليكم السلام ورحمة الله وبركاته 🙂 تفضل أخي عمر : enable.accdb
  12. تمام مثل ما قال أخي @Mohameddd200300 (حسب علمي) .. 🙂 ولأن هذه الخدمة غير متوفرة بشكل مجاني في الأساس (مثل الواتسأب) ، لذلك لا يوجد لها طرق سلسة وسهلة للمستخدم والمبرمج ، ولكن على الرغم من ذلك هناك محاولات سابقة من عدة مبرمجين للاتصال ببرنامج الرسائل في الهاتف وإرسال نص الرسالة ورقم المستلم عن طريق الأكسس .. ولكنها معقدة نوعا ما .. حيث أنه عليك ربط الهاتف بالكمبيوتر عن طريق الكيبل وذلك لإجراء اتصال بينهما .. عسى أن يتاح هذا الأمر قريبا ..
  13. أنا لم أتابع الموضوع من أوله .. ولكن أحس أنني فهمت الفكرة من خلال شرح العم خالد @متقاعد 🙂 فأحببت مشاركتكم تجربتي في هذا الجانب .. في أحد البرامج التي صممتها عملت فكرة مشابهة لهذا الوصف .. وتكمن الفكرة في وجود تقارير سنوية يتم تسليمها من عدة أقسام لقسم معين .. ولكي يتم اعتماد هذه التقارير بشكل نهائي فإنها تمر بعدة مراحل نسميها نحن (حالة التقرير ) وهي كالتالي : لم يتم التسليم بعد. تم التسليم المبدئي. جار مراجعة التقرير. تم إعادة التقرير للتعديل. تم تسليم التقرير بعد المراجعة. تم الاعتماد النهائي. والتقارير تمر على هذه المراحل حتى تستقر على المرحلة رقم 6 حينها يتم إغلاق المعاملة .. وفي بعض الأحيان تنتقل المعاملة من رقم 5 إلى رقم 3 ثم إلى رقم 5 مجددا ثم إلى رقم 6 ... وهكذا .. والسر الذي وراء جميع ذلك هو قائمة منسدلة من عمودين الأول رقم الحالة والثاني الحالة كنص (عمود الرقم ليسهل التحكم بقيمة القائمة في الكود ) .. وهي نفس القائمة التي أوردتها لكم في الأعلى .. ويتم التحكم في تغيير حالة المعاملة (التقرير) عن طريق زر [التسليم] بمساعدة كود VBA يفهم ماهي المرحلة التي وصلها التقرير فيقوم بتغيير القيمة الموجودة في القائمة المنسدلة للقيمة التي بعدها .. وفي حال أننا أردنا إرجاع القيمة من 5 إلى 3 مثلا فإن مدير البرنامج (الآدمن) له نافذة خاصة من خلالها تظهر له القائمة المنسدلة كاملة يكون بإمكانه نقل الحالة لأي رقم آخر يريده ... مع ملاحظة أنني وضعت حقل آخر في نفس السجل اسمه [تاريخ آخر تعديل] يتم تغيير وقت وتاريخ آخر تعديل في القائمة المنسدلة كل مرة. وبالنسبة لمثال الأخ السائل هنا .. يمكن تطبيق نفس الفكرة تماما بوجود قائمة منسدلة بها جميع المراحل التي تمر بها هذه السجلات ويتم تغيير المرحلة عن طريق زر [تسليم] مثلا ، ويتم التحكم في ظهور هذه المعاملات لدى القسم المحدد عن طريق الاستعلامات 🙂 **************** ( تتمة )****************** فيما يتعلق بعمل سجل للتعديلات التي تمت على المعاملة ومن الذي قام بتسليم المعاملة ومن أرجعها و..و..و..... بالتاريخ .. فهذه عملت لها جدول منفصل خاص بالتعديلات غير مرتبط مع أي جدول آخر وأسميته [سجل التعديلات] ... وهذا الجدول يخزن فيه : [الآيدي ID للسجل]، [عنوان المعاملة]، [اسم المستخدم الحالي]، [اسم الكمبيوتر الذي جرت منه التغييرات]، [تاريخ التغيير]، [القيمة السابقة]، [القيمة الجديدة]، [نوع التغيير] .... ويمكنك إضافة أي شئ آخر تريده للجدول .. وعند كل تغيير في السجل (عند الضغط على زر [تسليم] مثلا) يتم إضافة سجل جديد في جدول [سجل التعديلات] باستخدام دالة بها جملة Insert into تقوم بأخذ البيانات وإرسالها للجدول .. وهكذا يمكنني متابعة التعديلات التي جرت على أي سجل أو معاملة بكل دقة .. هذا ما أحببت أن أضيفه وسلامتكم 🙂
  14. نعم أخي أحمد 🙂 لديك العديد من الأخطاء .. يبدو أنك نقلت الكود كما هو بدون أن تغير فيه القيم الموجودة في برنامجك .. 1 - ليس لديك حقل اسمه [ID] ، الحقل عندك اسمه [IDRep] 2- هذا المفروض يكون اسم الحقل الذي تحفظ فيه رابط الملف .. ولكنه غير موجود ، وتحتاج لإضافة 4 حقول لأن لديك 4 صور .. 3 - مكرر .. تزيله 4 - وجدت أنك كررت الدالة selectFile مرتين في موديولين مختلفين لذلك لم تعمل معك .. الحل أن تحذف واحدة وتبقي الأخرى . 5 - وكذلك لديك 8 مكتبات مفقودة ، يجب عليك أن تصلحها : 6- تابع الأكواد التي نسختها من هنا حتى آخرها وغير أسماء الحقول حسب الحقول الموجودة عندك : 7- الحقول ال4 التي في النموذج هي حقول مرفقات .. بينما المفروض أنها تكون حقول [صور] : 8- أسفل كل حقل من حقول الصور تضيف حقل نصي (تضيفها في الجدول أولا ) وذلك لتخزين مسارات الصور ... وتجعلها مخفية في النموذج .
  15. حسب علمي هذه الروابط تستخدم للإنظمام للمجموعة وليس لمراسلتها .. وهذا ربما قد ينحى بنا متحى آخر.. ولكن لا مانع من التجربة .. 🙂 السؤال هو : هل هناك روابط خاصة بالمراسلة ؟ وكيف الطريقة للحصول على هذه الروابط ؟
  16. حسب التجربة .. موضوع الإرسال للجروبات معتمد على ضغطات المفاتيح SenKeys للتركيز على خانة البحث .. ثم إرسال أسم المجموعة والبحث عنها ثم فتحها وإرسال الرسالة .. وبعد أن جربت تطبيق ذلك بطريقتي .. وجدت أن العملية غير مضمونة النتائج فكثيرا ما يخطئ البرنامج بسبب الاعتماد الكلي على نتائج البحث والتي قد تخطيء لو وجدت أخطاء في كتابة اسم المجموعة .. أو وجدت كلمات مشابهة لاسم المجموعة في محادثة أخرى .. لذلك يعتبر هذا الحل غير مثالي في الوقت الحالي .. وننتظر لحد ما تطلعلنا فكرة أفضل 🙂
  17. شكرا لك أخي @محمد احمد لطفى .. 🙂 لم أطلع عليه بعد ولكن إن شاء الله نستفيد منه لدمج الأفكار مع بعضها 🙂
  18. هذه الدالة موجودة هنا .. يجب نقل هذا الجزء لبرنامجك : وبالنسبة لهذه الجزئية : تكرر الكود الخاص بإضافة الملف لكل زر عندك .. فقط تغير هذا الجزء ليتم حفظ كل ملف في مكانه المناسب : عفوا 🙂🌹
  19. اللهم آمين يارب العالمين🌹 أخي طاهر هنا شرحت طريقة إرسال تقرير من الأكسس مباشرة : بارك الله فيك أخي أبو أمين 🙂 طريقة الإرسال التي ذكرتها هي نفس طريقة الإرسال الجماعي التي في البرنامج .. الأرقام مخزنة في الجدول ويرسل لها جميعها مرة واحدة .. والدالة التي أعطيتكم إياها هي الأداة التي يمكنك أن تبدع بها في كيفية إرسال الرسائل بآلاف الطرق والكيفيات المختلفة حسب كيفية عمل برنامجك الخاص.. 😉
  20. نورت المكان عمي قاسم واستجاب الله دعواتك 🙂 نعم عمي قاسم بالضبط .. تحفظ الملف PDF بجانب البرنامج بشكل مؤقت .. ثم ترسل الرابط لدالة إرسال الواتسأب .. وبعد الإرسال تحذف الملف صحيح أن الموضوع يأخذ وقت لو كانت قائمة المرسل إليهم كبيرة .. ولكن هذا ما توصلنا إليه إلى الآن .. ولعله تتكرم علينا شركة الواتسأب بدوال API مباشرة للإرسال في النسخة المجانية .. 🙂 وشخصيا استخدمت هذه الطريقة في أحد برامجي .. وهذا بشكل مختصر الكود الذي استخدمه : Dim SaveToPath As String Dim SaveFullName As String SaveToPath = CurrentProject.Path & "\" SaveFullName = SaveToPath & "ReportName.pdf" DoCmd.OutputTo acOutputReport, "ReportName", "*.pdf", SaveFullName, False, , , acExportQualityPrint SendToWhatsApp "PhoneNumber", "الرسالة", SaveFullName, Document Kill SaveFullName ' MsgBox " تم الإرســــــال ", vbMsgBoxRight, "" عمي أبو خليل كلماتك هي وسام فخر واعتزاز لتلميذكم الصغير 🙂 جزاك الله خيرا على الكلمات المحفزة والدعوات الطيبة .. ولا حرمنا الله خيركم 🙂
×
×
  • اضف...

Important Information