Interaction.CreateObject(String, String) Metod

Definition

Skapar och returnerar en referens till ett COM-objekt. CreateObject kan inte användas för att skapa instanser av klasser i Visual Basic såvida inte dessa klasser uttryckligen exponeras som COM-komponenter.

[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The COM object to be created cannot be statically analyzed and may be trimmed")]
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object CreateObject(string ProgId, string? ServerName = "");
public static object CreateObject(string ProgId, string? ServerName = "");
public static object CreateObject(string ProgId, string ServerName = "");
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The COM object to be created cannot be statically analyzed and may be trimmed")>]
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member CreateObject : string * string -> obj
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object

Parametrar

ProgId
String

Required. String. Program-ID för objektet som ska skapas.

ServerName
String

Optional. String. Namnet på servern där objektet ska skapas. Om ServerName är en tom sträng (") används den lokala datorn.

Returer

Skapar och returnerar en referens till ett COM-objekt. CreateObject kan inte användas för att skapa instanser av klasser i Visual Basic såvida inte dessa klasser uttryckligen exponeras som COM-komponenter.

Attribut

Undantag

Servern är inte tillgänglig

Det finns inget objekt av den angivna typen.

Exempel

I följande exempel används funktionen CreateObject för att skapa ett Microsoft Excel kalkylblad och spara kalkylbladet i en fil. Om du vill använda det här exemplet måste Excel installeras på den dator där programmet körs. Du måste också lägga till en referens till typbiblioteket från fliken COM på fliken Lägg till referens på menyn Project. Namnet på typbiblioteket varierar beroende på vilken version av Excel som är installerad på datorn. Typbiblioteket för Microsoft Excel 2002 heter till exempel 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

Kommentarer

Om du vill skapa en instans av en COM-komponent tilldelar du objektet som returneras av CreateObject till en objektvariabel:

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

Den typ av objektvariabel som du använder för att lagra det returnerade objektet kan påverka programmets prestanda. Om du deklarerar en objektvariabel med As Object satsen skapas en variabel som kan innehålla en referens till alla typer av objekt. Åtkomsten till objektet via variabeln är dock senbunden, dvs. bindningen sker när programmet körs. Det finns många orsaker till att du bör undvika sen bindning, inklusive långsammare programprestanda.

Du kan skapa en objektvariabel som resulterar i tidig bindning, dvs. bindning när programmet kompileras. Det gör du genom att lägga till en referens till typbiblioteket för objektet från fliken COM på fliken Lägg till referens på menyn Project. Deklarera sedan objektvariabeln för den specifika typen av objekt. I de flesta fall är det mer effektivt att använda -instruktionen Dim och en primär interop-sammansättning för att skapa objekt än att använda CreateObject funktionen.

Interagera med ohanterad kod

Ett annat problem är att COM-objekt använder ohanterad kod – kod utan fördelen med den vanliga språkkörningen. Det finns en hel del komplexitet när det gäller att blanda den hanterade koden för Visual Basic med ohanterad kod från COM. När du lägger till en referens till ett COM-objekt söker Visual Basic efter en primär interop-sammansättning (PIA) för det biblioteket. Om det hittar ett så använder det det. Om den inte hittar en PIA skapar den en samverkanssammansättning som innehåller lokala interoperabilitetsklasser för varje klass i COM-biblioteket. Mer information finns i COM-samverkan i .NET Framework-program.

Du bör vanligtvis använda starkt bundna objekt och primära interop-sammansättningar när det är möjligt. Exemplen nedan använder funktionen CreateObject med endast Microsoft Office objekt i demonstrationssyfte. Dessa objekt är dock enklare att använda och mer tillförlitliga när de används med lämplig primär interop-sammansättning.

Skapa ett objekt på en fjärrdator

Du kan skapa ett objekt på en fjärrnätverksdator genom att skicka namnet på datorn till ServerName argumentet för CreateObject funktionen. Det namnet är samma som maskinnamnsdelen av ett resursnamn: för en resurs med namnet "\\MyServer\Public" ServerName är "MyServer".

Note

Mer information om hur du gör ett program tillgängligt på en fjärrnätverksdator finns i COM-dokumentationen (se Microsoft Developer Network). Du kan behöva lägga till en registernyckel för ditt program.

Följande kod returnerar versionsnumret för en instans av Excel som körs på en fjärrdator med namnet 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

Om fjärrservernamnet är felaktigt eller om det inte är tillgängligt uppstår ett körningsfel.

Note

Använd CreateObject när det inte finns någon aktuell instans av objektet. Om en instans av objektet körs startar en ny instans och ett objekt av angiven typ skapas. Om du vill använda den aktuella instansen eller starta programmet och låta det läsa in en fil använder du GetObject funktionen. Om ett objekt har registrerat sig som ett objekt med en instans skapas bara en instans av objektet, oavsett hur många gånger CreateObject som körs.

Skapa ramverksobjekt

Du kan bara använda CreateObject funktionen för att skapa ett COM-objekt. Det finns ingen exakt motsvarande mekanism för att skapa ett .NET Framework-objekt, men Activator i namnområdet System innehåller metoder för att skapa lokala objekt eller fjärrobjekt. I synnerhet CreateInstance kan metoden eller CreateInstanceFrom metoden vara användbar.

Important

Funktionen CreateObject kräver ohanterad kodbehörighet, vilket kan påverka dess körning i situationer med partiellt förtroende. Mer information finns i SecurityPermission och Kodåtkomstbehörigheter.

Gäller för

Se även