Interaction.CreateObject(String, String) Metodo

Definizione

Crea e restituisce un riferimento a un oggetto COM.Creates and returns a reference to a COM object. Non è possibile utilizzare CreateObject per creare istanze di classi in Visual Basic a meno che tali classi non vengano esposte in modo esplicito come componenti COM.CreateObject cannot be used to create instances of classes in Visual Basic unless those classes are explicitly exposed as COM components.

public static object CreateObject (string ProgId, string? ServerName = "");
public static object CreateObject (string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object

Parametri

ProgId
String

Obbligatorio.Required. String.String. ID di programma dell'oggetto da creare.The program ID of the object to create.

ServerName
String

facoltativo.Optional. String.String. Nome del server di rete in cui verrà creato l'oggetto.The name of the network server where the object will be created. Se ServerName è una stringa vuota (""), viene utilizzato il computer locale.If ServerName is an empty string (""), the local computer is used.

Restituisce

Object

Crea e restituisce un riferimento a un oggetto COM.Creates and returns a reference to a COM object. Non è possibile utilizzare CreateObject per creare istanze di classi in Visual Basic a meno che tali classi non vengano esposte in modo esplicito come componenti COM.CreateObject cannot be used to create instances of classes in Visual Basic unless those classes are explicitly exposed as COM components.

Eccezioni

Server non disponibile.Server is unavailable

Non esiste alcun oggetto del tipo specificato.No object of the specified type exists

Esempio

Nell'esempio seguente viene utilizzata la CreateObject funzione per creare un foglio di lavoro di Microsoft Excel e il foglio di lavoro viene salvato in un file.The following example uses the CreateObject function to create a Microsoft Excel worksheet and saves the worksheet to a file. Per usare questo esempio, è necessario che Excel sia installato nel computer in cui viene eseguito il programma.To use this example, Excel must be installed on the computer where this program runs. Inoltre, è necessario aggiungere un riferimento alla libreria dei tipi dalla scheda com della finestra di dialogo Aggiungi riferimento nel menu progetto .Also, you must add a reference to the type library from the COM tab of the Add Reference dialog box on the Project menu. Il nome della libreria dei tipi varia a seconda della versione di Excel installata nel computer.The name of the type library varies depending on the version of Excel installed on your computer. La libreria dei tipi per Microsoft Excel 2002, ad esempio, è denominata libreria oggetti di Microsoft excel 10,0.For example, the type library for Microsoft Excel 2002 is named 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

Commenti

Per creare un'istanza di un componente COM, assegnare l'oggetto restituito da CreateObject a una variabile oggetto:To create an instance of a COM component, assign the object returned by CreateObject to an object variable:

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

Il tipo di variabile oggetto utilizzato per archiviare l'oggetto restituito può influire sulle prestazioni dell'applicazione.The type of object variable you use to store the returned object can affect your application's performance. La dichiarazione di una variabile oggetto con la As Object clausola crea una variabile che può contenere un riferimento a qualsiasi tipo di oggetto.Declaring an object variable with the As Object clause creates a variable that can contain a reference to any type of object. Tuttavia, l'accesso all'oggetto tramite tale variabile è ad associazione tardiva, ovvero l'associazione si verifica quando viene eseguito il programma.However, access to the object through that variable is late-bound, that is, the binding occurs when your program runs. Esistono molti motivi per cui è consigliabile evitare l'associazione tardiva, incluse le prestazioni dell'applicazione più lente.There are many reasons you should avoid late binding, including slower application performance.

È possibile creare una variabile oggetto che comporta un'associazione anticipata, ovvero l'associazione quando il programma viene compilato.You can create an object variable that results in early binding - that is, binding when the program is compiled. A tale scopo, aggiungere un riferimento alla libreria dei tipi per l'oggetto dalla scheda com della finestra di dialogo Aggiungi riferimento nel menu progetto .To do so, add a reference to the type library for your object from the COM tab of the Add Reference dialog box on the Project menu. Dichiarare quindi la variabile oggetto del tipo specifico dell'oggetto.Then declare the object variable of the specific type of your object. Nella maggior parte dei casi, è più efficiente utilizzare l' Dim istruzione e un assembly di interoperabilità primario per creare oggetti anziché utilizzare la CreateObject funzione.In most cases, it is more efficient to use the Dim statement and a primary interop assembly to create objects than it is to use the CreateObject function.

Interazione con codice non gestitoInteracting with Unmanaged Code

Un altro problema è che gli oggetti COM utilizzano codice non gestito senza il vantaggio del Common Language Runtime.Another issue is that COM objects use unmanaged code - code without the benefit of the common language runtime. Per combinare il codice gestito di Visual Basic con codice non gestito di COM, si verifica un notevole livello di complessità.There is a fair degree of complexity involved in mixing the managed code of Visual Basic with unmanaged code from COM. Quando si aggiunge un riferimento a un oggetto COM, Visual Basic cerca un assembly di interoperabilità primario (PIA) per la libreria; Se ne trova una, viene usata.When you add a reference to a COM object, Visual Basic searches for a primary interop assembly (PIA) for that library; if it finds one, then it uses it. Se non trova un assembly di interoperabilità primario, viene creato un assembly di interoperabilità che contiene le classi di interoperabilità locale per ogni classe nella libreria COM.If it does not find a PIA, then it creates an interoperability assembly that contains local interoperability classes for each class in the COM library. Per ulteriori informazioni, vedere interoperabilità com nelle applicazioni .NET Framework.For more information, see COM Interoperability in .NET Framework Applications.

È in genere consigliabile usare gli oggetti con binding forte e gli assembly di interoperabilità primari laddove possibile.You should generally use strongly bound objects and primary interop assemblies whenever possible. Negli esempi seguenti viene utilizzata la CreateObject funzione con Microsoft Office oggetti solo a scopo dimostrativo.The examples below use the CreateObject function with Microsoft Office objects for demonstration purposes only. Tuttavia, questi oggetti sono più semplici da utilizzare e più affidabili se utilizzati con l'assembly di interoperabilità primario appropriato.However, these objects are easier to use and more reliable when used with the appropriate primary interop assembly.

Creazione di un oggetto in un computer remotoCreating an Object on a Remote Computer

È possibile creare un oggetto in un computer remoto in rete passando il nome del computer all' ServerName argomento della CreateObject funzione.You can create an object on a remote networked computer by passing the name of the computer to the ServerName argument of the CreateObject function. Questo nome corrisponde alla parte del nome del computer di un nome di condivisione: per una condivisione denominata " \ \MyServer\Public", ServerName è "MyServer".That name is the same as the Machine Name portion of a share name: for a share named "\\MyServer\Public," ServerName is "MyServer."

Nota

Vedere la documentazione COM (vedere Microsoft Developer Network) per informazioni aggiuntive su come rendere un'applicazione accessibile in un computer remoto in rete.Refer to COM documentation (see Microsoft Developer Network) for additional information on making an application accessible on a remote networked computer. Potrebbe essere necessario aggiungere una chiave del registro di sistema per l'applicazione.You may need to add a registry key for your application.

Il codice seguente restituisce il numero di versione di un'istanza di Excel in esecuzione in un computer remoto denominato MyServer :The following code returns the version number of an instance of Excel running on a remote computer named 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  

Se il nome del server remoto non è corretto o non è disponibile, si verifica un errore di run-time.If the remote server name is incorrect, or if it is unavailable, a run-time error occurs.

Nota

Utilizzare CreateObject se non è presente alcuna istanza corrente dell'oggetto.Use CreateObject when there is no current instance of the object. Se un'istanza dell'oggetto è già in esecuzione, viene avviata una nuova istanza e viene creato un oggetto del tipo specificato.If an instance of the object is already running, a new instance is started, and an object of the specified type is created. Per utilizzare l'istanza corrente o per avviare l'applicazione e caricare un file, utilizzare la GetObject funzione.To use the current instance, or to start the application and have it load a file, use the GetObject function. Se un oggetto si è registrato come oggetto a istanza singola, viene creata solo un'istanza dell'oggetto, indipendentemente dal numero di esecuzioni CreateObject .If an object has registered itself as a single-instance object, only one instance of the object is created, no matter how many times CreateObject is executed.

Creazione di oggetti FrameworkCreating Framework Objects

È possibile utilizzare la CreateObject funzione solo per creare un oggetto com.You can use the CreateObject function only to create a COM object. Sebbene non esista un meccanismo equivalente esatto per la creazione di un oggetto .NET Framework, nello Activator System spazio dei nomi sono contenuti metodi per creare oggetti locali o remoti.While there is no exact equivalent mechanism for creating a .NET Framework object, the Activator in the System namespace contains methods to create local or remote objects. In particolare, il CreateInstance metodo o il CreateInstanceFrom metodo può essere utile.In particular, the CreateInstance method or the CreateInstanceFrom method might be useful.

Importante

La CreateObject funzione richiede l'autorizzazione per il codice non gestito, che può influire sulla sua esecuzione in situazioni di attendibilità parziale.The CreateObject function requires unmanaged code permission, which might affect its execution in partial-trust situations. Per ulteriori informazioni, vedere SecurityPermission e autorizzazioni di accesso al codice.For more information, see SecurityPermission and Code Access Permissions.

Si applica a

Vedi anche