Funkcja CreateObject

Dotyczy
Access dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Uwaga

Funkcja, metoda, obiekt lub właściwość opisane w tym temacie są wyłączone, jeśli usługa wyrażeń Microsoft Jet działa w trybie piaskownicy, co uniemożliwia ocenę potencjalnie niebezpiecznych wyrażeń. Aby uzyskać więcej informacji o trybie piaskownicy, wyszukaj termin "tryb piaskownicy" w Pomocy.

Tworzy i zwraca odwołanie do obiektu ActiveX.

Składnia

CreateObject(class [, nazwa_serwera] )

W składni funkcji CreateObject występują następujące argumenty:

Argumenty argumentów Opis
klasa Argument wymagany. Wariant (ciąg). Nazwa aplikacji i klasa obiektu do utworzenia.
servername (nazwa serwera) Argument opcjonalny. Wariant (ciąg). Nazwa serwera sieciowego, na którym zostanie utworzony obiekt. Jeśli nazwa serwera jest pustym ciągiem (""), używany jest komputer lokalny.

    

Argument classużywa składni appname.objecttype i zawiera następujące segmenty:

Segment Opis
appname (nazwa aplikacji) Argument wymagany. Wariant (ciąg). Nazwa aplikacji udostępniającej obiekt.
objecttype (typ obiektu) Argument wymagany. Wariant (ciąg). Typ lub klasa obiektu do utworzenia.

    

Uwagi

Każda aplikacja obsługująca automatyzację udostępnia co najmniej jeden typ obiektu. Na przykład edytor tekstów może udostępniać obiekt Application , obiekt Document i obiekt Toolbar .

Aby utworzyć obiekt ActiveX, przypisz obiekt zwrócony przez CreateObject do zmiennej obiektu:

Uwaga

Poniższe przykłady przedstawiają sposób użycia tej funkcji w module języka Visual Basic for Applications (VBA). Aby uzyskać dodatkowe informacje na temat pracy w języku VBA, wybierz pozycję Dokumentacja dewelopera z listy rozwijanej obok przycisku Wyszukaj i wprowadź odpowiednie terminy w polu wyszukiwania.

' Declare an object variable to hold the object 
' reference. Dim as Object causes late binding. 
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Sheet")

W tym przykładzie będziemy automatyzować obiekt arkusza kalkulacyjnego programu Excel z poziomu bazy danych programu Access. Ten kod uruchamia aplikację tworzącą obiekt, w tym przypadku arkusz kalkulacyjny programu Microsoft Excel. Po utworzeniu obiektu odwołujesz się do niego w kodzie za pomocą zdefiniowanej zmiennej obiektu. W poniższym przykładzie uzyskasz dostęp do właściwości i metod nowego obiektu za pomocą zmiennej object i innych obiektów programu Excel, ExcelSheetw tym obiektu Application i Cells kolekcji.

' Make Excel visible through the Application object.
ExcelSheet.Application.Visible = True
' Place some text in the first cell of the sheet.
ExcelSheet.Application.Cells(1, 1).Value = "This is column A, row 1"
' Save the sheet to C:\test.xls directory.
ExcelSheet.SaveAs "C:\TEST.XLS"
' Close Excel with the Quit method on the Application object.
ExcelSheet.Application.Quit
' Release the object variable.
Set ExcelSheet = Nothing

Zadeklarowanie zmiennej obiektu z klauzulą As Object tworzy zmienną, która może zawierać odwołanie do dowolnego typu obiektu. Jednak dostęp do obiektu przez tę zmienną jest opóźniony; Oznacza to, że powiązanie występuje podczas działania programu. Aby utworzyć zmienną obiektu, która powoduje wczesne powiązanie, czyli powiązanie podczas kompilacji programu, zadeklaruj zmienną obiektu z określonym identyfikatorem klasy. Na przykład można zadeklarować i utworzyć następujące odwołania programu Excel:

Dim xlApp As Excel.Application 
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.WorkSheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)

Odwołanie za pośrednictwem wczesnej zmiennej powiązanej może zapewnić lepszą wydajność, ale może zawierać tylko odwołanie do klasy określonej w deklaracji.

Obiekt zwrócony przez funkcję CreateObject można przekazać do funkcji oczekującej obiektu jako argumentu. Na przykład poniższy kod tworzy i przekazuje odwołanie do obiektu Excel.Application:

Call MySub (CreateObject("Excel.Application"))

Obiekt można utworzyć na komputerze zdalnym w sieci, przekazując nazwę komputera do argumentu servername obiektu CreateObject. Ta nazwa jest taka sama jak część Nazwa komputera w nazwie udziału: dla udziału o nazwie "\\MojSerwer\Publiczne" servername to "MojSerwer".

Uwaga

Dodatkowe informacje na temat uwidaczniania aplikacji na komputerze zdalnym w sieci można znaleźć w dokumentacji COM (zobacz Microsoft Developer Network). Może być konieczne dodanie klucza rejestru dla aplikacji.

Poniższy kod zwraca numer wersji wystąpienia programu Excel uruchomionego na komputerze zdalnym o nazwie MyServer:

Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application", "MyServer")
Debug.Print xlApp.Version

Jeśli serwer zdalny nie istnieje lub jest niedostępny, wystąpi błąd wykonania.

Uwaga

Polecenia CreateObject należy używać, gdy nie ma bieżącego wystąpienia obiektu. Jeśli wystąpienie obiektu jest już uruchomione, uruchamiane jest nowe wystąpienie i tworzony jest obiekt określonego typu. Aby użyć bieżącego wystąpienia lub uruchomić aplikację i załadować przez nią plik, użyj funkcji GetObject .

Jeśli obiekt zarejestrował się jako obiekt o jednym wystąpieniu, tworzone jest tylko jedno wystąpienie obiektu, bez względu na to, ile razy CreateObject jest wykonywane.

Przykład

W tym przykładzie użyto funkcji CreateObject w celu ustawienia odwołania (

xlApp

) do programu Excel. Używa odwołania, aby uzyskać dostęp do właściwości Visible programu Excel, a następnie używa metody Quit programu Excel, aby ją zamknąć. Na koniec samo odniesienie zostaje zwolnione.

Dim xlApp As Object    ' Declare variable to hold the reference.
Set xlApp = CreateObject("excel.application")
    ' You may have to set Visible property to True
    ' if you want to see the application.
xlApp.Visible = True
    ' Use xlApp to access Microsoft Excel's 
    ' other objects.
xlApp.Quit    ' When you finish, use the Quit method to close 
Set xlApp = Nothing    ' the application, then release the reference.