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. 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 di 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 Libreria oggetti di Microsoft 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 gli oggetti di 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. 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 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.
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. Sebbene non esista un meccanismo esatto equivalente per la creazione di un oggetto .NET Framework, Activator nello System spazio dei 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.