הערה: הפונקציה, פעולת השירות, האובייקט או המאפיין המתוארים בנושא זה אינם זמינים אם שירות הביטויים של Microsoft Jet פועל במצב ארגז חול (Sandbox) שמונע הערכה של ביטויים שעלולים להיות לא בטוחים. לקבלת מידע נוסף על מצב ארגז חול, חפש את "מצב ארגז חול" בעזרה.
החזרת הפניה לאובייקט שסופק על-ידי רכיב ActiveX.
תחביר
GetObject([pathname ] [, class ] )
תחביר הפונקציה GetObject מכיל את הארגומנטים הבאים:
ארגומנט |
תיאור |
---|---|
שם נתיב |
אופציונלי. משתנה (מחרוזת). הנתיב המלא ושם הקובץ המכילים את האובייקט לאחזור. אם pathname מושמט, נדרשת מחלקה. |
מחלקה |
אופציונלי. משתנה (מחרוזת). מחרוזת המייצגת את מחלקה האובייקט. |
מחלקה זו ארגומנט את שם היישום של התחביר.objecttype והוא כולל את החלקים הבאים:
חלק |
תיאור |
---|---|
שם אפליקציה |
נדרש. משתנה (מחרוזת). שם היישום המספק את האובייקט. |
סוג אובייקט |
נדרש. משתנה (מחרוזת). הסוג או מחלקת האובייקטים שברצונך ליצור. |
הערות
הערה: הדוגמאות הבאות מדגימות את השימוש של פונקציה זו במודול Visual Basic for Applications (VBA). לקבלת מידע נוסף אודות עבודה עם VBA, בחר הפניית מפתח ברשימה הנפתחת שליד חיפוש והזן מונח אחד או יותר בתיבת החיפוש.
השתמש בפונקציה GetObject כדי לגשת לאובייקט ActiveX מקובץ ולהקצות את האובייקט משתנה אובייקט. השתמש במשפט Set כדי להקצות את האובייקט המוחזר על-ידי GetObject למשתנה האובייקט. לדוגמה:
Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")
כאשר קוד זה מבוצע, היישום המשויך ל- pathname שצוין מופעל והאובייקט בקובץ שצוין מופעל.
אם 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 תמיד מחזיר את אותו מופע כאשר מתבצעת קריאה עם תחביר מחרוזת באורך אפס (""), וגורמת לשגיאה אם הארגומנט pathname מושמט. לא ניתן להשתמש ב- GetObject כדי להשיג הפניה למחלקה שנוצרה באמצעות Visual Basic.
דוגמה
דוגמה זו משתמשת בפונקציה GetObject כדי לקבל הפניה לגליון עבודה ספציפי של Excel (MyXL). הוא משתמש במאפיין Application של גליון העבודה כדי להפוך את Excel לגלוי, כדי לסגור אותו וכן הלאה. באמצעות שתי קריאות API, ההליך DetectExcel Sub מחפש את Excel, ואם הוא פועל, מזין אותו בטבלת האובייקטים הפועלת. השיחות הראשונות אל GetObject גורמות לשגיאה אם Microsoft Excel אינו פועל כבר. בדוגמה, השגיאה גורמת להגדרה של דגל ExcelWasNotRunning כ- True. השיחה השניה אל GetObject מציינת קובץ לפתיחה. אם Excel אינו פועל עדיין, השיחה השניה מפעילה אותו ומחזירה הפניה לגליון העבודה המיוצג על-ידי הקובץ שצוין, mytest.xls. הקובץ חייב להיות קיים במיקום שצוין; אחרת, נוצרת שגיאת אוטומציה של שגיאת Visual Basic. לאחר מכן, הקוד לדוגמה הופך הן את Excel והן את החלון המכיל את גליון העבודה שצוין לגלוי. לבסוף, אם לא פועלת גירסה קודמת של Excel, הקוד משתמש בפעולת השירות Quit של אובייקט Application כדי לסגור את 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