ملاحظة
يتم تعطيل الوظيفة أو الطريقة أو العنصر أو الخاصية الموضحة في هذا الموضوع إذا كانت خدمة Microsoft Jet Expression Service قيد التشغيل في وضع الحماية، مما يمنع تقييم التعبيرات التي يحتمل أن تكون غير آمنة. لمزيد من المعلومات حول وضع الحماية، ابحث عن "وضع الحماية" في "تعليمات".
ترجع هذه الدالة مرجعا إلى كائن يوفره مكون ActiveX.
بناء الجملة
GetObject([pathname ] [, class ] )
يحتوي بناء جملة الدالة GetObject على الوسيطات التالية:
| الوسيطة | الوصف |
|---|---|
| اسم المسار | اختيارية. المتغير (سلسلة). المسار الكامل واسم الملف الذي يحتوي على العنصر المراد استرداده. إذا تم حذف اسم المسار ، فيجب إدخال الفئة . |
| فئة | اختيارية. المتغير (سلسلة). سلسلة تمثل فئة العنصر. |
تستخدم وسيطة الفئةبناء الجملة appname.objecttype وتتضمن الأجزاء التالية:
| الجزء | الوصف |
|---|---|
| اسم التطبيق | مطلوبة. المتغير (سلسلة). اسم التطبيق الذي يوفر العنصر. |
| نوع العنصر | مطلوبة. المتغير (سلسلة). نوع الكائن المطلوب إنشاؤه أو فئته. |
ملاحظات
ملاحظة
توضح الأمثلة التالية استخدام هذه الدالة في وحدة نمطية ل 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 إلى صواب. يحدد الاستدعاء الثاني ل GetObject ملفا لفتحه. إذا لم يكن Excel قيد التشغيل بالفعل، فستبدأ عملية الاستدعاء الثانية بتشغيله وتعيد مرجعا إلى ورقة العمل التي يمثلها الملف المحدد، mytest.xls. يجب أن يكون الملف موجودا في الموقع المحدد؛ وإلا، فسيتم إنشاء خطأ "أتمتة أخطاء Visual Basic". بعد ذلك، تساعد التعليمة البرمجية النموذجية على إظهار كل من Excel والنافذة التي تحتوي على ورقة العمل المحددة. وأخيرا، إذا لم يكن هناك أي إصدار سابق من Excel قيد التشغيل، تستخدم التعليمة البرمجية طريقة إنهاء عنصر التطبيق لإغلاق 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