הערה: הפונקציה, פעולת השירות, האובייקט או המאפיין המתוארים בנושא זה אינה זמינה אם שירות הביטויים של Microsoft Jet פועל במצב ארגז חול, דבר המונע הערכה של ביטויים לא בטוחים שעלולים להיות לא בטוחים. לקבלת מידע נוסף אודות מצב ארגז חול, חפש את ' מצב ארגז חול ' בעזרה.

החזרת הפניה לאובייקט שמספק רכיב ActiveX.

תחביר

GetObject ([pathname ] [ , class ] )

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

ארגומנט

תיאור

נתיב

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

מחלקה

אופציונלי. משתנה (מחרוזת). מחרוזת המייצגת את ה מחלקה של האובייקט.


ארגומנט הכיתה משתמשת בתחביר appname.objecttype והוא כולל את החלקים הבאים:

חלק

תיאור

appname

נדרש. משתנה (מחרוזת). שם היישום המספק את האובייקט.

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 כדי לקבל הפניה לגליון עבודה ספציפי של Microsoft Office Excel 2007 (MyXL). היא משתמשת במאפיין היישום של גליון העבודה כדי לגרום ל-Excel להיראות, כדי לסגור אותו וכן הלאה. באמצעות שני שיחות API, פרוצדורת Sub DetectExcel מחפשת את Excel, ואם היא פועלת, מזינה אותו בטבלת האובייקטים הפועלים. השיחה הראשונה ל- GetObject גורמת לשגיאה אם Microsoft Excel אינו פועל עדיין. בדוגמה, השגיאה גורמת לכך שדגל ExcelWasNotRunning יהיה מוגדר ל-True. השיחה השניה ל- GetObject מציינת שהקובץ ייפתח. אם Excel אינו פועל עדיין, השיחה השניה מתחילה ומחזירה הפניה לגליון העבודה המיוצג על-ידי הקובץ שצוין mytest.xls. הקובץ חייב להיות קיים במיקום שצוין; אחרת, נוצרת שגיאת אוטומציה של שגיאות Visual Basic. בשלב הבא, קוד הדוגמה הופך את Excel וגם את החלון המכיל את גליון העבודה שצוין לגלוי. לבסוף, אם לא הופעלה גירסה קודמת של Excel, הקוד משתמש בפעולת השירות שלהאובייקט Applicationt כדי לסגור את 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

זקוק לעזרה נוספת?

הרחב את הכישורים שלך
סייר בהדרכה
קבל תכונות חדשות לפני כולם
הצטרף למשתתפי Microsoft Office Insider

האם מידע זה היה שימושי?

עד כמה אתם מרוצים מאיכות השפה?
מה השפיע על החוויה שלכם?

תודה על המשוב!

×