الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استيراد ملف اكسل إلى الأكسس

مغلقمُجاب
بدأه mas33 في 19 يناير 2014 · 18 رد · 3,960 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

 

اخواني اريد استورد بيانات موجوده مسبقا في ملف اكسل على شكل جداول دراسية للطلاب 

جدول.xls

#2

وعليكم السلام 

 

تفضل :)

 

الآن يمكنك ان تستورد الملف :)

ولما تستورد الملف ، اخبر اكسس ان السطر الاول يحتوي على مسميات الحقول :)

 

جعفر

جدول.xls

تم تعديل هذه المشاركة بواسطة jjafferr في 19 يناير 2014 في 05:59

#3

تسلم اخوي جعفر

لكن هذا ملف الاكسل فقط مثال يحتوي على بيانات اربع طلاب فقط

البيانات التي عندي تتعدى ٧٠٠ طالب اي كل طالب له خمس سطور

من الصعب المرور عليها ووضع الاسم ورقم للخلايا الفارغة

وشكرا لك ومقدر مجهودك

تم تعديل هذه المشاركة بواسطة mas33 في 20 يناير 2014 في 00:27

#4

السلام عليكم ورحمة الله وبركاته

  اخي الكريم

تمعن بالصور في المجلد جيدا ففيها ما تريد

 

 

images.rar

#5

أخي صفوت وعليكم السلام ورحمة الله وبركاته

هل اطلعت على البيانات في الملف المرفق

لآن في خانة الأسم والرقم تكون الخلايا مدمجة

مازلت المشكلة قائمة

وجزاك الله خيراً

وشكرا لك ومقدر مجهودك

#6

أخي الفاضل :)

ممكن ترفق لي النسخة اﻻصلية من ملف اﻻكسل ، ﻻني ﻻزم اعمل له برنامج:

1. تغيير الحقول المدمجة إلى حقول منفصلة ، ثم تسمية الاعمدة المفردة ، حتى استطيع استيراد الملف في اﻻكسس ،

2. استيراد الملف للاكسس ،

3. ثم تعبئة الحقول الفاضية بالنسبة للاسماء الطلبة و صفوفهم ،

هذه البرمجة ستكون مصممه خصيصا ﻻعدادات ملفك ، لذا يجب ان اعمل على الملف اﻻصل ، واﻻ فالبرمجة لن تظبط :(

جعفر

#7

تفضل هذه النسخة الاصلية

وجزاك الله خير

وجعله في موازين حسناتك

 

CS%5FGetStudentScheduleReport.xls

#8

شكرا جزيلا ، استلمت الملف :)

 

سؤال لوسمحت:

عملية استيراد البيانات ، هل هي مطلوبة لهذا الملف فقط ، او لملفات اخرى لاحقة كذلك؟

 

جعفر

#9

فيه ملفات اخرى على نفس الشاكلة

كل الذي اريد هو كيف يتم استيراد البيانات من الملفات على هذا المنوال

وشكرا لك واهتمامك بالموضوع

#10

استاذنا الفاضل :)

 

اولاً اعتذر عن التأخير ، فالكود كان جاهز البارحة ، ولكن مشيئة الله ارادته ان لا يعمل ، رغم محاولاتي :(

واليوم ، في خلال دقائق اكتشفت الخطأ في الكود ، وهو ان سطر واحد ، كان لازم يكون بعد السطر اللي بعده :)

 

ثانيأً لي الشرف في خدمة مربي اجيالنا ، امثالكم اساتذتنا الكرام :) وشرفكم يعلو بعلو صاحب المدينه النوراء ، على صاحبها وآله وصحبه أفضل الصلاة واتم التسليم :)

 

استاذي الفاضل ، حاولت تسهيل عملية الاستيراد ، فالخطوات المطلوبة لعملية الاستيراد هي:

- ان يكون اسم ملف الاكسل:

146.CS_GetStudentScheduleReport.xls

- وان يكون في نفس مجلد برنامج الاكسس.

- واذا عندك اكثر من ملف تريد استيراده ، فعليك دائما تغيير اسمه الى الاسم اعلاه (اما اذا كان عندك مجموعة ملفات وحبيت اني اغير في البرنامج ، بحيث يقرأ جميع ملفات الاكسل اللي في المجلد ، فما يمنعك إلا اصبعك عن الطلب ، ويكون لي الشرف في التلبية ان شاء الله تعالى :) )

 

اما البرنامج:

post-273849-0-98445600-1390496418_thumb.

 

1. فيه جدول مؤقت tbl_Temp_Import ، يتم مسحه تلقائيا قبل استيراد اي ملف اكسل جديد ، ولا قيمة له بعد استيراد البيانات ،

2. والجدول الآخر tbl_Student_Schedule ، وهو طلبك ، ويبدو هكذا بعد استيراد البيانات في:

post-273849-0-09324600-1390496448_thumb.

 

3. اما العقل المدبر فهو النموذج ، وكل مافيه هو زر الاستيراد ، وعندما تتم العملية ، تحصل على رسالة تخبرك بانتهاء عملية الاستيراد ، واتمام التنظيم في الجدول tbl_Student_Schedule

والكود الذي يقوم بهذا العمل هو:

Private Sub cmd_Import_From_Excel_Click()

    'read the excel file from
    File_Path = Application.CurrentProject.Path & "\146.CS_GetStudentScheduleReport.xls"
    
    'import the file to a temporary table
    'delete the temporary table, then import
    CurrentDb.Execute ("Delete * From tbl_Temp_Import")
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "tbl_Temp_Import", File_Path, False
    
    'lets move the correct fields to the other table tbl_Student_Schedule
    
    Dim rst1 As DAO.Recordset
    Dim rst2 As DAO.Recordset
    
    Set rst1 = CurrentDb.OpenRecordset("Select * From tbl_Temp_Import Order by ID")
    rst1.MoveLast: rst1.MoveFirst
    
    Set rst2 = CurrentDb.OpenRecordset("Select * From tbl_Student_Schedule")
   

    'which Row the data start from
    Data_From_Row = 0

    'loop through the import table
    For i = 1 To rst1.RecordCount


        If InStr(rst1!F1, "العام") Then Y = rst1!F1     'capture the school_year
        If InStr(rst1!F1, "الفصل") Then S = rst1!F1     'capture the session
        If InStr(rst1!F14, "ثانوية") Then N = rst1!F14 'capture the school_name
        
        'data starts from the Row after the word القاعة
        If rst1!F1 = "القاعة" Then
            Data_From_Row = i + 1
        End If
        
        'read data from Data_From_Row, but make sure we have Day value, this is how we know to stop importing
        If i >= Data_From_Row And Len(rst1!F23 & "") <> 0 Then
            
            rst2.AddNew
                rst2!school_name = N
                rst2!school_year = Y
                rst2!session = S
                rst2!L7_S = rst1!F1
                rst2!L7_E = rst1!F2
                rst2!L6_S = rst1!F3
                rst2!L6_E = rst1!F5
                rst2!L5_S = rst1!F7
                rst2!L5_E = rst1!F9
                rst2!L4_S = rst1!F11
                rst2!L4_E = rst1!F13
                rst2!L3_S = rst1!F15
                rst2!L3_E = rst1!F16
                rst2!L2_S = rst1!F17
                rst2!L2_E = rst1!F20
                rst2!L1_S = rst1!F21
                rst2!L1_E = rst1!F22
                rst2!Week_Day = rst1!F23
            
                'student name, and ID repetition
                If Len(rst1!F24 & "") <> 0 Then sName = rst1!F24
                If Len(rst1!F25 & "") <> 0 Then sID = rst1!F25
            
                rst2!Student_Name = sName   'rst1!F24
                rst2!Student_ID = sID       'rst1!F25
            rst2.Update
            
        End If  'i >= Data_From_Row
        
        rst1.MoveNext
    Next i
    
        rst1.Close: Set rst1 = Nothing
        rst2.Close: Set rst2 = Nothing
        
        MsgBox "Importing Completed"
        
End Sub

جعفر

 

1. المرفق به قاعدة بيانات بصيغة 2003 و 2007

2. ملف الاكسل يجب ان يكون مطابقاً للملف الذي ارسلته لي :)

146.Import_Excel.zip

تم تعديل هذه المشاركة بواسطة jjafferr في 23 يناير 2014 في 20:29

#11

أخي الفاضل جعفر

يعجز لساني عن الشكر لك

وكل ما استطيع  هو الدعاء لك ولوالديك

جزاءك الله خير وجعلك من يتنعمون بجنانه

 وشكراً على اهتمامك وتعبك معي يا استاذي

▲ 1
#12

أخي جعفر

الملف المرفق  ما هو التغيير في الكود لكي استورده للأكسس

 

وإذا ممكن شرح الكود أو طريقة ملئ الفرغات التي بالأكسل

 وشكراً لك جزيلاً

 

FinalMarksReport.xls

#13

وعليكم السلام استاذنا الفاضل :)

 واعذرني في اعادة طلبي:

 

ممكن ترفق لي النسخة اﻻصلية من ملف اﻻكسل ، ﻻني ﻻزم اعمل له برمجة ستكون مصممه خصيصا ﻻعدادات ملفك ، لذا يجب ان اعمل على الملف اﻻصل ، واﻻ فالبرمجة لن تضبط  :(

 

جعفر

تم تعديل هذه المشاركة بواسطة jjafferr في 24 يناير 2014 في 10:54

#14

أخي الفاضل جعفر

الملف حجمه كبير جداً أكثر من 4000 سطر

حذفت من السطور حتى يقل في الحجم

والبنية الأساسية لملف الأكسل لم تتغير مدام الفكرة واحدة

فلا يهم عدد السطور حيث أن عدد الطلاب يزيد أو ينقص في كل فصل دراسي

وشكراً لك

اتعبتك معاي

CS%5FFinalMarksReport1.rar

#15 أفضل إجابة

وعليكم السلام استاذنا الفاضل :)

 

حاولت ان احتفظ بنفس نمط البرنامج السابق ، لذا اصبح لديك الآن زرين بدلا عن زر واحد :)

 

post-273849-0-00446300-1390664095_thumb.

 

الجداول اللي فيها كلمة Temp ، معناها انها مؤقته لإستيراد المعلومات الخام من ملف الاكسل ،

والكود يأخذ البيانات من الحقول المستوردة ويضعها في حقولها الصحيحة في الجدول النهائي :)

 

وهنا كذلك يجب ان اشير الى انه يجب ان يكون ملف الاكسل في نفس مجلد ملف الاكسس ،

بالاضافة ان اسمه يجب ان يكون:

146.FinalMarksReport.xls

اذا حبيت ان اشرح لك بالتفصيل كود البرنامج ، سطر بسطر ، فانا تحت امرك ، ما يردك الإ لسانك :)

 

 

جعفر

 

والمرفق كذلك خليت لك الملفات فيه بصيغة 2003 و 2007

 

146.Import_Excel.zip

1
#16

اخي الفاضل جعفر

والله ما قصرت وجزاك الله خير

ومقدر ومثمن مجهودك

وأشكرك جداً على ما علمتني إياه

#17

حياك الله :)

#18

معذرة استاذ جعفر على التدخل


هل هذا التطبيق الإستيراد بالأكسس يطبق الا على برنامج اكسل للأخ  "mas33"


ام لجميع برامج الإكسل


إذا كان كذالك ممكن تعطينا فكرة عامة لإستيراد اي ملف بالأكسل 2003 الى اكسس 2003


الْلَّهُم صَلِّ وَبَارِك وَسَلِم عَلَى سَيِّدِنَا مُحَمَّد وَعَلَى الِه وَصَحْبِه وَسَلِّم

#19

حياك الله اخي كريمو الثاني :)

 

هذا البرنامج مفصل لبرنامج اكسل استاذنا الفاضل mas33 :)

 

اما عملية استيراد ملف اكسل الى اكسس ، فالطريقة سهلة ، ويقوم اكسس بالخطوات ، وما عليك الا ان تقول next next :)

هذا رابط اجنبي للعملية ، فكل اللي عليك عمله هو متابعة الصور فقط :)

https://www.ischool.utexas.edu/technology/tutorials/office/access03/import_data.php

 

وعند استيراد الملف ، لا تهتم كثيرا بالمسميات او نوع الحقول ، المهم ان تستورد المعلومات ، ونحفظ الجدول كجدول مؤقت ،

ثم نقوم بعمل كود او استعلام لنقل البيانات من هذا الجدول المؤقت الى الجدول النهائي ، والذي سنستخدمه في البرنامج :)

 

وفي حال اتبعت الخطوات السابقة واستوردت ملف الاكسل ، وكنت تريد القيام بهذه العملية بصفة دورية ، فلا داعي للخطوات (الخطوات مهمة لأول مرة فقط) ، وانما يمكنك استيراد الملف الى الجدول المؤقت عن طريقة هذا الكود:

File_Path = Application.CurrentProject.Path & "\146.CS_GetStudentScheduleReport.xls"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Table Name", File_Path, False

وهنا File_Path عبارة عن مجرد اسم ملف الاكسل ومساره .

 

واذا كانت لديك اسئلة اخرى في هذا لخصوص ، فرجاء تفتح سؤال جديد في هذا الخصوص ، ثم ارسل لي رساله بالرابط ، واكون في الخدمة ان شاء الله تعالى :)

 

 

واعتذر لأستاذنا الفاضل mas33 عن قرصنة سؤاله لسؤال آخر :)

 

جعفر

تم تعديل هذه المشاركة بواسطة jjafferr في 25 يناير 2014 في 20:11

هذا الموضوع مغلق.

مواضيع مشابهة