omar elhosseini قام بنشر يونيو 10, 2016 قام بنشر يونيو 10, 2016 (معدل) شرح UserForm Spreadsheet تحياتي إلى الجميع شرح UserForm Spreadsheet هذه الأداة تسمح بنسخ كامل ورقة العمل او مدي محدد منها الي الفورم مع التحكم في الجزء المنسوخ بالتسيق للصفوف والأعمدة والتلوين واشياء كثيرة اخري هذه الاداة UserForm Microsoft Spreadsheet Control ActiveX من ادوات Control ActiveX وهي تتوفر لمستخدي اوفيس 11 و 14 أي لمستخدمي اوفيس 2003 و 2010 بدون اى مشاكل ================================================== اما مستخدمي اوفيس 2007 اما تركيب owc11 Office Web Components الخاصه بأوفيس 11 بدلا من Excel Services ورابط تحميلها من Microsoft موجود بالمرفقات_1 او فأذا لم تعمل الاداة يجب تنفيذ التعليمات التاليه وهي طريقتين بالرابط التالي رابط التعليمات بالمرفق_2 ================================================== المرفقات_1.rar المرفقات_2.rar يتبع اظهار الاداة لمستخدمي اوفيس 2003 و 2010 سوف نتبع كل السبل المتاحه لإظهر الادة الطريقة الاولي اتبع الصور من 1 - 4 في محرر الاكواد الطريقة الثانية اتبع الصور من 5 - 6 في محرر الاكواد بعد اضافة المكتبتين نفذ ما في الصور من 1 الي 4 اذا لم تجد هاتين المكتبتين لا عليك قم بتحميل المرفق_3 ستجد بداخله ملف اكسيل بأسم Add_Reference اضغط علي الزر لتنفيذ ماكرو يعمل علي اضافة هاتين المكتبتين بعد اضافة المكتبتين عن طريق الماكرو نفذ ما في الصور من 1 الي 4 ================================================== المرفقات_3.rar يتبع تم تعديل يونيو 10, 2016 بواسطه عمر الحسيني 5 1
omar elhosseini قام بنشر يونيو 10, 2016 الكاتب قام بنشر يونيو 10, 2016 (معدل) والان نبدأ استخدام الاداه بعد تجهيز الملف بجدول البيانات في اول ورقة وايضا بعد تجهيز الملف بال UserForm وادراج الاداة Spreadsheet فى UserForm نبدأ بكتابة الاكواد داخل اجراء البداية لل UserForm وهو اللاجراء الاولي الذي يعمل عند بداية تنفيذ استدعاء ال UserForm وهو UserForm_Initialize وتكون الاكواد كالاتي ================================================== Dim Sh_Data As Worksheet Dim Rng As Range Dim Spread As OWC11.Spreadsheet ' Private Sub UserForm_Initialize() ' Set Sh_Data = Sheets("Data") Set Spread = UserForm1.Spreadsheet1 OptionButton1 = True OptionButton2 = False CommandButton1.Caption = "خـــــروج" ScreenOff '====================================================================== End_Row = Sh_Data.Cells(Rows.Count, "A").End(xlUp).Row 'تحديد رقم اخر صف في ورقة الدتا Set Rng = Sh_Data.Range("A1:K" & End_Row) 'تحديد مدي قاعدة البيانات '====================================================================== Rng.Copy 'نسخ مدي قاعدة البيانات ' With Spread ' With .Range("A1") .Paste 'لصق مدي قاعدة الي شيت الفورم بدء من الخليه A1 .Select End With ' Application.CutCopyMode = Fals .Cells.AutoFit 'احتواء تلقائي لشيت الفورم ' With .ActiveWindow .ViewableRange = Rng.Address 'اجبار شيت الفور علي اظهر مدى قاعدة البيانات فقط لعدم استهلاك الذاكره 'انا اعمل علي اوفيس 2003 ليتوافق مع جميع نسخ الاوفيس 'وهو يحتوي علي صفوف عددها هو 35536 صف 'و يحتوي علي اعمدة عددها هو 256 عمود 'اما داخل ال Spread في UserForm 'فهيي تحتوي علي صفوف عددها هو 262144 صف 'أي عدد الصفوف يساوي 4 امثال ورقة العمل العادية 'و تحتوي علي اعمدة عددها هو 18278 عمود 'أي عدد الاعمدة يساوي 72 ضعف ورقة العمل العادية 'تخيل حجم الذاكرة المستهلكة 'فهذا السطر يجبر ال Spread علي عرض مدي قاعدة البيانات فقط 'تخيل حجم الذاكرة التي تم توفيرها End With ' .RightToLeft = True 'جعل شيت الفورم من اليمين الي اليسار ' End With '====================================================================== Change2Arabic ' End Sub ================================================== المثال_1 بالمرفقات_4 تم تجربة المثال علي كل من أوفيس 11 / 2003 و أوفيس 14 / 2010 بدون أي مشاكل ================================================== المرفقات_4.rar يتبع بعد حفظ الملف و إعادة فتحه مرة اخري ستظهر رسالة تحذيريه من ActiveX Control لأيقاف ظهور هذه الرسالة ينفذ ملف الريجيستري التالي الموجود بالمرفقات_5 الي ان نلتقي مع تكملة المثال================================================== المرفقات_5.rar يتبع تم تعديل يونيو 10, 2016 بواسطه عمر الحسيني 2
omar elhosseini قام بنشر يونيو 10, 2016 الكاتب قام بنشر يونيو 10, 2016 (معدل) بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته تحياتي إلى الجميع تكملة شرح UserForm Spreadsheet قبل عمل ال TextBox لنستخدمه في البحث او الفلترة سنقوم بعمل بعض التحابيش الجماليه لل Spreadsheet وهي اخفاء لبعض الاشرطه والادوات من ال Spreadsheet لتبدو لنا مثل ListBox تماما كما في الصوره التاليه سيتم اخفاء كل الاشرطة والادوات التي تم تميزها باللون الاحمر ويتم ذلك بأستخدام اجراء تنشيط UserForm وهو UserForm_Activate وتكون الاكواد كالاتي ================================================== Private Sub UserForm_Activate() ' '================================================================== With Spread .DisplayToolbar = False ' اخفاء شريط الادوات With .ActiveWindow .DisplayWorkbookTabs = False ' اخفاء تاب اوراق العمل .EnableResize = False ' اخفاء تاب التحكم في حجم ورقة العمل .DisplayHeadings = False ' اخفاء ترقيم الصفوف و الاعمدة .DisplayHorizontalScrollBar = False 'اخفاء شريط التمرير الافقي .DisplayVerticalScrollBar = False 'اخفاء شريط التمرير الرأاسي End With End With '================================================================== ' End Sub ================================================== والان نكمل المثال بعد تم عرض كامل الدتا داخل Spread 1 - سنقوم بعمل زر للخروج طور الفورم 2 - سنعمل عدد 2 TextBox احدهما للبحث او الفلترة والثاني لمجموع مبالغ المكافئة 3 - سنعمل عدد 2 OptionButton الاول للفلترة من بداية الاسم والثاني للفلترة بأي جزء من الاسم وتكون الاكواد كالاتي في حدث TextBox1_Change كالاتي عند ادراج اى حرف في TextBox1 يبدأ تنشيط هذا الحدث ================================================== Private Sub TextBox1_Change() ' On Error GoTo End_Me Spread.Rows("1:" & Rows.Count).ClearContents 'حذف محتويات ال Spread بالكامل ' '/============================================================= Search_Text = TextBox1 & "*" 'في حالة تنشيظ ال OptionButton1 'توجيه محتوي ال TextBox1 الى المتغير Search_Text 'واضافة علامة النجمة له في نهايته ليكون البحث او الفلترة بجزء من بداية الاسم If OptionButton2 Then Search_Text = "*" & TextBox1 & "*" ' اما في حالة تنشيظ ال OptionButton2 'توجيه محتوي ال TextBox1 الى المتغير Search_Text 'واضافة علامة النجمة له في البداية و النهايته ليكون البحث او الفلترة بأي بجزء من الاسم ScreenOn Sh_Data.Range("A1").AutoFilter Field:=2, Criteria1:=Search_Text 'في ورقة العمل الرئيسية عمل تصفية تلقائية على العمود الثاني (الاسم) 'بمحتوي متغير الفلترة المتغير Search_Text '/============================================================= Sh_Data.AutoFilter.Range.Copy 'بعد الفلترة نسخ ناتج الفلترة من ورقة العمل الرئيسية الي الذاكرة With Spread With .Range("A1") .Paste 'لصق ناتج الفلترة الي ال Spread .Select End With End With '/============================================================= Total = Sh_Data.Range("M1").Value TextBox2 = CStr(Format(Total, "0.00")) 'نسج خلية المجموع ( M1 ) من ورقة العمل الرئيسية الي TextBox2 في الفورم '/============================================================= End_Me: ScreenOn On Error GoTo 0 ' End Sub ================================================== ملحوظة بعد عمل الفلترة على الفورم يمكن التبديل بين بداية الاسم و أي جزء الاسم الملف موجود بالمرفقات_6 تم تجربة المثال علي كل من أوفيس 11 / 2003 و أوفيس 14 / 2010 بدون أي مشاكل وبذلك ينتهي شرح UserForm Spreadsheet والي لقاء قريب بإذن الله مع شرح اداة ثانية نادرة الاستخدام مغمورة مطمورة ================================================== المرفقات_6.rar تحياتى لكم جميعا تم تعديل يونيو 10, 2016 بواسطه عمر الحسيني 4 2
مهند الزيدي قام بنشر يونيو 10, 2016 قام بنشر يونيو 10, 2016 شكرا على المجهود الرائع ..وفقك الله لكل خير ... جربت تشغيل على 2016 ولم يعمل بشكل صحيح.. ارجو الحل
omar elhosseini قام بنشر يونيو 11, 2016 الكاتب قام بنشر يونيو 11, 2016 الاخ مهند الزيدي لقد نوهت انها تعمل جيدا علي اوفيس 2003 و 2010 اما 2007 و 2016 لها بعض المشاكل علي العموم ماهي الخطوات التي اتبعتها بالتفصيل حتي استطيع اجابتك وهل اتجاه الاعمدة علي نسخة الاوفيس لديك من اليمين الي اليسار ام من اليسار اليمين وهل قوائمك عربي ام انجليزي ارجو مما يريد الاستفسار ان يذكر الخطوات السابقة ذات اللون الاحمر بالتفصيل
saad abed قام بنشر يونيو 11, 2016 قام بنشر يونيو 11, 2016 استاذ عمر استخدم اوفيس216 القوائم عربية والصفحات من اليمن الى اليسار الاداة تظهر معى فى الادوات لكنها لا تظهر فى الفورم 2
omar elhosseini قام بنشر يونيو 11, 2016 الكاتب قام بنشر يونيو 11, 2016 الاخ مهند الزيدي ماهي الخطوات التي اتبعتها بالتفصيل من خلال شرحي السابق
مهند الزيدي قام بنشر يونيو 11, 2016 قام بنشر يونيو 11, 2016 شكرا لك اخي عمر الحسيني .. وفقك الله لكل خير .. عملت كل خطوات حل المشكلة التي شرحتها .. ولكن لاتظهر ال Spreadsheet عند تشغيل الفورم ولا عند VBA كما في الصورة المرفقة
omar elhosseini قام بنشر يونيو 11, 2016 الكاتب قام بنشر يونيو 11, 2016 (معدل) الاخوة الاعزاء من ارد مني توضيحا يجب عليه اولا توضيح الاتي بدون نقصان 1 - رقم نسخة الاوفيس 2 - ماهي الخطوات التي اتبعتها بالتفصيل من خلال شرحي السابق 3 - اتجاه الاعمدة علي نسخة الاوفيس لديك من اليمين الي اليسار ام من اليسار اليمين 4 - وهل قوائمك عربي ام انجليزي اربع نقاط يجب ذكرها حتي استطيع محاولة ايجاد حل فكيف لي ان اعرف ايجاد حل بدون معرفة التفاصيل بعد الشرح الواضح في بداية الموضوع كل هذا قبل تشغيل المثال المرفق في الشرح تم تعديل يونيو 11, 2016 بواسطه عمر الحسيني
صلاح الصغير قام بنشر يونيو 17, 2016 قام بنشر يونيو 17, 2016 ا / عمر نفذت كل الخطوات السابقة من اجل اضافة المكتبتين و لم يضافوا تم تفعيل microsoft office spread sheet و ظهرت الاداة و لكن تحت اسم unknown و تم الذهاب الى ال tools من خلال محرر الاكواد و لم اجد المكتبتين ثم تم تحميل الملف بالمرفقات 3 Add_Reference و الضغط على زر Add_Reference و لم اجد المكتبتين ايضا عندى اوفيس 2016 القوائم : عربى اتجاه الاعمدة : من اليمين الى اليسار
omar elhosseini قام بنشر يونيو 17, 2016 الكاتب قام بنشر يونيو 17, 2016 الاخ صلاح الصغير حمل Office Web Components من الرابط الموجود بالمرفقات_1 النسخة العربية وقم بتركيبها ثم اعد الخطوات من 1 الي 4
صلاح الصغير قام بنشر يونيو 18, 2016 قام بنشر يونيو 18, 2016 ا / عمر تم عمل المطلوب و تمت الاضافة جزاك الله خيرا عمل اكثر من رائع و فى انتظار المزيد
bin7shr قام بنشر يونيو 7, 2019 قام بنشر يونيو 7, 2019 بارك الله فيك أخي الفاضل... الأداة لم تعد متوفرة أو بالإمكان تحميلها لو متوفرة لديك... ولك جزيل الشكر
الردود الموصى بها