הפונקציה GetObject

חל על
Access של Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

הערה

הפונקציה, פעולת השירות, האובייקט או המאפיין המתוארים בנושא זה אינם זמינים אם Microsoft Jet Expression Service פועל במצב ארגז חול (Sandbox), דבר שמונע הערכה של ביטויים שעלולים להיות לא בטוחים. לקבלת מידע נוסף על מצב ארגז חול, חפש "מצב ארגז חול" בעזרה.

הפונקציה מחזירה הפניה לאובייקט שסופק על-ידי רכיב ActiveX.

תחביר

GetObject([pathname ] [, מחלקה ] )

תחביר הפונקציה GetObject מכיל את הארגומנטים הבאים:

ארגומנט תיאור
שם נתיב אופציונלי. משתנה (מחרוזת). הנתיב המלא והשם של הקובץ המכיל את האובייקט לאחזור. אם pathname מושמט, דרושה מחלקה .
מחלקה אופציונלי. משתנה (מחרוזת). מחרוזת המייצגת את המחלקה של האובייקט.

ארגומנט המחלקהמשתמש בתחביר 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 מחזירה תמיד את אותו מופע כאשר היא נקראת באמצעות תחביר המחרוזת באורך אפס ("") וגורמת לשגיאה אם הארגומנט pathname מושמט. לא ניתן להשתמש ב - GetObject כדי לקבל הפניה למחלקה שנוצרה באמצעות Visual Basic.

דוגמה

דוגמה זו משתמשת בפונקציה GetObject כדי לקבל הפניה לגליון עבודה ספציפי של Excel (MyXL). הוא משתמש במאפיין היישום של גליון העבודה כדי להפוך את Excel לגלוי, כדי לסגור אותו וכן הלאה. באמצעות שתי קריאות API, פרוצדורת המשנה 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