Interaction.CreateObject(String, String) Metoda

Definice

Vytvoří a vrátí odkaz na objekt COM. CreateObject nelze použít k vytváření instancí tříd v jazyce Visual Basic, pokud tyto třídy nejsou explicitně vystaveny jako komponenty modelu 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

Povinná hodnota. String. ID programu objektu, který se má vytvořit.

ServerName
String

Nepovinný parametr. String. Název síťového serveru, na kterém bude objekt vytvořen. Pokud ServerName je prázdný řetězec (""), použije se místní počítač.

Návraty

Vytvoří a vrátí odkaz na objekt COM. CreateObject nelze použít k vytváření instancí tříd v jazyce Visual Basic, pokud tyto třídy nejsou explicitně vystaveny jako komponenty modelu COM.

Atributy

Výjimky

Server není k dispozici

Neexistuje žádný objekt zadaného typu.

Příklady

Následující příklad používá CreateObject funkci k vytvoření listu aplikace Microsoft Excel a uloží list do souboru. Chcete-li použít tento příklad, musí být aplikace Excel nainstalována v počítači, kde je tato aplikace spuštěna. Je také nutné přidat odkaz na knihovnu typů z karty COM dialogového okna Přidat odkaz v nabídce Projekt . Název knihovny typů se liší v závislosti na verzi Excelu nainstalované v počítači. Například knihovna typů pro Microsoft Excel 2002 má název Microsoft Excel 10.0 Object Library.

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

Poznámky

Pokud chcete vytvořit instanci komponenty MODELU COM, přiřaďte objekt vrácený CreateObject objektem do proměnné objektu:

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

Typ proměnné objektu, kterou použijete k uložení vráceného objektu, může ovlivnit výkon aplikace. Deklarování proměnné objektu As Object pomocí klauzule vytvoří proměnnou, která může obsahovat odkaz na jakýkoli typ objektu. Přístup k objektu prostřednictvím této proměnné je však pozdně vázán, to znamená, že vazba nastane při spuštění programu. Existuje mnoho důvodů, proč byste se měli vyhnout pozdním vazbám, včetně pomalejšího výkonu aplikace.

Můžete vytvořit proměnnou objektu, která má za následek počáteční vazbu – tedy vazbu při kompilaci programu. Uděláte to tak, že přidáte odkaz na knihovnu typů pro váš objekt z karty COM v dialogovém okně Přidat odkaz v nabídce Projekt . Potom deklarujte proměnnou objektu konkrétního typu objektu. Ve většině případů je efektivnější použít Dim příkaz a primární sestavení interoperability k vytváření objektů než použít CreateObject funkci.

Interakce s nespravovaným kódem

Dalším problémem je, že objekty MODELU COM používají nespravovaný kód – kód bez výhody modulu CLR (Common Language Runtime). Kombinování spravovaného kódu jazyka Visual Basic s nespravovaným kódem z modelu COM je poměrně složité. Když přidáte odkaz na objekt COM, Visual Basic vyhledá primární interop sestavení (PIA) pro tuto knihovnu; pokud ho najde, použije ho. Pokud nenajde PIA, vytvoří sestavení interoperability, které obsahuje místní třídy interoperability pro každou třídu v knihovně COM. Další informace najdete v tématu Interoperabilita modelu COM v aplikacích rozhraní .NET Framework.

Obecně byste měli používat silně vázané objekty a primární sestavení zprostředkovatele, kdykoli je to možné. Následující příklady používají CreateObject funkci s objekty Microsoft Office pouze pro demonstrační účely. Tyto objekty se však snadněji používají a jsou spolehlivější při použití s příslušným primárním sestavením zprostředkovatele.

Vytváření objektu ve vzdáleném počítači

Na vzdáleném počítači v síti můžete vytvořit objekt předáním názvu počítače do ServerName argumentu CreateObject funkce. Tento název je stejný jako část Názvu počítače v názvu sdílené složky: pro sdílenou složku s názvem \\MyServer\Public je "MyServer" ServerName .

Poznámka

Další informace o zpřístupnění aplikace na vzdáleném počítači v síti najdete v dokumentaci modelu COM (viz Microsoft Developer Network). Možná budete muset přidat klíč registru pro vaši aplikaci.

Následující kód vrátí číslo verze instance Excelu spuštěné na vzdáleném počítači s názvem 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  

Pokud je název vzdáleného serveru nesprávný nebo není dostupný, dojde k chybě za běhu.

Poznámka

Použijte CreateObject , pokud neexistuje žádná aktuální instance objektu. Pokud je již spuštěna instance objektu, spustí se nová instance a vytvoří se objekt zadaného typu. Pokud chcete použít aktuální instanci nebo spustit aplikaci a nechat ji načíst soubor, použijte GetObject funkci . Pokud se objekt zaregistroval jako objekt s jednou instancí, vytvoří se pouze jedna instance objektu bez ohledu na to, kolikrát CreateObject se spustí.

Vytváření objektů rozhraní

Funkci můžete použít CreateObject pouze k vytvoření objektu COM. I když neexistuje žádný přesný ekvivalentní mechanismus pro vytvoření objektu rozhraní .NET Framework, ActivatorSystem v oboru názvů obsahuje metody pro vytvoření místních nebo vzdálených objektů. CreateInstance Konkrétně může být užitečná metoda nebo CreateInstanceFrom metoda.

Důležité

Funkce CreateObject vyžaduje oprávnění nespravovaného kódu, což může mít vliv na její provádění v situacích s částečnou důvěryhodností. Další informace najdete v tématech SecurityPermission a Přístupová oprávnění ke kódu.

Platí pro

Viz také