Функция GetObject

Важно : Тази статия е преведена машинно – вижте отказа от отговорност. Английската версия на тази статия за справка можете да намерите тук .

Забележка : Функция, метод, обект или свойство, описани в тази тема е забранено, ако Microsoft Jet Expression Service се изпълнява в ограничителен режим, който не позволява на оценката на потенциално опасни изрази. За повече информация за ограничителен режим потърсете "ограничителен режим" в "Помощ".

Връща препратка към обект, предоставен от ActiveX компонент.

Синтаксис

GetObject ([път ] [, клас ] )

Синтаксисът на функцията GetObject използва следните аргументи:

Аргумент

Описание

име на път

По желание. Вариант (Низ). Пълния път и името на файла, съдържащ извличания обект. Ако името на пътя е пропуснато, класа се изисква.

клас

По желание. Вариант (Низ). Низ, представящ клас на обекта.


Клас аргумент използва синтаксис appname.тип на обект и има следните части:

Част

Описание

AppName

Изисква се. Вариант (Низ). Името на приложението, предоставяне на обекта.

тип на обект

Изисква се. Вариант (Низ). Тип или клас на обекта, за да създадете.


Забележки

Забележка : Примерите по-долу илюстрират използването на тази функция във Visual Basic for Applications (VBA). За повече информация относно работата с VBA изберете Справочни материали за разработчици в падащия списък до Търсене и въведете един или няколко термина в полето за търсене.

Използвайте функцията GetObject , за да получите достъп до ActiveX обект от файл и да присвоите обекта променлива за обект. Използвайте отчета за Настройване , за да присвоите върнатия от GetObject обект на променливата обект. Например:

Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

Когато се изпълнява този код, се стартира приложението, свързано със зададеното име на път и се активира обект в зададения файл.

Ако името на пътя е низ с нулева дължина (""), GetObject връща нов екземпляр на обект от указания тип. Ако аргументът име_на_път се пропусне, 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 , за да получите препратка към определени Microsoft Office Excel 2007 лист (MyXL). Тя използва работния лист приложение свойство да направи Excel видим, за да го затворите и т.н. Използване на два API повиквания, DetectExcel Sub процедурата изглежда за Excel и ако се изпълнява, то влезе в таблицата изпълнява обект. При първото извикване на GetObject причинява грешка, ако вече не се изпълнява Microsoft Excel. В примера грешката кара ExcelWasNotRunning флаг, за да бъде настроено на "истина". Второто извикване на 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

Забележка : Отказ от отговорност за машинен превод: Тази статия е преведена от компютърна система без човешка намеса. Microsoft предлага тези машинни преводи, за да помогне на потребителите, които не говорят английски, да се възползват от съдържанието за продукти, услуги и технологии на Microsoft. Тъй като статията е преведена машинно, е възможно да съдържа грешки в речника, синтаксиса и граматиката.

Разширете уменията си
Преглед на обучението
Получавайте първи новите функции
Присъединете се към участниците в Office Insider

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×