Udostępnij za pośrednictwem


Interaction.CreateObject(String, String) Metoda

Definicja

Tworzy i zwraca odwołanie do obiektu COM. CreateObject nie można używać do tworzenia wystąpień klas w Visual Basic, chyba że te klasy są jawnie uwidocznione jako składniki COM.

public static object CreateObject (string ProgId, string? ServerName = "");
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object CreateObject (string ProgId, string? ServerName = "");
public static object CreateObject (string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object

Parametry

ProgId
String

Wymagane. String. Identyfikator programu obiektu do utworzenia.

ServerName
String

Opcjonalny. String. Nazwa serwera sieciowego, na którym zostanie utworzony obiekt. Jeśli ServerName jest pusty ciąg (""), używany jest komputer lokalny.

Zwraca

Tworzy i zwraca odwołanie do obiektu COM. CreateObject nie można używać do tworzenia wystąpień klas w Visual Basic, chyba że te klasy są jawnie uwidocznione jako składniki COM.

Atrybuty

Wyjątki

Serwer jest niedostępny

Nie istnieje żaden obiekt określonego typu.

Przykłady

W poniższym przykładzie użyto CreateObject funkcji do utworzenia arkusza programu Microsoft Excel i zapisania arkusza w pliku. Aby użyć tego przykładu, program Excel musi być zainstalowany na komputerze, na którym działa ten program. Ponadto należy dodać odwołanie do biblioteki typów z karty COM okna dialogowego Dodawanie odwołania w menu Projekt . Nazwa biblioteki typów różni się w zależności od wersji programu Excel zainstalowanej na komputerze. Na przykład biblioteka typów programu Microsoft Excel 2002 nosi nazwę Biblioteka obiektów programu Microsoft Excel 10.0.

Sub TestExcel()
    Dim xlApp As Microsoft.Office.Interop.Excel.Application
    Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
    Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet

    xlApp = CType(CreateObject("Excel.Application"), 
                Microsoft.Office.Interop.Excel.Application)
    xlBook = CType(xlApp.Workbooks.Add, 
                Microsoft.Office.Interop.Excel.Workbook)
    xlSheet = CType(xlBook.Worksheets(1), 
                Microsoft.Office.Interop.Excel.Worksheet)

    ' The following statement puts text in the second row of the sheet.
    xlSheet.Cells(2, 2) = "This is column B row 2"
    ' The following statement shows the sheet.
    xlSheet.Application.Visible = True
    ' The following statement saves the sheet to the C:\Test.xls directory.
    xlSheet.SaveAs("C:\Test.xls")
    ' Optionally, you can call xlApp.Quit to close the workbook.
End Sub

Uwagi

Aby utworzyć wystąpienie składnika COM, przypisz obiekt zwrócony przez CreateObject do zmiennej obiektu:

Sub CreateADODB()  
   Dim adoApp As Object  
   adoApp = CreateObject("ADODB.Connection")  
End Sub  

Typ zmiennej obiektu używanej do przechowywania zwróconego obiektu może mieć wpływ na wydajność aplikacji. Deklarowanie zmiennej obiektu za pomocą klauzuli As Object tworzy zmienną, która może zawierać odwołanie do dowolnego typu obiektu. Jednak dostęp do obiektu za pośrednictwem tej zmiennej jest opóźniony, czyli powiązanie występuje po uruchomieniu programu. Istnieje wiele powodów, dla których należy unikać późnego powiązania, w tym wolniejszej wydajności aplikacji.

Możesz utworzyć zmienną obiektu, która powoduje wczesne powiązanie — czyli powiązanie podczas kompilowania programu. W tym celu dodaj odwołanie do biblioteki typów dla obiektu z karty COM okna dialogowego Dodawanie odwołania w menu Projekt . Następnie zadeklaruj zmienną obiektu określonego typu. W większości przypadków bardziej wydajne jest użycie instrukcji Dim i podstawowego zestawu międzyoperacyjnego w celu utworzenia obiektów niż użycie CreateObject funkcji.

Interakcja z niezarządzanym kodem

Innym problemem jest to, że obiekty COM używają niezarządzanego kodu — kodu bez korzyści ze środowiska uruchomieniowego języka wspólnego. Istnieje pewien stopień złożoności związany z mieszaniem zarządzanego kodu języka Visual Basic z niezarządzanym kodem z modelu COM. Po dodaniu odwołania do obiektu COM program Visual Basic wyszukuje podstawowy zestaw międzyoperacyjnej (PIA) dla tej biblioteki; jeśli go znajdzie, używa go. Jeśli nie znajdzie ona danych pia, tworzy zestaw współdziałania zawierający lokalne klasy współdziałania dla każdej klasy w bibliotece COM. Aby uzyskać więcej informacji, zobacz Współdziałanie modelu COM w aplikacjach .NET Framework.

Zawsze, gdy to możliwe, należy używać silnie powiązanych obiektów i podstawowych zestawów międzyoperacyjnych. W poniższych przykładach użyto CreateObject funkcji z obiektami pakietu Microsoft Office tylko do celów demonstracyjnych. Jednak te obiekty są łatwiejsze do użycia i bardziej niezawodne w przypadku użycia z odpowiednim podstawowym zestawem międzyoperacyjności.

Tworzenie obiektu na komputerze zdalnym

Obiekt można utworzyć na komputerze sieci zdalnej, przekazując nazwę komputera do ServerName argumentu CreateObject funkcji. Ta nazwa jest taka sama jak część Nazwa maszyny nazwy udziału: dla udziału o nazwie "\MyServer\Public" ServerName to "MyServer"."

Uwaga

Zapoznaj się z dokumentacją modelu COM (zobacz Microsoft Developer Network), aby uzyskać dodatkowe informacje na temat udostępniania aplikacji na komputerze sieci zdalnej. 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:

Sub CreateRemoteExcelObj()  
    Dim xlApp As Object  
    ' Replace string "\\MyServer" with name of the remote computer.  
    xlApp = CreateObject("Excel.Application", "\\MyServer")  
    MsgBox(xlApp.Version)  
End Sub  

Jeśli nazwa serwera zdalnego jest nieprawidłowa lub jeśli jest niedostępna, wystąpi błąd czasu wykonywania.

Uwaga

Użyj CreateObject polecenia , jeśli nie ma bieżącego wystąpienia obiektu. Jeśli wystąpienie obiektu jest już uruchomione, zostanie uruchomione nowe wystąpienie i zostanie utworzony obiekt określonego typu. Aby użyć bieżącego wystąpienia lub uruchomić aplikację i załadować plik, użyj GetObject funkcji . Jeśli obiekt zarejestrował się jako obiekt pojedynczego wystąpienia, tworzone jest tylko jedno wystąpienie obiektu, bez względu na to, ile razy CreateObject jest wykonywane.

Tworzenie obiektów szablonu

Funkcji można użyć CreateObject tylko do utworzenia obiektu COM. Chociaż nie ma dokładnego mechanizmu równoważnego do tworzenia obiektu .NET Framework, Activator w System przestrzeni nazw znajdują się metody tworzenia obiektów lokalnych lub zdalnych. W szczególności CreateInstance metoda lub metoda może być przydatna CreateInstanceFrom .

Ważne

Funkcja CreateObject wymaga niezarządzanego uprawnienia kodu, co może mieć wpływ na jego wykonywanie w sytuacjach częściowych zaufania. Aby uzyskać więcej informacji, zobacz SecurityPermission i Uprawnienia dostępu do kodu.

Dotyczy

Zobacz też