Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Примітка.: Функція, метод, об’єкт або властивість, описана в цьому розділі, недоступна, якщо Microsoft Jet Expression Service працює в режимі ізольованого програмного середовища, що запобігає обчисленню потенційно небезпечних виразів. Щоб отримати докладні відомості про режим ізольованого програмного середовища, у вікні довідки шукайте за запитом "режим ізольованого програмного середовища".

Повертає посилання на об’єкт, наданий компонентом ActiveX.

Синтаксис

GetObject([pathname ] [, class ] )

Синтаксис функції GetObject має такі аргументи:

Аргумент

Опис

pathname

Необов’язковий аргумент. Дані типу Variant (String). Повний шлях та ім’я файлу, що містить об’єкт, який потрібно відновити. Якщо аргумент pathname опущено, стає обов’язковим аргумент class.

class

Необов’язковий аргумент. Дані типу Variant (String). Рядок, що позначає клас об’єкта.

У аргумент класу використовується синтаксична назва програми.objecttype і має такі частини:

Частина

Опис

appname

Обов’язковий аргумент. Дані типу Variant (String). Ім’я програми, що надає об’єкт.

objecttype

Обов’язковий аргумент. Дані типу Variant (String). Тип або клас об’єкта, який потрібно створити.

Примітки

Примітка.: У прикладах нижче показано використання цієї функції в модулі 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")

Якщо не вказати аргумент class для об’єкта, автоматизація визначає, яку програму запускати та який об’єкт активувати, залежно від указаного вами імені файлу. Проте деякі файли можуть підтримувати більше одного класу об’єкта. Так, креслення може підтримувати три різні типи об’єктів: Application, Drawing і Toolbar – усі вони входять до складу одного файлу. Щоб указати, який об’єкт у файлі потрібно активувати, скористайтеся необов’язковим аргументом class. Наприклад:

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. Якщо програму вже було запущено, спроба закрити її не здійснюється. Саме посилання випускається, якщо встановити для нього значення Nothing.

' 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

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.