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

الردود الموصى بها

قام بنشر (معدل)

 

السلام عليكم ورحمة الله وبركاته ، أخواني وأساتذتي ومعلمينا ( دون استثناء )

 

📌 أقدم لكم اليوم فكرة قد تكون ليست بالجديدة ، ولكن بطريقة ونكهة مختلفتين ▫▪◻◼.

       "أداة مستورد السجلات الذكي من Excel" ، أداة مبتكرة تتيح لك استيراد البيانات من ملفات Excel إلى قواعد بيانات Access بكل مرونة وسرعة . يتميز هذا البرنامج أو الأداة بواجهة بسيطة وميزات قوية تجعل التعامل مع البيانات تجربة مريحة ، حتى للمستخدمين الذين ليست لديهم خبرة تقنية كبيرة في التعامل مع هذا النوع من المتطلبات . فالكثير من الأشخاص في منتدانا هنا سأل عن إمكانية استيراد بيانات من اكسل من حقل محدد أو بطرق محددة ( تناسب إحتياجاته ) ، ولهذا كانت الفكرة هذه تنفيذاً لمتطلباتهم ..

🎯 سنستعرض أهم ميزات هذا البرنامج وكيف يمكن أن يسهم في تحسين إنتاجيتك وتوفير وقتك . تابع القراءة لاكتشاف كيف يمكنك الاستفادة من هذا الحل الذكي لإدارة البيانات 😇 .

 

 

small.Blue-check.png.685b9b4d755a1579b52 ميزات برنامج مستورد السجلات الذكي من Excel

  1. 📂 التكامل مع Excel

    • يمكن اختيار ملفات Excel بسهولة باستخدام نافذة اختيار الملفات .
    • يدعم البرنامج ملفات بصيغة xls / xlsx .
  2. 📋 التعامل مع الأوراق والبيانات

    • عرض جميع أوراق العمل (Sheets) الموجودة في ملف Excel المحدد .
    • عرض أسماء الأعمدة في الورقة المحددة لتسهيل تحديد العمود المستهدف .
  3. 🚀 الاستيراد المرن للبيانات

    • استيراد بيانات من عمود محدد في ملف Excel بناءً على اختيار المستخدم .
    • تحديد الصفوف التي تبدأ منها عملية الاستيراد (لتجاوز رؤوس الأعمدة إن وجدت 👌 ) .
  4. 🗂️ الإدارة المتقدمة للبيانات داخل Access

    • استيراد البيانات إلى جدول محدد داخل قاعدة البيانات الحالية .
    • دعم لتحديد الحقول الهدف داخل الجدول .
    • إمكانية تفعيل خاصية الترقيم التلقائي لإضافة قيم تسلسلية إلى الحقول المخصصة ( باستخدام الدالة DMAX ).
  5. أداء عالي مع دفعات من البيانات

    • تقسيم البيانات إلى دفعات عند استيراد كميات كبيرة لتجنب مشاكل الأداء .
    • إدارة مرنة لعدد السجلات التي يتم استيرادها في كل دفعة .
  6. 🎨 واجهة مستخدم ديناميكية

    • إظهار أو إخفاء المساعدة البصرية بضغطة زر .
    • تحديث الكومبوبوكس بطريقة ديناميكيًا بناءً على اختيارات المستخدم .
  7. 🔒 إجراءات أمان واسترجاع

    • دعم لاسترجاع البيانات عند حدوث خطأ أثناء عملية الاستيراد ( Rollback ) .
    • التنبيه برسائل خطأ واضحة إذا لم يتم اختيار الملف أو إعداد الخيارات بشكل صحيح .
  8. 🧹 إدارة الموارد

    • تنظيف جميع الموارد المفتوحة (ملفات Excel أو الاتصال بالبيانات) عند إغلاق النموذج .
    • منع أي تأثير سلبي على النظام عند حدوث خطأ .
  9. سهولة الاستخدام

    • تصميم بسيط يعرض التعليمات ويطلب إدخال البيانات الضرورية فقط .
    • رسائل توجيهية للمستخدم لتحسين تجربة الاستخدام .
  10. ⚙️ المرونة في تخصيص الخيارات

    • خيارات لتحديث السجلات الموجودة أو إضافة سجلات جديدة .
    • دعم مجموعات البيانات المختلفة من خلال تحديد طريقة المعالجة .

 

small.Blue-check.png.685b9b4d755a1579b52 صورة واجهة الأداة ..

Pic1.png.816dc93399dcc7e710a045d5ff6f8951.png

 

small.Blue-check.png.685b9b4d755a1579b52 الملف المرفق مفتوح المصدر ..

💢   Excel Importor.accdb   💢


 

Thanks.png.002aec0e4949dabeb2bfbe2763fce0ec.png

 

****************************

 

NewUpdateNow.png.9eb2358533686f99ba9c83d7ae5aa700.png

 

 

ما الجديد في هذا للتحديث ؟

📊 واجهة المستخدم (UI) :

واجهة مستخدم تحتوي على أزرار وخيارات لتسهيل عملية استيراد البيانات من إكسل إلى أكسيس .

📂 يمكن للمستخدم اختيار ملف إكسل من خلال مربع حوار اختيار الملفات .

يتم تحميل بيانات الملف المحدد وعرض أسماء الأوراق (Sheets) والأعمدة (Columns) في القوائم المنسدلة .

📥 يدعم الكود طريقتين لاستيراد البيانات :

🔢 استيراد عمود واحد الإصدار الأول ): حيث يتم استيراد بيانات عمود معين من إكسل إلى حقل محدد في جدول أكسيس.

🔢🔢 استيراد عدة أعمدة ( بناءً على طلب الأخوة ): حيث يتم استيراد بيانات عدة أعمدة من إكسل إلى عدة حقول في جدول أكسيس.

💥 يتم التحقق من صحة البيانات المحددة قبل بدء عملية الاستيراد .

🔢 إدارة الترقيم التلقائي :

يدعم البرنامج إمكانية الترقيم التلقائي للحقول المحددة أثناء عملية الاستيراد .

يمكن للمستخدم تفعيل أو تعطيل هذه الميزة وتحديد الحقل الذي سيتم الترقيم التلقائي عليه .

⚠️ إدارة الأخطاء :

يتم التعامل مع الأخطاء المحتملة أثناء عملية الاستيراد ( مثل عدم وجود ملف إكسل محدد أو عدم تطابق الأعمدة ... إلخ ) .

 

small.Blue-check.png.685b9b4d755a1579b52 الملف المرفق مفتوح المصدر ..

💢    Excel Importor 2025.accdb1.07 \u0645\u064a\u062c\u0627 \u0628\u0627\u064a\u062a · 20 downloads   💢

 

🔴 وجب علي التنويه إلى نقطة مهمة وهي :-

          قد يأتي أحد الأخوة لاختيار ملف يحتوي على ترويسة أو صورة في أول ملف الإكسل الذي اختاره ، ويقول لي أنه لم يظهر لي أي أسماء للأعمدة التي تحدثت عنها ( وأن الأداة لم تخدمه بشكل أو بآخر ) وهنا وأعتذر منه مسبقاً بأن هذا الخلل ليس في الأداة وإنما في ملف الآكسل . فأنا لا استطيع أن أجبرك على تصميم معين لملف الآكسل الذيتريد الإستيراد منه ، ولكني بنفس الوقت أقترح عليك أن تزيل هذه الإضافات والمعوقات كي تستفيد من الأداة بشكل ممتاز .

تم تعديل بواسطه Moosak
إضافة آخر التحديثات
  • Like 7
  • Moosak pinned this topic
قام بنشر

P1.png.8925ff7aedce898f5381473346645d47.png

على سبيل المثال ، لدينا جدول اكسل يحتوي على عدد سجلات يتكون من أعمدة على سبيل المثال ( اسم الموظف ، رقم الموظق ، رقم الهاتف ، الجنسية ) وعدد السجلات = 50 صف مثلاً . وفي جدول اكسيس لدينا جدول الموظفين ونريد استيراد عدد سجلات محدد من نطاق محدد من ملف اكسل ومن عمود محدد ؛ لذا بعد اختيار ملف الاكسل سيتم :-

أولاً جلب أسماء الأوراق التي يتكون منها الملف .

ثانياً جلب أسماء الأعمدة التي تتكون منها الورقة التي تم اختيارها ( اسم الموظف ، رقم الموظق ، رقم الهاتف ، الجنسية ) . ونختار على سبيل المثال اسم الموظف . ثم نحدد رقم الصف الذي تبدأ به البيانات التي نريدها ، ولنفترض ان الخليه A1 تحتوي عناوين الأعمدة كما ذكرنا سابقاً ؛ وعليه فإن البيانات ستبدأ من الخلية A2 ( على العتبار ان اسم الموظف في العمود A ) في ملف اكسل .

ثالثاً نحدد الجدول الذي نريد جلب واستيراد البيانات اليه ، ثم نحدد الحقل الهدف الذي سيتم نقل ابيانات اليه .

رابعاً حدد عدد السجلات التي تريد جلبها ، ولنفترض أننا نريد جلب القيم الـ 5 من الخليه A2 - A6 . وإذا أردنا جلب جميع السجلات ( الـ 50 كما ذكرنا في مثالنا ) نترك القيمة في عدد السجلات المستوردة = 0 .

خامساً نحدد نوع الحدث ( تحديث - إضافة ) . فماذا يعني تحديث أو إضافة ؟

  • تحديث : سيتم تحديث الحقل المستهدف من أول قيمة وحتى العدد المحدد في عدد السجلات المستوردة . وعليه فإن القيم السابقة للحقل سيتم استبدالها بالقيم الجديدة .
  • إضافة : سيتم إضافة سجلات جديدة للجدول المستهدف بغض النظر عن السجلات السابقة ولن تتأثر البيانات القديمة عند الإضافة .
     

الآن كنقطة مهمة يجب التنويه لها في هذا البرنامج ، وهي لنفترض انك استوردت عدد سجلات = 5 كما قلنا سابقاً من حقل اسم الموظف . وأردت استيراد عدد 10 سجلات من حقل رقم الهاتف ( نوع احركة تحديث ) هنا سيتم تحديث عدد السجلات الحالي في الجدول بالقيم الـ 5 الأولى ، ثم سيتم إضافة باقي القيم ( الـ 5 سجلات ) وكأنها سجلات جديدة . أي أنها حركة تحديث وحركة إضافة للقيم التي ليس لها سجلات .

سادساً وهي نقطة الترقيم . اعتمدت في البرنامج على الدالة DMAX بالترقيم . بحيث يتم اضافة 1 الى أكبر قيمة في الجدول بعد تحديد حقل الترقيم ( رقم الموظف مثلاً ) . أما اذا كان لديك حقل ترقيم تلقائي في الجدول فلا يستلزم على المستخدم تفعيل هذه الميزة .

سابعاً يجب على المستخدم الإلتزام بضرورة توخي الحذر عند اختيار الحقول بحيث ينتبه لنوع الحقل . فمثلاً لن يتم اضافة قيم نصية مثل اسم الموظف من اكسل الى حقل رقم الموظف ( حقل رقمي ). وهذه النقطة لا شك فيها !!

 

هكذا أكون قد وضحت نواحي البرنامج وفكرته وآلية عمله . وإن كان هناك اي استفسار فيسعدني متابعة آرائكم .

  • Like 3
قام بنشر

السلام عليكم ورحمة الله وبركاته
يعطيك العافية اخي الكريم على جهودك الرائعة
ملاحظة من باب التطوير: 
* فرضا اريد استيراد عشرين عمود من خمسين، هل مطلوب مني ان اقوم بعمل عشرين خطوة كي استورد العشرين عمود؟
- حبذا لو يتم عمل تحديد للاعمدة المراد استيرادها دفعة واحدة لكان العمل اجمل كثيرا.
::

تحياتي

  • Like 1
قام بنشر
16 دقائق مضت, AlwaZeeR said:

- حبذا لو يتم عمل تحديد للاعمدة المراد استيرادها دفعة واحدة لكان العمل اجمل كثيرا.

يسعدني مروروك أخي الكريم أستاذنا @AlwaZeeR ، والعمل جاري على هذه النقطة ، ولا يهمك 😊 .

قام بنشر

ما شاء الله عليك يا باش مهندس .. 🙂🌷
شعلة من النشاط والحماس .. 👍🏻😊

موضوع مهم والكثير محتاجينه 👌

  • Like 2
قام بنشر

اداه رائعه جدا وفكره مبدعه بارك الله فيك

هل يمكن عمل تحديث بحيث يمكننا من اختيار اكثر من عمود من الاكسل ومن الاكسيس بدلا من تحديد عمود عمود

  • Like 1
قام بنشر
31 دقائق مضت, Mohamed Khaled Galal said:

اداه رائعه جدا وفكره مبدعه بارك الله فيك

هل يمكن عمل تحديث بحيث يمكننا من اختيار اكثر من عمود من الاكسل ومن الاكسيس بدلا من تحديد عمود عمود

جزاك الله خيرا اخي الكريم..

إن شاء الله جاري العمل على تطوير الأداة بشكل أوسع 😇 .

  • Like 1
قام بنشر
8 ساعات مضت, Moosak said:

ما شاء الله عليك يا باش مهندس .. 🙂🌷
شعلة من النشاط والحماس .. 👍🏻😊

موضوع مهم والكثير محتاجينه 👌

جزاكم الله كل الخير ، بعض ما عندكم مهندسنا الغالي 

قام بنشر (معدل)

NewUpdateNow.png.9eb2358533686f99ba9c83d7ae5aa700.png

 

 

ما الجديد في هذا للتحديث ؟

📊 واجهة المستخدم (UI) :

واجهة مستخدم تحتوي على أزرار وخيارات لتسهيل عملية استيراد البيانات من إكسل إلى أكسيس .

📂 يمكن للمستخدم اختيار ملف إكسل من خلال مربع حوار اختيار الملفات .

يتم تحميل بيانات الملف المحدد وعرض أسماء الأوراق (Sheets) والأعمدة (Columns) في القوائم المنسدلة .

📥 يدعم الكود طريقتين لاستيراد البيانات :

🔢 استيراد عمود واحدالإصدار الأول ): حيث يتم استيراد بيانات عمود معين من إكسل إلى حقل محدد في جدول أكسيس.

🔢🔢 استيراد عدة أعمدة ( بناءً على طلب الأخوة ): حيث يتم استيراد بيانات عدة أعمدة من إكسل إلى عدة حقول في جدول أكسيس.

💥 يتم التحقق من صحة البيانات المحددة قبل بدء عملية الاستيراد .

🔢 إدارة الترقيم التلقائي :

يدعم البرنامج إمكانية الترقيم التلقائي للحقول المحددة أثناء عملية الاستيراد .

يمكن للمستخدم تفعيل أو تعطيل هذه الميزة وتحديد الحقل الذي سيتم الترقيم التلقائي عليه .

⚠️ إدارة الأخطاء :

يتم التعامل مع الأخطاء المحتملة أثناء عملية الاستيراد ( مثل عدم وجود ملف إكسل محدد أو عدم تطابق الأعمدة ... إلخ ) .

 

small.Blue-check.png.685b9b4d755a1579b52 الملف المرفق مفتوح المصدر ..

💢    Excel Importor 2025.accdb   💢

 

🔴 وجب علي التنويه إلى نقطة مهمة وهي :-

          قد يأتي أحد الأخوة لاختيار ملف يحتوي على ترويسة أو صورة في أول ملف الإكسل الذي اختاره ، ويقول لي أنه لم يظهر لي أي أسماء للأعمدة التي تحدثت عنها ( وأن الأداة لم تخدمه بشكل أو بآخر ) وهنا وأعتذر منه مسبقاً بأن هذا الخلل ليس في الأداة وإنما في ملف الآكسل . فأنا لا استطيع أن أجبرك على تصميم معين لملف الآكسل الذيتريد الإستيراد منه ، ولكني بنفس الوقت أقترح عليك أن تزيل هذه الإضافات والمعوقات كي تستفيد من الأداة بشكل ممتاز .

تم تعديل بواسطه Foksh
إضافة ملف التحديث الجديد
قام بنشر

سلمت يمناك باش مهندس @Foksh 🙂🌷

كفيت ووفيت .. لله درك 😊👌

16 ساعات مضت, Foksh said:

لم يظهر لي أي أسماء للأعمدة

كمقترح لهذه النقطة : هل يمكن إظهار الأعمدة بأسمائها البرمجية ( A B C D E F ...) بدل الكلمة المكتوبة في الصف الأول .. :rol:
image.png.7b8270f193493d37f29093bf12c70929.png

🙈

قام بنشر
1 ساعه مضت, Moosak said:

كمقترح لهذه النقطة : هل يمكن إظهار الأعمدة بأسمائها البرمجية ( A B C D E F ...) بدل الكلمة المكتوبة في الصف الأول .. :rol:

طبعاً نستطيع ذلك مهندسنا الغالي ..

في الكومبوبوكس المخصص لاختيار الورقة ( Comb_Sheets و Comb_Sheet ) ,, ستلاحظ أن الكود بهذا الشكل :-

في Comb_Sheets مثلاً ..

Private Sub Comb_Sheets_AfterUpdate()
    On Error GoTo ErrorHandler

    Dim col As Long
    If IsNull(Me.Comb_Sheets) Or Me.Comb_Sheets = "" Then Exit Sub
    Set xlWorksheet = xlWorkbook.Sheets(Me.Comb_Sheets.Value)
    Me.Comb_Cells.RowSource = ""
    Me.Comb_Cells = ""
    For col = 1 To xlWorksheet.UsedRange.Columns.Count
'----------------------------------------------
    Me.Comb_Cells.AddItem xlWorksheet.Cells(1, col).Value
'----------------------------------------------
    Next col
    Exit Sub

ErrorHandler:
    MsgBox "حدث خطأ: " & vbCrLf & Err.Description, vbCritical + vbMsgBoxRight, ""
End Sub

لاحظ السطر الموجود بين التعليقين . فقط سنستبدله بالسطر التالي :-

Me.Comb_Cells.AddItem Split(xlWorksheet.Cells(1, col).Address, "$")(1)

وكذلك الأمر بالنسبة للكومبوبوكس Comb_Sheet ، سيصبح التعديل بهذا الشكل ..

Private Sub Comb_Sheet_AfterUpdate()
    On Error GoTo ErrorHandler
    Dim col As Long
    If IsNull(Me.Comb_Sheet) Then Exit Sub
    Set xlWorksheet = xlWorkbook.Sheets(Me.Comb_Sheet.Value)
    Me.Comb_Cell.RowSource = ""
    Me.Comb_Cell = ""
    For col = 1 To xlWorksheet.UsedRange.Columns.Count
        Me.Comb_Cell.AddItem Split(xlWorksheet.Cells(1, col).Address, "$")(1) '<<<<<<<<<<
    Next col
    Exit Sub
ErrorHandler:
    MsgBox "حدث خطأ: " & vbCrLf & Err.Description, vbCritical + vbMsgBoxRight, ""
End Sub

 

أتمنى أن أكون قد وُفقت في الإجابة :smile:

  • Like 1
قام بنشر
3 ساعات مضت, Foksh said:

أتمنى أن أكون قد وُفقت في الإجابة :smile:

الله يبيض وجهك :clapping:

تظهر لي هذه عند الضغط على تنفيذ (لم يتم العثور على العمود B ) :rol:

image.png.04f65b14d2e037074fa1a57769b8e2fa.png

 

وكتعديل على طريقة تحديد أسماء الأعمدة ، قمت بهذا التعديل الطفيف :

image.png.f7af0a52f4519d450bfd92933f7a8756.png

 

والنتيجة ستكون حسب الإجابة على هذه الرسالة :

image.png.076fd2c818de150e7dd0c520396e91da.png

وكذلك تم تعديل كود الكومبو الآخر أيضا 🙂 

الأول:

Private Sub Comb_Sheets_AfterUpdate()
    On Error GoTo ErrorHandler

    Dim col As Long
    If IsNull(Me.Comb_Sheets) Or Me.Comb_Sheets = "" Then Exit Sub
    Set xlWorksheet = xlWorkbook.Sheets(Me.Comb_Sheets.Value)
    Me.Comb_Cells.RowSource = ""
    Me.Comb_Cells = ""
    
    Dim HasColumnHead As Boolean
    HasColumnHead = True
    If MsgBox("هل الصف الأول هو عنوان الأعمدة؟", vbMsgBoxRight + vbYesNo, "") = vbNo Then HasColumnHead = False
    
    For col = 1 To xlWorksheet.UsedRange.Columns.Count
        If HasColumnHead = True Then
            ' To Fill Combobox with First row Names as column Name
            Me.Comb_Cells.AddItem xlWorksheet.Cells(1, col).Value
        Else
            ' Fill Combobox with column Names like A,B,C,....etc
            Me.Comb_Cells.AddItem Split(xlWorksheet.Cells(1, col).Address, "$")(1)
        End If
    Next col
    Exit Sub

ErrorHandler:
    MsgBox "حدث خطأ: " & vbCrLf & Err.Description, vbCritical + vbMsgBoxRight, ""
End Sub

الثاني :

Private Sub Comb_Sheet_AfterUpdate()
    On Error GoTo ErrorHandler

    Dim col As Long

    If IsNull(Me.Comb_Sheet) Then Exit Sub

    Set xlWorksheet = xlWorkbook.Sheets(Me.Comb_Sheet.Value)
    Me.Comb_Cell.RowSource = ""
    Me.Comb_Cell = ""
    
    Dim HasColumnHead As Boolean
    HasColumnHead = True
    If MsgBox("هل الصف الأول هو عنوان الأعمدة؟", vbMsgBoxRight + vbYesNo, "") = vbNo Then HasColumnHead = False
    
    For col = 1 To xlWorksheet.UsedRange.Columns.Count
        If HasColumnHead = True Then
            ' To Fill Combobox with First row Names as column Name
            Comb_Cell.AddItem xlWorksheet.Cells(1, col).Value
        Else
            ' Fill Combobox with column Names like A,B,C,....etc
            Me.Comb_Cell.AddItem Split(xlWorksheet.Cells(1, col).Address, "$")(1)
        End If
    Next col

    Exit Sub

ErrorHandler:
    MsgBox "حدث خطأ: " & vbCrLf & Err.Description, vbCritical + vbMsgBoxRight, ""
End Sub

 

  • Thanks 1
قام بنشر

FixUpdate.png.1f6f67233c7c8b76c20bfb75fa30ad61.png

 

بناءً على طلب وملاحظة الأستاذ موسى ( مشكوراً )، تمت التعديلات الجديدة في النسخة التالية بحيث :-

♻ تظهر أسماء الأعمدة البرمجية والعناوين التي تخصها في الصف الأول كما في الصورة أدناه ( مثال ) ..

Hint.png.6c31d084f9870ba68baff67620aa2b98.png

♻ الفكرة تم تطبيقها على الإستيراد المتعدد والغير متعدد أيضاً ..

 

 

💢 Excel Importor 2025.accdb 💢

 

  • Like 3

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • اضف...

Important Information