ملاحظة: يتم تعطيل الدالة أو الأسلوب أو الكائن أو الخاصية الموضحة في هذا الموضوع إذا كانت خدمة تعبير Microsoft Jet قيد التشغيل في وضع بيئة الاختبار المعزولة، مما يمنع تقييم التعبيرات التي يحتمل أن تكون غير آمنة. لمزيد من المعلومات حول وضع بيئة الاختبار المعزولة، ابحث عن "وضع بيئة الاختبار المعزولة" في التعليمات.
إرجاع مرجع إلى عنصر يوفره مكون ActiveX.
بناء الجملة
GetObject([pathname ] [, class ] )
يحتوي بناء جملة الدالة GetObject على هذه الوسيطات:
الوسيطة |
الوصف |
---|---|
Pathname |
اختيارية. متغير (سلسلة). المسار الكامل واسم الملف الذي يحتوي على العنصر المراد استرداده. إذا تم حذف اسم المسار ، تكون الفئة مطلوبة. |
فئة |
اختيارية. متغير (سلسلة). سلسلة تمثل فئة العنصر. |
تستخدم وسيطة الفئةاسم تطبيق بناء الجملة.نوع العنصر ويحتوي على هذه الأجزاء:
الجزء |
الوصف |
---|---|
اسم التطبيق |
مطلوبة. متغير (سلسلة). اسم التطبيق الذي يوفر الكائن. |
نوع العنصر |
مطلوبة. متغير (سلسلة). نوع أو فئة الكائن المراد إنشاؤه. |
ملاحظات
ملاحظة: توضح الأمثلة التالية استخدام هذه الدالة في وحدة Visual Basic for Applications (VBA). لمزيد من المعلومات حول العمل مع VBA، حدد مرجع المطور في القائمة المنسدلة بجوار البحث وأدخل مصطلحا واحدا أو أكثر في مربع البحث.
استخدم الدالة GetObject للوصول إلى كائن ActiveX من ملف وتعيين الكائن إلى متغير العنصر. استخدم عبارة Set لتعيين الكائن الذي تم إرجاعه بواسطة GetObject إلى متغير العنصر. على سبيل المثال:
Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")
عند تنفيذ هذه التعليمة البرمجية، يتم بدء تشغيل التطبيق المقترن باسم المسار المحدد ويتم تنشيط الكائن في الملف المحدد.
إذا كان pathname عبارة عن سلسلة ذات طول صفري ("")، فترجع GetObject مثيل كائن جديد من النوع المحدد. إذا تم حذف الوسيطة pathname ، فترجع GetObject كائنا نشطا حاليا من النوع المحدد. إذا لم يكن هناك كائن من النوع المحدد، يحدث خطأ.
تسمح لك بعض التطبيقات بتنشيط جزء من ملف. أضف علامة تعجب (!) إلى نهاية اسم الملف واتبعها بسلسلة تحدد جزء الملف الذي تريد تنشيطه. للحصول على معلومات حول كيفية إنشاء هذه السلسلة، راجع وثائق التطبيق الذي أنشأ الكائن.
على سبيل المثال، في تطبيق رسم، قد يكون لديك طبقات متعددة لرسم مخزن في ملف. يمكنك استخدام التعليمات البرمجية التالية لتنشيط طبقة داخل رسم يسمى SCHEMA.CAD:
Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")
إذا لم تحدد فئة العنصر، فإن التنفيذ التلقائي يحدد التطبيق الذي يجب بدء تشغيله والعنصر المراد تنشيطه، استنادا إلى اسم الملف الذي توفره. ومع ذلك، قد تدعم بعض الملفات أكثر من فئة واحدة من العناصر. على سبيل المثال، قد يدعم الرسم ثلاثة أنواع مختلفة من العناصر: كائن تطبيق ، وعنصر رسم ، وعنصر شريط الأدوات ، وكلها جزء من نفس الملف. لتحديد العنصر الموجود في ملف تريد تنشيطه، استخدم وسيطة الفئة الاختيارية. على سبيل المثال:
Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", _
"FIGMENT.DRAWING")
في المثال، FIGMENT هو اسم تطبيق رسم DRAWING هو أحد أنواع العناصر التي يدعمها.
بمجرد تنشيط كائن، يمكنك الرجوع إليه في التعليمات البرمجية باستخدام متغير العنصر الذي قمت بتعريفه. في المثال السابق، يمكنك الوصول إلى خصائص وأساليب الكائن الجديد باستخدام متغير العنصر MyObject. على سبيل المثال:
MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"
ملاحظة: استخدم الدالة GetObject عندما يكون هناك مثيل حالي للكائن أو إذا كنت تريد إنشاء الكائن بملف تم تحميله بالفعل. إذا لم يكن هناك مثيل حالي، ولا تريد أن يبدأ الكائن بملف محمل، فاستخدم الدالة CreateObject .
إذا سجل كائن نفسه ككائن أحادي المثيل، يتم إنشاء مثيل واحد فقط من الكائن، بغض النظر عن عدد المرات التي يتم فيها تنفيذ CreateObject . باستخدام كائن مثيل واحد، يقوم GetObject دائما بإرجاع نفس المثيل عند استدعائه باستخدام بناء جملة السلسلة الصفرية ("")، ويتسبب في حدوث خطأ إذا تم حذف وسيطة اسم المسار . لا يمكنك استخدام GetObject للحصول على مرجع إلى فئة تم إنشاؤها باستخدام Visual Basic.
مثال
يستخدم هذا المثال الدالة GetObject للحصول على مرجع إلى ورقة عمل Excel معينة (MyXL). ويستخدم خاصية التطبيق في ورقة العمل لجعل Excel مرئيا وإغلاقه وما إلى ذلك. باستخدام استدعاءين لواجهة برمجة التطبيقات، يبحث الإجراء الفرعي DetectExcel عن Excel، وإذا كان قيد التشغيل، فسيدخله في جدول كائن قيد التشغيل. يؤدي الاستدعاء الأول إلى GetObject إلى حدوث خطأ إذا لم يكن Microsoft Excel قيد التشغيل بالفعل. في المثال، يؤدي الخطأ إلى تعيين علامة ExcelWasNotRunning إلى True. يحدد الاستدعاء الثاني إلى GetObject ملفا لفتحه. إذا لم يكن Excel قيد التشغيل بالفعل، فستبدأ المكالمة الثانية في تشغيله وترجع مرجعا إلى ورقة العمل التي يمثلها الملف المحدد، mytest.xls. يجب أن يكون الملف موجودا في الموقع المحدد؛ وإلا، يتم إنشاء خطأ أتمتة الخطأ Visual Basic. بعد ذلك، يجعل مثال التعليمات البرمجية كلا من Excel والنافذة التي تحتوي على ورقة العمل المحددة مرئية. وأخيرا، إذا لم يكن هناك إصدار سابق من Excel قيد التشغيل، فإن التعليمات البرمجية تستخدم أسلوب Quit لكائن التطبيق لإغلاق Excel. إذا كان التطبيق قيد التشغيل بالفعل، فلن يتم إجراء أي محاولة لإغلاقه. يتم تحرير المرجع نفسه عن طريق تعيينه إلى لا شيء.
' Declare necessary API routines:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
ByVal wParam as Long, _
ByVal lParam As Long) As Long
Sub GetExcel()
Dim MyXL As Object ' Variable to hold reference
' to Microsoft Excel.
Dim ExcelWasNotRunning As Boolean ' Flag for final release.
' Test to see if there is a copy of Microsoft Excel already running.
On Error Resume Next ' Defer error trapping.
' GetObject function called without the first argument returns a
' reference to an instance of the application. If the application isn't
' running, an error occurs.
Set MyXL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear ' Clear Err object in case error occurred.
' Check for Microsoft Excel. If Microsoft Excel is running,
' enter it into the Running Object table.
DetectExcel
' Set the object variable to reference the file you want to see.
Set MyXL = GetObject("c:\vb4\MYTEST.XLS")
' Show Microsoft Excel through its Application property. Then
' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
Do manipulations of your file here.
' ...
' If this copy of Microsoft Excel was not running when you
' started, close it using the Application property's Quit method.
' Note that when you try to quit Microsoft Excel, the
' title bar blinks and a message is displayed asking if you
' want to save any loaded files.
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End IF
Set MyXL = Nothing ' Release reference to the
' application and spreadsheet.
End Sub
Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
Const WM_USER = 1024
Dim hWnd As Long
' If Excel is running this API call returns its handle.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 means Excel not running.
Exit Sub
Else
' Excel is running so use the SendMessage API
' function to enter it in the Running Object Table.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
End Sub