دليل للعمل مع المصنفات في vba
في Excel، يعد المصنف أحد أهم كائنات Excel، ومن الضروري أيضًا فهم كيفية استخدام المصنفات والإشارة إليها عند كتابة أكواد VBA.
في هذا البرنامج التعليمي، سنستكشف كل الأشياء التي تحتاج إلى معرفتها. ولكن أول شيء تحتاج إلى فهمه هو الكائنات المشاركة في العمل مع المصنفات في VBA.
أشياء يجب معرفتها:
- كائن المجلدات
- كائن الموثق
هذين الجسمين يبدوان متماثلين، لكن هناك فرق جوهري بينهما.
كائن المجلدات
في VBA، يمثل كائن المصنفات مجموعة المصنفات المفتوحة في Microsoft Excel. تخيل أن لديك عشر خزائن ملفات مفتوحة في نفس الوقت. وتريد الرجوع إلى المصنف الوحيد بينهم. في هذه الحالة، يجب عليك استخدام كائن المصنف للإشارة إلى هذا المصنف باستخدام اسمه.
![1-vba-workbooks-object vba workbooks object](https://exceladvisor.org/wp-content/uploads/2023/08/1-objet-de-classeurs-vba.png)
كائن الموثق
في VBA، يمثل كائن المصنف مصنفًا واحدًا بين كافة المصنفات المفتوحة حاليًا في Microsoft Excel. أفضل طريقة لفهم ذلك هي التفكير في الإعلان عن متغير باعتباره رابطًا تريد استخدامه للإشارة إلى رابط معين في التعليمات البرمجية.
![2-يمثل-مصنفاً واحداً represents one single workbook](https://exceladvisor.org/wp-content/uploads/2023/08/2-represente-un-seul-classeur.png)
روابط مفيدة : إضافة علامة تبويب المطور | محرر فيجوال بيسك | تشغيل ماكرو | مصنف وحدات الماكرو الشخصية
الرجوع إلى مصنف في VBA
للعمل مع المصنفات في VBA، أول شيء تحتاج إلى معرفته هو كيفية الرجوع إلى مصنف في ماكرو. إليك الشيء السعيد: هناك طرق متعددة للإشارة إلى المصنف. وفي المستقبل سوف نستكشف كل واحد منهم.
1. بالاسم
أسهل طريقة للإشارة إلى المصنف هي من خلال اسمه. لنفترض أنك تريد تنشيط المصنف Book1.xlsx، وفي هذه الحالة يجب أن يكون الرمز الذي تحتاج إلى استخدامه كما يلي:
![3-الرجوع إلى مصنف في vba بالاسم refer to a workbook in vba by name](https://exceladvisor.org/wp-content/uploads/2023/08/3-faire-reference-a-un-classeur-dans-vba-par-son-nom.png)
إن الإشارة إلى مصنف باسمه أمر بسيط للغاية، فأنت بحاجة إلى تحديد الاسم، وهذا كل شيء. ولكن هناك شيء واحد يجب عليك الاهتمام به : إذا لم يتم حفظ المصنف، فستحتاج إلى استخدام الاسم فقط. وإذا كان مسجلا فيجب عليك استخدام الاسم مع الامتداد.
2. حسب الرقم
عند فتح مصنف، يقوم Excel بتعيين رقم فهرس لهذا المصنف، ويمكنك استخدام هذا الرقم للإشارة إلى مصنف. المصنف الذي فتحته أولاً سيكون له رقم الفهرس “1” والثاني سيكون له رقم “2” وهكذا.
![4-الرجوع إلى مصنف في vba حسب الرقم refer to a workbook in vba b number](https://exceladvisor.org/wp-content/uploads/2023/08/4-faire-reference-a-un-classeur-dans-vba-par-numero.png)
قد تبدو هذه الطريقة أقل واقعية بالنسبة لك لأنه من الصعب معرفة المصنف الموجود على أي رقم فهرس. ولكن هناك موقف واحد يكون فيه هذا الأسلوب مفيدًا جدًا للاستخدام، وهو إجراء حلقة عبر كافة المصنفات المفتوحة.
3. بواسطة هذا المصنف
يعد هذا المصنف خاصية تساعدك على الرجوع إلى المصنف الذي تكتب فيه التعليمات البرمجية. لنفترض أنك كتبت التعليمات البرمجية في “Book1” واستخدمت ThisWorkbook لحفظ المصنف. والآن، حتى عندما تقوم بتغيير اسم المصنف، فلن تحتاج إلى تغيير الرمز.
![5-الرجوع إلى مصنف في vba بواسطة هذا المصنف refer to a workbook in vba by this workbook](https://exceladvisor.org/wp-content/uploads/2023/08/5-faire-reference-a-un-classeur-dans-vba-par-thisworkbook.png)
يقوم الكود أعلاه بحساب عدد الأوراق في المصنف حيث تمت كتابة هذا الكود ويعرض مربع رسالة بالنتيجة.
4. بواسطة ActiveWorkbook
إذا كنت تريد الرجوع إلى مصنف نشط، فيجب عليك استخدام خاصية “ActiveWorkbook”. أفضل استخدام لهذه الخاصية هو عندما تتأكد من المصنف الذي تم تنشيطه الآن. أو قمت بالفعل بتنشيط المصنف الذي تريد العمل عليه.
![6 لكل مجلد نشط by active workbook](https://exceladvisor.org/wp-content/uploads/2023/08/6-par-classeur-actif.png)
يقوم التعليمة البرمجية أعلاه أولاً بتنشيط المصنف “Book1″، ثم يستخدم خاصية المصنف النشط لحفظ المصنف النشط وإغلاقه.
الوصول إلى كافة الأساليب والخصائص
في VBA، كلما قمت بالإشارة إلى كائن، يسمح لك VBA بالوصول إلى الخصائص والأساليب المتوفرة مع هذا الكائن. وبالمثل، يأتي كائن المصنف مع الخصائص والأساليب. للوصول إليه، يجب عليك أولاً تحديد المصنف، ثم إدخال نقطة .
![7-مجموعة-المصنف-أولاً-و-أدخل-نقطة define the workbook first and enter a dot](https://exceladvisor.org/wp-content/uploads/2023/08/7-definissez-dabord-le-classeur-et-entrez-un-point.png)
في اللحظة التي تكتب فيها نقطة (.)، يتم عرض قائمة الخصائص والأساليب. الآن يجب أن يكون لديك سؤال حول كيفية تحديد أي منهما هو خاصية وأيهما هو الطريقة.
ها هي الحيلة. إذا نظرت عن كثب، يمكنك التعرف على قالب طوب أخضر متحرك وعقرب رمادي أمام كل اسم في القائمة. لذا فإن جميع الخصائص لها هذه اليد الرمادية قبل الاسم والطرق لها لبنة خضراء متحركة.
على سبيل المثال، لاستخدام أسلوب مع مصنف
تخيل أنك تريد إغلاق مصنف (وهو أسلوب)، فأنت بحاجة إلى كتابة “إغلاق” أو تحديده من القائمة.
![8-اختر-إغلاق-في-قائمة select close from a list](https://exceladvisor.org/wp-content/uploads/2023/08/8-selectionner-fermer-dans-une-liste.png)
بعد ذلك، يتعين عليك إدخال أقواس البداية حتى يعرف IntelliSense الوسائط التي تحتاج إلى تعيينها.
![9-أدخل بين قوسين enter starting parentheses](https://exceladvisor.org/wp-content/uploads/2023/08/9-entrez-les-parentheses-de-depart.png)
باستخدام الطريقة Close، تحتاج إلى تحديد ثلاث وسيطات وكما ترون، كل هذه الوسائط اختيارية ويمكنك تجاهلها إذا أردت. لكن بعض الطرق لا تحتوي على وسيطات (على سبيل المثال: التنشيط)
على سبيل المثال، لاستخدام خاصية مع مصنف
تخيل أنك تريد حساب أوراق المصنف “book1”. في هذه الحالة، تحتاج إلى استخدام خاصية “جداول البيانات” ثم خاصية العد الإضافية لذلك.
![10-خاصية استخدام الورقة use the sheets property](https://exceladvisor.org/wp-content/uploads/2023/08/10-utiliser-la-propriete-feuilles.png)
في الكود أعلاه، كما قلت، قمت بتعيين book1، ثم تشير خاصية الورقة إلى جميع الأوراق، ثم خاصية العد لإحصائها. وعند تشغيل هذا الكود يظهر لك مربع رسالة بالنتيجة.
استخدام العبارة “WITH” مع المصنف
في VBA، توجد عبارة “With” يمكنها مساعدتك في العمل مع مصنف أثناء كتابة الماكرو بكفاءة. دعونا نرى المثال أدناه حيث لديك ثلاثة أسطر مختلفة من التعليمات البرمجية مع نفس المصنف، أي ActiveWorkbook.
![11-استخدام مع التعليمات مع الموثق using with statement with workbook](https://exceladvisor.org/wp-content/uploads/2023/08/11-utilisation-avec-instruction-avec-classeur.png)
باستخدام العبارة “WITH”، يمكنك الرجوع إلى المصنف النشط مرة واحدة فقط واستخدام كافة الخصائص والأساليب الموجودة في التعليمات البرمجية.
- أولاً، عليك أن تبدأ بعبارة البداية “With ActiveWorkbook” وتنهي العبارة بـ “End With”.
![12-البدء-بالبدء-البيان start with the starting statement](https://exceladvisor.org/wp-content/uploads/2023/08/12-commencer-par-la-declaration-de-depart.png)
- بعد ذلك، عليك كتابة الكود بين هذه العبارة التي لديك في المثال أعلاه.
![13-كتابة-الكود-بين-التعليمات write the code between the statement](https://exceladvisor.org/wp-content/uploads/2023/08/13-ecrire-le-code-entre-la-declaration.png)
كما ترون في الكود أعلاه، فقد أشرنا إلى ذلك الخاص بـ ActiveWorkbook باستخدام عبارة With ومن ثم يجب استخدام كافة الخصائص والأساليب.
Sub vba_activeworkbook_with_statement() With ActiveWorkbook .Sheets.Add Count:=5 .Charts.Visible = False .SaveAs ("C:UsersDellDesktopmyFolderbook2.xlsx") End With End Sub
دعني أعطيك مثالاً بسيطًا وملموسًا حتى تفهم كل شيء. تخيل أنك تطلب مني الذهاب إلى الغرفة رقم 215 لإحضار زجاجة المياه، وعندما أعود ترسلني إلى الغرفة رقم 215 مرة أخرى للحصول على قلم، ثم ترسلني مرة أخرى للحصول على جهاز كمبيوتر محمول. الآن هذا هو الأمر: كل الأشياء التي طلبت مني إحضارها موجودة في الغرفة رقم 215. لذا من الأفضل أن ترسلني إلى الغرفة رقم 215 وتطلب مني الحصول على الأشياء الثلاثة مرة واحدة.
اقرأ: بـ – انتهى بـ
قم بتعريف متغير كمصنف
في بعض الأحيان تحتاج إلى الإعلان عن متغير باعتباره رابطًا لاستخدامه بشكل أكبر في الكود. حسنًا، لا يتطلب الأمر أي شيء خاص منك.
![14-الإعلان عن المتغير كموثق declare variable as workbook](https://exceladvisor.org/wp-content/uploads/2023/08/14-declarer-la-variable-comme-classeur.png)
- استخدم عبارة DIM (إعلان).
- اكتب اسم المتغير.
- قم بتعيين نوع المتغير إلى المصنف.
التعامل مع الأخطاء
عند العمل مع كائن مصنف واحد أو أكثر في VBA، قد تحتاج أيضًا إلى معالجة الأخطاء. لنأخذ مثالاً على الخطأ “خطأ وقت التشغيل 9: الفهرس خارج النطاق” . يمكن أن يحدث هذا الخطأ لأسباب مختلفة.
- المصنف الذي تحاول الرجوع إليه غير مفتوح.
- ربما كتبت الاسم بشكل خاطئ.
- لم يتم حفظ المصنف الذي تشير إليه بعد وأنت تستخدم الامتداد بالاسم.
- إذا كنت تستخدم رقم الفهرس للإشارة إلى مصنف وكان الرقم الذي استخدمته أكبر من إجمالي عدد المصنفات المفتوحة.
الدروس ذات الصلة
- انسخ ملف Excel (المصنف) باستخدام VBA
- مصنف تنشيط VBA (ملف Excel)
- مصنف إغلاق VBA (ملف Excel)
- VBA الجمع بين المصنفات (ملفات Excel)
- VBA إنشاء مصنف جديد (ملف Excel)