الملخص

عند أتمتة منتج Office من Visual Basic، قد يكون من المفيد نقل جزء من التعليمة البرمجية إلى وحدة نمطية ل Microsoft Visual Basic for Applications (VBA) يمكن تشغيلها داخل مساحة العملية للخادم. يمكن أن يعزز ذلك سرعة التنفيذ الشاملة للتطبيق الخاص بك، كما يساعد على التخفيف من المشاكل إذا كان الخادم ينفذ إجراء فقط عند إجراء مكالمة أثناء العملية.

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

مزيد من المعلومات

توضح العينة التالية إدراج وحدة نمطية لرمز في Microsoft Excel، ولكن يمكنك استخدام التقنية نفسها لكل من Word PowerPoint لأن كل منهما يتضمن محرك VBA نفسه.

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

بدءا من Microsoft Office XP، يجب على المستخدم منح حق الوصول إلى نموذج كائن VBA قبل أن تعمل أي تعليمات برمجية تلقائية مكتوبة لمعالجة VBA. هذه ميزة أمان جديدة مع Office XP. لمزيد من المعلومات، الرجاء الاطلاع على مقالة قاعدة المعارف التالية:

282830 رفض الوصول برمجيا Office XP VBA Project

خطوات إنشاء العينة

  1. أولا، قم بإنشاء ملف نصي جديد يسمى KbTest.bas (بدون .txt الملحق). هذه هي وحدة التعليمات البرمجية التي سنقوم بإدراجها في Excel وقت التشغيل.

  2. في الملف النصي، أضف الأسطر التالية من التعليمات البرمجية:

       Attribute VB_Name = "KbTest"

    ' Your Microsoft Visual Basic for Applications macro function takes 1
    ' parameter, the sheet object that you are going to fill.

    Public Sub DoKbTest(oSheetToFill As Object)
    Dim i As Integer, j As Integer
    Dim sMsg As String
    For i = 1 To 100
    For j = 1 To 10

    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheetToFill.Cells(i, j).Value = sMsg
    Next j
    Next i
    End Sub
  3. احفظ الملف النصي في دليل C:\KbTest.bas، ثم أغلق الملف.

  4. ابدأ Visual Basic إنشاء مشروع قياسي. يتم إنشاء Form1 بشكل افتراضي.

  5. في القائمة Project، انقر فوقReferences، ثم حدد إصدار مكتبة النوع المناسب الذي يسمح لك باستخدام الربط المبكر Excel.

    على سبيل المثال، حدد أحد ما يلي:

    • بالنسبة Microsoft Office Excel 2007، حدد المكتبة 12.0.

    • بالنسبة Microsoft Office Excel 2003، حدد المكتبة 11.0.

    • بالنسبة Microsoft Excel 2002، حدد المكتبة 10.0.

    • بالنسبة Microsoft Excel 2000، حدد المكتبة 9.0.

    • بالنسبة Microsoft Excel 97، حدد المكتبة 8.0.

  6. أضف زرا إلى Form1، وضع التعليمة البرمجية التالية في معالج حدث النقر على الزر:

       Private Sub Command1_Click()
    Dim oXL As Excel.Application
    Dim oBook As Excel.Workbook
    Dim oSheet As Excel.Worksheet
    Dim i As Integer, j As Integer
    Dim sMsg As String

    ' Create a new instance of Excel and make it visible.
    Set oXL = CreateObject("Excel.Application")
    oXL.Visible = True

    ' Add a new workbook and set a reference to Sheet1.
    Set oBook = oXL.Workbooks.Add
    Set oSheet = oBook.Sheets(1)

    ' Demo standard Automation from out-of-process,
    ' this routine simply fills in values of cells.
    sMsg = "Fill the sheet from out-of-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    For i = 1 To 100
    For j = 1 To 10
    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheet.Cells(i, j).Value = sMsg
    Next j
    Next i

    ' You're done with the first test, now switch sheets
    ' and run the same routine via an inserted Microsoft Visual Basic
    ' for Applications macro.
    MsgBox "Done.", vbMsgBoxSetForeground
    Set oSheet = oBook.Sheets.Add
    oSheet.Activate

    sMsg = "Fill the sheet from in-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    ' The Import method lets you add modules to VBA at
    ' run time. Change the file path to match the location
    ' of the text file you created in step 3.
    oXL.VBE.ActiveVBProject.VBComponents.Import "C:\KbTest.bas"

    ' Now run the macro, passing oSheet as the first parameter
    oXL.Run "DoKbTest", oSheet

    ' You're done with the second test
    MsgBox "Done.", vbMsgBoxSetForeground

    ' Turn instance of Excel over to end user and release
    ' any outstanding object references.
    oXL.UserControl = True
    Set oSheet = Nothing
    Set oBook = Nothing
    Set oXL = Nothing

    End Sub
  7. بالنسبة Excel 2002 والإصدارات الأحدث من Excel، يجب تشغيل الوصول إلى مشروع VBA. للقيام بذلك، اتبع إحدى الطريقتين التاليتين:

    • في Excel 2007، انقر فوق الزر Microsoft Office، ثم انقر فوق Excel خيارات. انقر فوق مركز الثقة، ثم انقر فوق مركز الإعدادات. انقر فوق الإعدادات، وانقر لتحديد خانة الاختيار الثقة في الوصول إلى نموذج كائن مشروع VBA، ثم انقر فوق موافق مرتين.

    • في Excel 2003 وفي الإصدارات السابقة من Excel، قم ب الإشارة إلى ماكرو في القائمة أدوات، ثم انقر فوق الأمان. في مربع الحوار أمان، انقر فوق علامة التبويب مصادر موثوق بها، ثم انقر لتحديد خانة الاختيار الوصول الموثوق به إلى Visual Basic Project الموثوق به.

  8. تشغيل Visual Basic المشروع.

المراجع

لمزيد من المعلومات حول التنفيذ التلقائي Office من Visual Basic، الرجاء الاطلاع على موقع Office دعم التطوير على العنوان التالي:

http://support.microsoft.com/ofd

هل تحتاج إلى مزيد من المساعدة؟

توسيع المهارات
استكشاف التدريب
الحصول على الميزات الجديدة أولاً
الانضمام إلى Microsoft Insider

هل كانت المعلومات مفيدة؟

ما مدى رضاك عن جودة اللغة؟
ما الذي أثّر في تجربتك؟

نشكرك على ملاحظاتك!

×