Interaction.CreateObject(String, String) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Crea e restituisce un riferimento a un oggetto COM.
CreateObject non può essere usato 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 = "");
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object
Parametri
- ProgId
- String
Required.
String. ID programma dell'oggetto da creare.
- ServerName
- String
Optional.
String. Nome del server di rete in cui verrà creato l'oggetto. Se ServerName è una stringa vuota (""), viene usato il computer locale.
Valori restituiti
Crea e restituisce un riferimento a un oggetto COM.
CreateObject non può essere usato per creare istanze di classi in Visual Basic a meno che tali classi non vengano esposte in modo esplicito come componenti COM.
Eccezioni
Server non disponibile
Non esiste alcun oggetto del tipo specificato.
Esempio
Nell'esempio seguente viene utilizzata la funzione CreateObject 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 il programma. È inoltre necessario aggiungere un riferimento alla libreria dei tipi dalla finestra di dialogo COM della scheda Aggiungi riferimento nel menu Project. 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 Excel libreria oggetti 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 è associato in ritardo, 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 quando il programma viene compilato. A tale scopo, aggiungere un riferimento alla libreria dei tipi per l'oggetto dalla finestra di dialogo COM del menu Aggiungi riferimento nel menu Project. 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 anziché usare la 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à nell'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 (PIA) per tale libreria. Se ne trova uno, lo usa. Se non trova un assembly di interoperabilità primario, crea un assembly di interoperabilità che contiene classi di interoperabilità locali per ogni classe della 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 funzione CreateObject con oggetti Microsoft 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 in rete remoto passando il nome del computer all'argomento ServerName della CreateObject funzione. Tale nome corrisponde alla parte Nome computer di un nome di condivisione: per una condivisione denominata "\\MyServer\Public" ServerName è "MyServer".
Note
Per altre informazioni su come rendere accessibile un'applicazione in un computer in rete remoto, 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.
Note
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 caricarne un file, 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 usare la CreateObject funzione solo per creare un oggetto COM. Anche se non esiste un meccanismo equivalente esatto per la creazione di un oggetto framework .NET, il Activator nello spazio dei nomi System contiene metodi per creare oggetti locali o remoti. In particolare, il CreateInstance metodo o il CreateInstanceFrom metodo potrebbe essere utile.
Important
La CreateObject funzione richiede l'autorizzazione di codice non gestito, che potrebbe influire sull'esecuzione in situazioni di attendibilità parziale. Per altre informazioni, vedere SecurityPermission e Autorizzazioni di accesso al codice.