مشاركة عبر


الإرشادات التفصيلية: استدعاء تعليمات برمجية في وظيفة إضافية على مستوى التطبيق من VBA

ينطبق على

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

نوع المشروع

  • مشروعات على مستوى التطبيق

إصدار Microsoft Office

  • نظام 2007 Microsoft Office

  • Microsoft Office 2010

توضح هذه الإرشادات التفصيلية كيفية عرض كائن وظيفة إضافية على مستوى التطبيق لحلول Microsoft Office الأخرى بما في ذلك Visual Basic للتطبيقات (VBA) و وظائف COM الإضافية.

على الرغم من أن هذه الإرشادات التفصيلية تستخدم Excel خاصة، فإن المفاهيم الموضّحة بواسطة الإرشادات التفصيلية قابلة للتطبيق على أي قالب مشروع وظيفة إضافية تم توفيره من قبل Visual Studio.

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

  • تعريف فئة يمكن عرضها إلى حلول Office الأخرى.

  • عرض الفئة إلى حلول Office الأخرى.

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

ملاحظة

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

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

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

-

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

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

إنشاء مشروع وظيفة إضافية

الخطوة الأولى إنشاء مشروع وظيفة إضافية لـ Excel .

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

  • إنشاء Excel إضافة-في مشروع يحمل الاسم ExcelImportData، باستخدام Excel إضافة-في قالب المشروع. لمزيد من المعلومات، راجع كيفية القيام بما يلي: إنشاء مشاريع Office في Visual Studio.

    Visual Studio يفتح ملف التعليمات البرمجية ThisAddIn.cs أو ThisAddIn.vb و يقوم بإضافة المشروع ExcelImpoertData إلى مستكشف الحل .

تعريف فئة يمكن عرضها إلى حلول Office الأخرى.

الغرض من هذه الإرشادات التفصيلية هو الاستدعاء في الأسلوب ImportData لفئة باسم AddInUtilities في الوظيفة الإضافية الخاصة بك من تعليمات VBA البرمجية. يكتب هذا الأسلوب سلسلة في خلية A1 من ورقة العمل النشطة.

لعرض الفئة AddInUtilities إلى حلول Office الأخرى ،يجب أن تجعل الفئة عامة ومرئية إلى COM. يجب أن يتم أيضاً عرض واجهة IDispatch في الفئة. توضح التعليمة البرمجية في الإجراء التالي أحد الطرق لتلبية هذه الاحتياجات. لمزيد من المعلومات، راجع استدعاء تعليمات برمجية في وظائف إضافية على مستوى التطبيق من حلول Office الأخرى.

لتعريف فئة يمكن عرضها إلى حلول Office الأخرى.

  1. في القائمة مشروع انقر فوق إضافة فئة .

  2. في مربع حوار ‎إضافة عنصر جديد، قم بتغيير اسم فئة المستخدم إلى AddInUtilities، وانقر فوق إضافة‏‎.

    يفتح الملف AddInUtilities.cs أو AddInUtilities.vb في محرر التعليمات البرمجية.

  3. قم بإضافة العبارات التالية فى أعلى الملف.

    Imports System.Data
    Imports System.Runtime.InteropServices
    Imports Excel = Microsoft.Office.Interop.Excel
    
    using System.Data;
    using System.Runtime.InteropServices;
    using Excel = Microsoft.Office.Interop.Excel;
    
  4. استبدل التصريح بالفئة AddInUtilities الفارغ بالتعليمات البرمجية التالية.

    هذه التعليمات البرمجية تجعل الفئة AddInUtilities مرئية لـ COM ثم تقوم بإضافة أسلوب ImportData إلى الفئة. لعرض واجهةIDispatch ، تحتوي فئةAddInUtilities أيضًا على سمة ClassInterfaceAttribute و تقوم بتطبيق واجهة مرئية لـ COM.

    <ComVisible(True)> _
    Public Interface IAddInUtilities
        Sub ImportData()
    End Interface
    
    <ComVisible(True)> _
    <ClassInterface(ClassInterfaceType.None)> _
    Public Class AddInUtilities
        Implements IAddInUtilities
    
        ' This method tries to write a string to cell A1 in the active worksheet.
        Public Sub ImportData() Implements IAddInUtilities.ImportData
    
            Dim activeWorksheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet
    
            If activeWorksheet IsNot Nothing Then
                Dim range1 As Excel.Range = activeWorksheet.Range("A1")
                range1.Value2 = "This is my data"
            End If
        End Sub
    End Class
    
    [ComVisible(true)]
    public interface IAddInUtilities
    {
        void ImportData();
    }
    
    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    public class AddInUtilities : IAddInUtilities
    {
        // This method tries to write a string to cell A1 in the active worksheet.
        public void ImportData()
        {
            Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet;
    
            if (activeWorksheet != null)
            {
                Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing);
                range1.Value2 = "This is my data";
            }
        }
    }
    

عرض الفئة إلى حلول Office الأخرى.

لعرض فئةAddInUtilities إلى حلول Office الأخرى، تجاوز الأسلوب RequestComAddInAutomationService فى فئة ThisAddIn . في التجاوز الخاص بك، قم بإرجاع مثيل للفئة AddInUtilities .

لعرض فئة AddInUtilities إلى حلول Office الأخرى

  1. في مستكشف الحلول ، قم بتوسيع Excel.

  2. انقر بزر الماوس الأيمن على ThisAddIn.cs أو ThisAddIn.vb ومن ثم انقر فوق عرض التعليمات البرمجية.

  3. قم بإضافة التعليمات البرمجية التالية إلى فئة ThisAddIn .

    Private utilities As AddInUtilities
    
    Protected Overrides Function RequestComAddInAutomationService() As Object
        If utilities Is Nothing Then
            utilities = New AddInUtilities()
        End If
        Return utilities
    End Function
    
    private AddInUtilities utilities;
    
    protected override object RequestComAddInAutomationService()
    {
        if (utilities == null)
            utilities = new AddInUtilities();
    
        return utilities;
    }
    
  4. من القائمة Build (إنشاء)، انقر فوق Build Solution (إنشاء الحل).

    تحقق من بناء الحل بدون أخطاء.

اختبار الوظائف الإضافية

يمكنك الاستدعاء في فئة AddInUtilities من عدة أنواع مختلفة من حلول Office. في هذه الإرشادات التفصيلية سيتم استخدام التعليمات البرمجية لـ VBA في مصنف Excel. للحصول على المعلومات حول أنواع أخرى من حلول Office يمكنك أيضاً استخدامها، راجع استدعاء تعليمات برمجية في وظائف إضافية على مستوى التطبيق من حلول Office الأخرى.

لاختبار الوظائف الإضافية الخاصة بك

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

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

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

    ملاحظة

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

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

    يفتح محرر Visual Basic.

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

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

  6. قم بإضافة تعليمات VBA البرمجية التالية إلى ملف التعليمات البرمجية. هذا الرمز يحصل على اﻷول COMAddInالكائن الذي يمثل من ExcelImportData إضافة-في. بعد ذلك، تستخدم التعليمة البرمجية Objectخاصية COMAddInكائن إلى الاتصال ImportDataالأسلوب.

    Sub CallVSTOMethod()
        Dim addIn As COMAddIn
        Dim automationObject As Object
        Set addIn = Application.COMAddIns("ExcelImportData")
        Set automationObject = addIn.Object
        automationObject.ImportData
    End Sub
    
  7. اضغط F5.

  8. تحقق من أن ورقة بيانات مستوردة جديدة تمت إضافتها إلى المصنف. قم أيضاً بالتحقق من أن الخلية A1 تحتوي على سلسلة هذا هى بياناتى (This is my data).

  9. قم بإنهاء برنامج Excel.

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

يمكنك معرفة المزيد حول برمجة الوظائف الإضافية من هذه المواضيع:

راجع أيضًا:

المهام

كيفية القيام بما يلي: إنشاء مشاريع Office في Visual Studio

المبادئ

استدعاء تعليمات برمجية في وظائف إضافية على مستوى التطبيق من حلول Office الأخرى

تخصيص ميزات UI باستخدام الواجهات القابلة للتوسعة

بنية الوظائف الإضافية على مستوى التطبيق

موارد أخرى

برمجة وظائف إضافية على مستوى التطبيق

تطوير حلول Office