HOW TO: معالجة الأحداث لـ Excel باستخدام Visual Basic .NET

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

اضغط هنا لرابط المقالة باللغة الانجليزية302814
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
للحصول على إصدار Microsoft C# .NET من هذه المقالة، راجع 302815.
للحصول على إصدار Microsoft Visual C++ .NET من هذه المقالة، راجع 309301.
للحصول على إصدار Microsoft Visual Basic 6.0 من هذه المقالة، راجع 219151.

في هذه المهمة

الموجز
توضح هذه المقالة خطوة بخطوة كيفية معالجة Excel الأحداث من عميل التنفيذ التي تم تطويرها باستخدام Visual Basic .NET.

back to the top

نظرة عامة حول معالجة الحدث

يمكنك إنشاء معالج أحداث مع Visual Basic .NET بالطرق التالية جهازي ، استناداً إلى كيفية لإقران معالج أحداث الأحداث:
  • طريقة قياسية لإنشاء معالج أحداث استخدام الكلمة الأساسية مؤشرات بواسطة الكلمة الأساسية WithEvents. عند إعلان متغيّر باستخدام الكلمة الأساسية WithEvents Visual Basic .NET تلقائياً يتصل الأحداث هذا الكائن في وقت التشغيل. معالجة حدث معين لذلك الكائن إضافة معالج ذات الصلة باستخدام فئة وقوائم أسلوب Visual Studio .NET بيئة أثناء بشكل في طريقة عرض التعليمات البرمجية. - أو -

  • بواسطة الكلمة الأساسية AddHandler Visual Basic .NET يوفر طريقة ثاني لمعالجة الأحداث. AddHandler و RemoveHandler تتيح إمكانية بدء تشغيل وإيقاف معالجة الحدث حدث معين بشكل ديناميكي.
back to the top

إنشاء عميل التنفيذ Visual Basic .NET

توضح الخطوات التالية كيفية استخدام إما الأسلوب لمعالجة الأحداث Excel من عميل التنفيذ التي تم تطويرها باستخدام Visual Basic .NET.
  1. بدء تشغيل Microsoft Visual Studio .NET. من القائمة ملف، انقر فوق جديد ثم انقر فوق المشروع. ضمن المشاريع Visual Basic ، حدد تطبيق Windows. يتم إنشاء Form1 بشكل افتراضي.
  2. إضافة مرجع إلى مكتبة كائنات Microsoft Excel. للقيام بذلك، اتبع الخطوات التالية:
    1. من القائمة المشروع انقر فوق إضافة مرجع.
    2. في التبويب COM ، حدد موقع مكتبة كائنات Microsoft Excel 10.0 ثم انقر فوق تحديد. ملاحظة: إذا لم تكن قد قمت بالفعل بتنفيذ ذلك ، توصي Microsoft تحميل في Microsoft Office XP الأساسية Interop التجميعات (PIAs) وتثبيتها. للحصول على معلومات إضافية حول Office XP PIAs انقر فوق رقم المقالة أدناه لعرضها في "قاعدة المعارف لـ Microsoft:
      328912INFO: Microsoft Office XP PIAs المتوفرة التحميل
    3. انقر فوق موافق في مربع الحوار إضافة مراجع لقبول التحديدات. إذا تلقيت موجه لإنشاء wrappers المكتبات التي حددتها انقر فوق "نعم".
  3. من القائمة المشروع حدد إضافة الوحدة النمطية. حدد الوحدة النمطية في قائمة قوالب وانقر فوق فتح. قم بلصق التعليمة البرمجية التالية في الوحدة النمطية جديد:
       '==================================================================   'Demonstrates Using a Delegate for Event Handling   '==================================================================   Private xlApp As Excel.Application   Private xlBook As Excel.Workbook   Private xlSheet1 As Excel.Worksheet   Private xlSheet2 As Excel.Worksheet   Private xlSheet3 As Excel.Worksheet   Private EventDel_BeforeBookClose As Excel.AppEvents_WorkbookBeforeCloseEventHandler   Private EventDel_CellsChange As Excel.DocEvents_ChangeEventHandler   Public Sub UseDelegate()      'Start Excel and create a new workbook.      xlApp = CreateObject("Excel.Application")      xlBook = xlApp.Workbooks.Add()      xlBook.Windows(1).Caption = "Uses WithEvents"      'Get references to the three worksheets.      xlSheet1 = xlBook.Worksheets.Item(1)      xlSheet2 = xlBook.Worksheets.Item(2)      xlSheet3 = xlBook.Worksheets.Item(3)      CType(xlSheet1, Excel._Worksheet).Activate()      'Add an event handler for the WorkbookBeforeClose Event of the      'Application object.      EventDel_BeforeBookClose = New Excel.AppEvents_WorkbookBeforeCloseEventHandler( _            AddressOf BeforeBookClose)      AddHandler xlApp.WorkbookBeforeClose, EventDel_BeforeBookClose      'Add an event handler for the Change event of both Worksheet       'objects.      EventDel_CellsChange = New Excel.DocEvents_ChangeEventHandler( _            AddressOf CellsChange)      AddHandler xlSheet1.Change, EventDel_CellsChange      AddHandler xlSheet2.Change, EventDel_CellsChange      AddHandler xlSheet3.Change, EventDel_CellsChange      'Make Excel visible and give the user control.      xlApp.Visible = True      xlApp.UserControl = True   End Sub   Private Sub CellsChange(ByVal Target As Excel.Range)      'This is called when a cell or cells on a worksheet are changed.      Debug.WriteLine("Delegate: You Changed Cells " + Target.Address + " on " + _                        Target.Worksheet.Name())   End Sub   Private Sub BeforeBookClose(ByVal Wb As Excel.Workbook, ByRef Cancel As Boolean)      'This is called when you choose to close the workbook in Excel.      'The event handlers are removed, and then the workbook is closed       'without saving changes.      Debug.WriteLine("Delegate: Closing the workbook and removing event handlers.")      RemoveHandler xlSheet1.Change, EventDel_CellsChange      RemoveHandler xlSheet2.Change, EventDel_CellsChange      RemoveHandler xlSheet3.Change, EventDel_CellsChange      RemoveHandler xlApp.WorkbookBeforeClose, EventDel_BeforeBookClose      Wb.Saved = True 'Set the dirty flag to true so there is no prompt to save.   End Sub					
  4. إضافة وحدة نمطية أخرى إلى المشروع ثم قم بلصق التعليمة البرمجية التالية في الوحدة النمطية:
       '==================================================================   'Demonstrates Using WithEvents for Event Handling   '==================================================================   Private WithEvents xlApp As Excel.Application   Private xlBook As Excel.Workbook   Private WithEvents xlSheet1 As Excel.Worksheet   Private WithEvents xlSheet2 As Excel.Worksheet   Private WithEvents xlSheet3 As Excel.Worksheet   Public Sub UseWithEvents()      'Start Excel and create a new workbook.      xlApp = CreateObject("Excel.Application")      xlBook = xlApp.Workbooks.Add()      xlBook.Windows(1).Caption = "Uses WithEvents"      'Get references to the three worksheets.      xlSheet1 = xlBook.Worksheets.Item(1)      xlSheet2 = xlBook.Worksheets.Item(2)      xlSheet3 = xlBook.Worksheets.Item(3)      CType(xlSheet1, Excel._Worksheet).Activate()      'Make Excel visible and give the user control.      xlApp.Visible = True      xlApp.UserControl = True   End Sub   Private Sub xlApp_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, _     ByRef Cancel As Boolean) Handles xlApp.WorkbookBeforeClose      Debug.WriteLine("WithEvents: Closing the workbook.")      Wb.Saved = True 'Set the dirty flag to true so there is no prompt to save   End Sub   Private Sub xlSheet1_Change(ByVal Target As Excel.Range) Handles xlSheet1.Change      Debug.WriteLine("WithEvents: You Changed Cells " + Target.Address + " on Sheet1")   End Sub   Private Sub xlSheet2_Change(ByVal Target As Excel.Range) Handles xlSheet2.Change      Debug.WriteLine("WithEvents: You Changed Cells " + Target.Address + " on Sheet2")   End Sub					
  5. أضف التالي إلى أعلى Module1.vb:
    Imports Microsoft.Office.Interop					
  6. أضف التالي إلى أعلى Module2.vb:
    Imports Microsoft.Office.Interop					
  7. في "مستكشف الحلول" انقر نقراً مزدوجاً فوق Form1.vb لعرض النموذج في طريقة العرض "تصميم".
  8. من القائمة عرض، حدد Toolbox لعرض مربع الأدوات ثم قم بإضافة زرارين إلى Form1. تغيير الخاصية TextButton1 إلى استخدام WithEvents ثم قم بتغيير الخاصية TextButton2 إلى استخدام Delegates.
  9. من القائمة عرض ، حدد الرمز لعرض إطار التعليمات البرمجية للنموذج. قم بإضافة التعليمات البرمجية التالية إلى معالجات الأحداث انقر لأزرار:
        Private Sub Button1_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button1.Click        UseWithEvents()    End Sub    Private Sub Button2_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button2.Click        UseDelegate()    End Sub					
back to the top

اختبار التعليمات البرمجية

  1. اضغط CTRL + ALT + O لعرض الإطار إخراج.
  2. اضغط F5 لإنشاء البرنامج وتشغيله.
  3. في النموذج، انقر فوق استخدام WithEvents. البرنامج تبدأ تشغيل Excel وإنشاء مصنف مع ثلاث أوراق عمل.
  4. إضافة أية بيانات إلى خلايا في أوراق عمل أو أكثر. اضغط المفتاح ENTER بعد كل تغيير. فحص الإطار إخراج في Visual Studio للتحقق من تسمى معالجات الأحداث.
  5. قم بإنهاء Excel.
  6. في النموذج، انقر فوق تفويض استخدام. مرة أخرى، البرنامج تبدأ تشغيل Excel ويقوم بإنشاء مصنف مع أوراق عمل متعددة.
  7. إضافة أية بيانات إلى خلايا في أوراق عمل أو أكثر. اضغط المفتاح ENTER بعد كل تغيير. فحص الإطار إخراج في Visual Studio للتحقق من تسمى معالجات الأحداث.
  8. قم بإنهاء Excel ثم إغلاق النموذج لإنهاء جلسة تصحيح أخطاء.
back to the top

استكشاف الأخطاء وإصلاحها

عند اختبار التعليمات البرمجية قد تتلقى رسالة الخطأ التالية:
حدث استثناء غير معالج من النوع 'System.InvalidCastException' حدث في interop.excel.dll

معلومات إضافية: لا توجد واجهة مثل معتمد
في حالة ظهور هذا الخطأ راجع المقالة التالية في "قاعدة المعارف لـ Microsoft:
316653PRB: خطأ باستخدام WithEvents أو مفوضون لمعالجة الأحداث من Microsoft Excel في Studio.NET مرئية
back to the top
مراجع
لمزيد من المعلومات، راجع التالي المطور Microsoft Network (MSDN) موقع ويب:
تطوير Microsoft Office مع Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
للحصول على معلومات إضافية حول أتمتة Excel من Visual Basic .NET انقر فوق رقمي المقالتين التاليتين لعرضهما في "قاعدة المعارف لـ Microsoft:
301982HOWTO: أتمتة Microsoft Excel من Visual Basic .NET
302094HOWTO: أتمتة Excel من .Net Visual Basic التعبئة أو الحصول على البيانات في نطاق استخدام الصفيف
back to the top

(c) يوم شركة Microsoft حقوق كافة محجوز. المساهمات قبل Joel Alley ، Microsoft Corporation.

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 302814 - آخر مراجعة: 12/06/2015 03:40:27 - المراجعة: 6.2

Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Excel 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbautomation kbhowtomaster KB302814 KbMtar
تعليقات