Interaction.CreateObject(String, String) Metodo

Definizione

Crea e restituisce un riferimento a un oggetto COM. 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.

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

Parametri

ProgId
String

Obbligatorio. String. ID di programma dell'oggetto da creare.

ServerName
String

facoltativo. String. Nome del server di rete in cui verrà creato l'oggetto. Se ServerName è una stringa vuota (""), viene utilizzato il computer locale.

Restituisce

Crea e restituisce un riferimento a un oggetto COM. 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.

Attributi

Eccezioni

Server non disponibile.

Non esiste alcun oggetto del tipo specificato.

Esempio

Nell'esempio seguente viene utilizzata la CreateObject funzione per creare un foglio di lavoro Microsoft Excel e salvare il foglio di lavoro in un file. Per utilizzare questo esempio, Excel deve essere installato nel computer in cui viene eseguito questo programma. Inoltre, è necessario aggiungere un riferimento alla libreria dei tipi dalla scheda COM della finestra di dialogo Aggiungi riferimento nel menu Progetto . Il nome della libreria dei tipi varia a seconda della versione di Excel installata nel computer. Ad esempio, la libreria dei tipi per Microsoft Excel 2002 è denominata Microsoft Libreria oggetti di 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

Commenti

Per creare un'istanza di un componente COM, assegnare l'oggetto restituito da CreateObject a una variabile oggetto:

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

Il tipo di variabile oggetto usato per archiviare l'oggetto restituito può influire sulle prestazioni dell'applicazione. La dichiarazione di una variabile oggetto con la As Object clausola crea una variabile che può contenere un riferimento a qualsiasi tipo di oggetto. Tuttavia, l'accesso all'oggetto tramite tale variabile è ad associazione tardiva, ovvero l'associazione si verifica quando viene eseguito il programma. Esistono molti motivi per cui è consigliabile evitare l'associazione tardiva, incluse le prestazioni dell'applicazione più lente.

È possibile creare una variabile oggetto che restituisce un'associazione anticipata, ovvero l'associazione quando il programma viene compilato. 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 . Dichiarare quindi la variabile oggetto del tipo specifico dell'oggetto. Nella maggior parte dei casi, è più efficiente usare l'istruzione Dim e un assembly di interoperabilità primario per creare oggetti rispetto all'uso della CreateObject funzione .

Interazione con codice non gestito

Un altro problema è che gli oggetti COM usano codice non gestito, ovvero il codice senza il vantaggio di Common Language Runtime. Esiste un giusto grado di complessità per combinare il codice gestito di Visual Basic con codice non gestito da COM. Quando si aggiunge un riferimento a un oggetto COM, Visual Basic cerca un assembly di interoperabilità primario per tale libreria; se ne trova uno, lo usa. Se non trova un pia, crea un assembly di interoperabilità che contiene classi di interoperabilità locali per ogni classe nella libreria COM. Per altre informazioni, vedere Interoperabilità COM nelle applicazioni .NET Framework.

È in genere consigliabile usare oggetti fortemente associati e assembly di interoperabilità primari, quando possibile. Gli esempi seguenti usano la CreateObject funzione con Microsoft oggetti di Office solo a scopo dimostrativo. Tuttavia, questi oggetti sono più facili da usare e più affidabili quando vengono usati con l'assembly di interoperabilità primario appropriato.

Creazione di un oggetto in un computer remoto

È possibile creare un oggetto in un computer di rete remoto passando il nome del computer all'argomento ServerName della CreateObject funzione. Il nome corrisponde alla parte Nome computer di un nome di condivisione: per una condivisione denominata "\\MyServer\Public" ServerName è "MyServer".

Nota

Per altre informazioni su come rendere accessibile un'applicazione in un computer in rete remota, vedere la documentazione COM (vedere Microsoft Developer Network). Potrebbe essere necessario aggiungere una chiave del Registro di sistema per l'applicazione.

Il codice seguente restituisce il numero di versione di un'istanza di Excel in esecuzione in un computer remoto denominato 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 se non è disponibile, si verifica un errore di run-time.

Nota

Utilizzare CreateObject quando non è presente alcuna istanza corrente dell'oggetto . Se un'istanza dell'oggetto è già in esecuzione, viene avviata una nuova istanza e viene creato un oggetto del tipo specificato. Per usare l'istanza corrente o per avviare l'applicazione e caricarlo, usare la GetObject funzione . Se un oggetto si è registrato come oggetto a istanza singola, viene creata una sola istanza dell'oggetto, indipendentemente dal numero di esecuzioni CreateObject .

Creazione di oggetti framework

È possibile utilizzare la CreateObject funzione solo per creare un oggetto COM. Anche se non esiste un meccanismo equivalente esatto per la creazione di un oggetto .NET Framework, Activator nello spazio dei System nomi sono contenuti metodi per creare oggetti locali o remoti. In particolare, il CreateInstance metodo o il CreateInstanceFrom metodo potrebbe essere utile.

Importante

La CreateObject funzione richiede l'autorizzazione del codice non gestito, che potrebbe influire sull'esecuzione in situazioni di attendibilità parziale. Per altre informazioni, vedere SecurityPermission e Autorizzazioni di accesso al codice.

Si applica a

Vedi anche