الإرشادات التفصيلية: استدعاء تعليمات برمجية من VBA في مشروع #C

ينطبق على

تنطبق المعلومات الموجودة في هذا الموضوع فقط على أنواع المشاريع وإصدارات Microsoft Office التالية: لمزيد من المعلومات، راجع الميزات المتوفرة بواسطة تطبيقات Office و نوع المشروع.

نوع المشروع

  • مشروعات على مستوى المستند

إصدار Microsoft Office

  • Excel 2007 و Excel 2010

  • Word 2007 و Word 2010

توضح هذه الإرشادات التفصيلية كيفية استدعاء أسلوب في تخصيصات على مستوى المستند لـ Microsoft Office Word من Visual Basic للتعليمات البرمجية الخاصة بالتطبيقات (VBA) في المصنف. يتضمن الإجراء ثلاث خطوات أساسية: إضافة أسلوب لفئة العنصر المضيف Sheet1، وعرض الأسلوب لتعليمات VBA البرمجية في المصنف ، ثم استدعاء الأسلوب من تعليمات VBA البرمجية في المستند.

على الرغم من أن هذه الإرشادات التفصيلية تستخدم Excel بشكل خاص، فإن المفاهيم الموضحة بواسطة الإرشادات التفصيلية أيضاً يتم تطبيقها على مشاريع على مستوى المستند لـ Word.

توضح هذه الإرشادات التفصيلية المهام التالية:

  • إنشاء مصنف يحتوي على تعليمات VBA برمجية.

  • الثقة بموقع المصنف باستخدام مركز التوثيق في Excel.

  • إضافة أسلوب إلى فئة العنصر المضيف Sheet1.

  • استخراج واجهة لفئة العنصر المضيف Sheet1 .

  • عرض الأسلوب إلى تعليمات VBA البرمجية.

  • استدعاء الأسلوب من تعليمات VBA البرمجية.

ملاحظة

قد يعرض جهاز الكمبيوتر الخاص بك أسماء أو مواقع مختلفة لبعض عناصر واجهة مستخدم Visual Studio في الإرشادات التالية. يحدد كل من إصدار Visual Studio لديك والإعدادات المستخدمة هذه العناصر. لمزيد من المعلومات، راجع العمل مع إعدادات.

المتطلبات الأساسية

تحتاج إلى المكونات التالية لاستكمال هذه الإرشادات التفصيلية:

-

إصدار لـ Visual Studio 2010 يشمل أدوات مطوري Microsoft Office. لمزيد من المعلومات، راجع [تكوين كمبيوتر لتطوير حلول Office](bb398242\(v=vs.100\).md).
  • Excel 2007 أو Excel 2010.

إنشاء مصنف يحتوي على تعليمات VBA برمجية.

الخطوة الأولى هى إنشاء مصنف مُمكن بماكرو يحتوي على ماكرو VBA بسيط. قبل أن يمكنك عرض التعليمات البرمجية في تخصيص إلى VBA, يجب أن يحتوي المصنف بالفعل على تعليمات VBA البرمجية. خلاف ذلك، لا يمكن لـ Visual Studio تعديل مشروع VBA لتمكين تعليمات VBA البرمجية من استدعاء تجميع التخصيص.

إذا كان لديك بالفعل مصنف يحتوي على تعليمات VBA البرمجية التي تريد استخدامها، يمكنك تخطي هذه الخطوة.

لإنشاء مصنف يحتوي على التعليمات البرمجية لـ VBA.

  1. قم بتشغيل Excel.

  2. احفظ المستند النشط كـمصنف Excel ممكّن بماكرو (*.xlsm) باسم WorkbookWithVBA. قم بحفظه في موقع ملائم، مثل سطح المكتب.

  3. انقر فوق علامة تبويب المطور على الشريط.

    ملاحظة

    في حالة عدم ظهور علامة التبويب المطور، يجب أولاً إظهاره. لمزيد من المعلومات، راجع كيفية القيام بما يلي: إظهار علامة تبويب المطور على الشريط.

  4. في مجموعة التعليمات البرمجية، انقر على Visual Basic.

    يفتح محرر Visual Basic.

  5. في النافذة مشروع، قم بالنقر نقرًا مزدوجا على ThisWorkbook.

    يفتح ملف التعليمات البرمجية للكائن ThisWorkbook.

  6. قم بإضافة تعليمات VBA البرمجية التالية إلى ملف التعليمات البرمجية. تقوم هذه التعليمات البرمجية بتعريف دالة بسيطة لا تقوم بأي شيء. الغرض الوحيد من هذه الدالة هو التأكد من وجود مشروع VBA في المصنف. هذا مطلوب من أجل الخطوات اللاحقة في هذه الإرشادات التفصيلية.

    Sub EmptySub()
    End Sub
    
  7. قم بحفظ المستند و إنهاء Exel .

إنشاء المشروع

الآن يمكنك إنشاء مشروع على مستوى المستند لـ Excel يستخدم مصنف مُمكن بماكرو قمت بإنشائه مسبقًا.

لإنشاء أحد المشروعات الجديدة

  1. ابدأ Visual Studio.

  2. من القائمة File (ملف)، أشر إلى New (جديد)، ثم انقر فوق Project (مشروع).

  3. في جزء القوالب، قم بتوسيع Visual C#‎ ، ثم قم بتوسيع Office.

  4. قم بتحديد العقدة 2010 أو 2007.

  5. في قائمة قوالب المشروع، حدد مشروع مصنف Excel.

  6. على سبيل المثال، إذا كنت إنشاء مجموعة بيانات وتسميته بالعملاء، سيكون اسم _Customers في ذاكرة تخزين مؤقت.

  7. انقر فوق موافق.

    أدوات Visual Studio لمعالج مشروع Office تفتح.

  8. حدد نسخ مستند موجود، وفي مربع المسار الكامل لمستند موجود، حدد موقع المصنف WorkbookWithVBA الذي قمت بإنشائه سابقًا. في حالة استخدام مصنفك المُمكن بماكرو، حدد موقع هذا المصنف بدلًا من ذلك.

  9. انقر فوق Finish.

    Visual Studio يفتح المصنف WorkbookWithVBA في المصمم ويقوم بإضافة المشروع CallingCodeFromVBA إلى مستكشف الحلول.

الثقة بموقع المصنف

قبل أن يمكنك عرض التعليمات البرمجية في حلك إلى تعليمات VBA البرمجية في المصنف، يجب أن تثق بـ VBA في المصنف ليمكن تشغيله. هناك عدة طرق للقيام بذلك. في هذه الإرشادات التفصيلية سيتم إنجاز هذه المهمة بمنح الثقة لموقع المصنف في مركز التوثيق في Excel.

للثقة بموقع المصنف

  1. قم بتشغيل Excel.

  2. انقر فوق علامة التبويب ملف (لـ Excel 2010) أو زر Microsoft Office (لـ Excel 2007).

  3. انقر على زر خيارات Excel .

  4. في جزء الفئات، انقر فوق مركز التوثيق.

  5. في جزء التفاصيل، انقر فوق إعدادات مركز التوثيق.

  6. في جزء الفئات، انقر فوق المواقع الموثوق بها.

  7. في جزء التفاصيل، انقر فوق إضافة موقع جديد.

  8. عندما تقوم باستخدام للوصول إلى هذا العنصر المخزن مؤقتاً، قم بتحديد _Customers بدلاً من العملاء.

  9. حدد المجلدات الفرعية لهذا الموقع الموثوق به أيضًا.

  10. في مربع الحوار موقع Microsoft Office الموثوق به، انقر فوق موافق.

  11. في مربع الحوار مركز التوثيق، انقر فوق موافق.

  12. في مربع الحوار خيارات Excel، انقر فوق موافق.

  13. قم بإنهاء Excel.

إضافة أسلوب إلى فئة Sheet1.

والآن بعد أن يتم إعداد مشروع VBA، قم بإضافة أسلوب عام إلى فئة عنصر المضيف Sheet1 التي يمكن استدعاؤها من تعليمات VBA البرمجية.

لإضافة أسلوب إلى فئة Sheet1.

  1. في مستكشف الحلول، انقر بزر الماوس الأيمن فوق Sheet1، ثم انقر فوق عرض التعليمات البرمجية.

    ملف Sheet1.cs يفتح محرر التعليمة البرمجية.

  2. قم بإضافة التعليمات البرمجية التالية إلى فئة Sheet1 . أسلوب CreateVstoNamedRange ينشئ كائن NamedRange جديد في النطاق المحدد. هذا الأسلوب يقوم بإنشاء معالج أحداث للحدث Selectedالخاص بـ NamedRange. لاحقًا في هذه الإرشادات التفصيلية، سيتم استدعاء الأسلوب CreateVstoNamedRange من تعليمات VBA البرمجية في المستند.

    private Microsoft.Office.Tools.Excel.NamedRange namedRange1;
    
    public void CreateVstoNamedRange(Excel.Range range, string name)
    {
        if (!this.Controls.Contains(name))
        {
            namedRange1 = this.Controls.AddNamedRange(range, name);
            namedRange1.Selected += new Excel.DocEvents_SelectionChangeEventHandler(
                    namedRange1_Selected);
        }
        else
        {
            MessageBox.Show("A named range with this specific name " +
                "already exists on the worksheet.");
        }
    }
    
    private void namedRange1_Selected(Microsoft.Office.Interop.Excel.Range Target)
    {
        MessageBox.Show("This named range was created by Visual Studio " +
            "Tools for Office.");
    }
    
  3. قم بإضافة الأسلوب التالي إلى الفئة Sheet1 . هذا الأسلوب يتجاهل GetAutomationObject() ويقوم بإرجاع المثيل الحالي للفئة Sheet1 .

    protected override object GetAutomationObject()
    {
        return this;
    }
    
  4. قم بتطبيق السمات التالية قبل السطر الأول من التصريح بالفئة Sheet1. تجعل هذه السمات الفئة مرئية لـ COM ولكن بدون إنشاء واجهة فئة.

    [System.Runtime.InteropServices.ComVisible(true)]
    [System.Runtime.InteropServices.ClassInterface(
        System.Runtime.InteropServices.ClassInterfaceType.None)]
    

استخراج واجهة لفئة Sheet1

قبل أن يمكنك عرض الأسلوب CreateVstoNamedRange لتعليمات VBA البرمجية، يجب عليك إنشاء واجهة عامة تقوم بتعريف هذا الأسلوب و يجب عليك أن تعرض هذا الواجهة لـ COM.

لاستخراج واجهة لفئة Sheet1

  1. في ملف التعليمات البرمجية Sheet1.cs، انقر على أي مكان في فئة Sheet1 .

  2. من القائمة إعادة بناء التعليمات البرمجية انقر فوق فك ضغط الواجهة .

  3. في مربع الحوار استخراج واجهة في تحديد الأعضاء العامة لواجهة النموذج ، انقر فوق الإدخال الخاص بالأسلوب CreateVstoNamedRange.

  4. انقر فوق موافق.

    إذا Visual Studioتم تعيين السمة إلى ISheet1في أحد المشاريع تستهدف 3.5 إطار عمل.NET و قمت بتمرير في عنصر تحكم مضيف الذي يستند إلى كائن المكتب الأصلي، فإنه يطرح Sheet1.ISheet1 Visual Studio also opens the ISheet1.cs file in the Code Editor.

  5. في الملف ISheet1.cs استبدل التصريح بالواجهة ISheet1 بالتعليمات البرمجية التالية. هذه التعليمات البرمجية تجعل الواجهة ISheet1 عامة و تطبق السمة ComVisibleAttribute لجعل الواجهة مرئية لـ COM.

    [System.Runtime.InteropServices.ComVisible(true)]
    public interface ISheet1
    {
        void CreateVstoNamedRange(Microsoft.Office.Interop.Excel.Range range, string name);
    }
    
  6. إنشاء المشروع.

عرض الأسلوب إلى تعليمات VBA البرمجية.

لعرض الأسلوب CreateVstoNamedRange إلى تعليمات VBA البرمجية في المصنف، قم بتعيين الخاصية ReferenceAssemblyFromVbaProject للعنصر المضيف Sheet1 إلى True.

لعرض الأسلوب إلى تعليمات VBA البرمجية.

  1. في مستكشف الحلول ، انقر نقراً مزدوجاً فوق Sheet1.cs.

    يفتح ملف WorkbookWithVBA في المصمم مع Sheet1 مرئي.

  2. في نافذة الخصائص Properties حدد خاصية ReferenceAssemblyFromVbaProject ، ثم قم بتغيير القيمة إلى True.

  3. انقر فوق موافق في الرسالة المعروضة

  4. إنشاء المشروع.

استدعاء الأسلوب من تعليمات VBA البرمجية.

يمكنك الآن استدعاء الأسلوب CreateVstoNamedRange من تعليمات VBA البرمجية في المصنف.

ملاحظة

في هذه الإرشادات التفصيلية، ستقوم بإضافة تعليمات VBA البرمجية إلى المصنف أثناء تصحيح أخطاء المشروع. تعليمات VBA البرمجية التي تقوم بإضافتها إلى هذا المستند سيتم الكتابة فوقها في المرة التالية التي يتم فيها بناء المشروع، لأن Visual Studio يحل محل المستند في إخراج البناء مع نسخة من المستند من مجلد المشروع الرئيسي. إذا كنت ترغب في حفظ تعليمات VBA البرمجية، يمكنك نسخها إلى المستند في مجلد المشروع. لمزيد من المعلومات، راجع استدعاء تعليمات برمجية في تخصيصات على مستوى المستند من VBA.

لاستدعاء الأسلوب من تعليمات VBA البرمجية.

  1. اضغط F5 لتشغيل مشروعك.

  2. على علامة التبويب المطور، في مجموعة التعليمات البرمجية، انقر فوق Visual Basic.

    يفتح محرر Visual Basic.

  3. من القائمة Insert (إدراج)، انقر فوق Module (وحدة نمطية).

  4. قم بإضافة التعليمات البرمجية التالية إلى الوحدة النمطية الجديدة:

    تستدعي هذه التعليمات البرمجية الأسلوب CreateTable في تجميع التخصيص. يقوم الماكرو بالوصول إلى هذا الأسلوب باستخدام أسلوب GetManagedClass العمومي للوصول إلى فئة عنصر المضيف Sheet1 الذى عرضته لتعليمات VBA البرمجية. تم إنشاء هذا الأسلوب GetManagedClass تلقائيًا عند تعيين خاصية ReferenceAssemblyFromVbaProject كما بيّنا مسبقًا في هذه الإرشادات التفصيلية.

    Sub CallVSTOMethod()
        Dim VSTOSheet1 As CallingCodeFromVBA.Sheet1
        Set VSTOSheet1 = GetManagedClass(Sheet1)
        Call VSTOSheet1.CreateVstoNamedRange(Sheet1.Range("A1"), "VstoNamedRange")
    End Sub
    
  5. اضغط F5.

  6. في المصنف المفتوح انقر فوق الخلية A1 في Sheet1 . تحقق من ظهور مربع الرسالة.

  7. قم بإنهاء Excel دون حفظ التغييرات.

الخطوات التالية

يمكنك معرفة المزيد حول استدعاء تعليمات برمجية في حلول Office من VBA في هذه المواضيع:

راجع أيضًا:

المهام

كيفية القيام بما يلي: عرض التعليمة البرمجية إلى VBA في مشروع Visual Basic

كيفية القيام بما يلي: عرض التعليمة البرمجية إلى VBA في مشروع Visual C#‎

الإرشادات التفصيلية: استدعاء تعليمات برمجية من VBA في مشروع Visual Basic

موارد أخرى

ضم VBA و تخصيصات من مستوى المستند

برمجة تخصيصات علي مستوي مستند