Funzione CreateObject (Visual Basic)
Aggiornamento: novembre 2007
Crea e restituisce un riferimento a un oggetto COM. In Visual Basic non è possibile utilizzare la funzione CreateObject per creare istanze di classi, a meno che tali classi non siano esposte in modo esplicito come componenti COM.
Public Shared Function CreateObject( _
ByVal ProgId As String, _
Optional ByVal ServerName As String = "" _
) As Object
Parametri
ProgId
Obbligatorio. String. ID di programma dell'oggetto da creare.ServerName
Facoltativo. String. Nome del server di rete in cui verrà creato l'oggetto. Se ServerName è una stringa vuota (""), viene utilizzato il computer locale.
Eccezioni
Tipo di eccezione |
Numero di errore |
Condizione |
---|---|---|
ProgId non trovato o non specificato. -oppure- ServerName non riesce a eseguire la funzione DnsValidateName probabilmente perché supera 63 caratteri o contiene un carattere non valido. |
||
Server non disponibile. |
||
Non esiste alcun oggetto del tipo specificato. |
Se si esegue l'aggiornamento delle applicazioni Visual Basic 6.0 che utilizzano la gestione degli errori non strutturata, vedere la colonna "Numero di errore". È possibile confrontare il numero di errore con la Proprietà Number (oggetto Err). Se possibile, tuttavia, si consiglia di sostituire il controllo dell'errore con la procedura illustrata nella sezione Cenni preliminari sulla gestione strutturata delle eccezioni per Visual Basic.
Note
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 utilizzato per memorizzare l'oggetto restituito può influire sulle prestazioni dell'applicazione. Se una variabile oggetto viene dichiarata con la clausola As Object, verrà creata una variabile che può contenere un riferimento a qualsiasi tipo di oggetto. L'accesso all'oggetto mediante tale variabile, tuttavia, viene eseguito ad associazione tardiva, ossia l'associazione si verifica quando il programma viene eseguito. È opportuno evitare l'associazione tardiva per numerosi motivi, tra cui la riduzione delle prestazioni dell'applicazione.
È possibile creare una variabile oggetto che determina un'associazione anticipata, ossia un'associazione che si verifica durante la fase di compilazione del programma. A tale scopo, aggiungere alla libreria dei tipi un riferimento all'oggetto nella scheda COM della finestra di dialogo Aggiungi riferimento disponibile dal menu Progetto. Dichiarare quindi la variabile del tipo specifico dell'oggetto. Nella maggior parte dei casi, per la creazione di oggetti si rivela più efficiente utilizzare l'istruzione Dim e un assembly di interoperabilità primario anziché la funzione CreateObject.
Interazione con codice non gestito
Un altro problema è determinato dall'utilizzo negli oggetti COM di codice non gestito, quindi privo dei vantaggi assicurati da CLR (Common Language Runtime). L'utilizzo congiunto di codice gestito di Visual Basic e codice non gestito di tipo COM è un'attività piuttosto complessa. Quando si aggiunge un riferimento a un oggetto COM, viene eseguita la ricerca di un assembly di interoperabilità primario per tale libreria. Se la ricerca ha esito positivo, verrà utilizzato l'assembly trovato. In caso contrario, verrà creato un assembly di interoperabilità contenente le classi di interoperabilità locali per ciascuna classe della libreria COM. Per ulteriori informazioni, vedere Interoperabilità COM nelle applicazioni .NET Framework.
Si consiglia di utilizzare quando possibile oggetti con associazione forte e assembly di interoperabilità primari. Negli esempi che seguono viene utilizzata la funzione CreateObject con oggetti Microsoft Office solo a scopo dimostrativo. Tuttavia questi oggetti sono più semplici da utilizzare e più affidabili se utilizzati con l'assembly di interoperabilità primario appropriato.
Creazione di un oggetto in un computer remoto
È possibile creare un oggetto in un computer remoto in rete passando il nome del computer all'argomento ServerName della funzione CreateObject. Il nome corrisponde alla parte relativa al nome del computer di un nome di condivisione. Nel caso di una condivisione denominata "\\MyServer\Public", ad esempio, ServerName è "MyServer".
![]() |
---|
Per ulteriori informazioni su come rendere accessibile un'applicazione su un computer remoto in rete, consultare la documentazione COM (vedere Microsoft Developer Network). Può essere necessario aggiungere una chiave del Registro di sistema per l'applicazione. |
Il codice riportato di seguito restituisce il numero di versione di un'istanza di Excel in esecuzione su 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 è errato oppure non è disponibile, si verificherà un errore di runtime.
![]() |
---|
Utilizzare la funzione CreateObject in assenza di istanze correnti dell'oggetto. Se l'istanza dell'oggetto è già in esecuzione, ne viene avviata una nuova e viene creato un oggetto del tipo specificato. La funzione GetObject consente di utilizzare l'istanza corrente o di avviare l'applicazione e fare in modo che carichi un file. Se un oggetto viene registrato come oggetto a singola istanza, verrà creata una sola istanza dell'oggetto, indipendentemente dal numero di esecuzioni della funzione CreateObject. |
Creazione di oggetti Framework
La funzione CreateObject può essere utilizzata solo per creare un oggetto COM. Sebbene non esista un meccanismo equivalente per la creazione di un oggetto .NET Framework, nello spazio dei nomi System è presente l'oggetto Activator che contiene metodi per la creazione di oggetti remoti o locali. In particolare, può risultare utile il metodo CreateInstance o CreateInstanceFrom.
![]() |
---|
La funzione CreateObject richiede l'autorizzazione di accesso al codice non gestito, che può influenzarne l'esecuzione in situazioni di attendibilità parziale. Per ulteriori informazioni, vedere SecurityPermission e Permessi di accesso al codice. |
Esempio
Nell'esempio riportato di seguito la funzione CreateObject viene utilizzata per creare un foglio di lavoro di Microsoft Excel, che viene quindi salvato in un file. Ai fini di questo esempio, è necessario che Excel sia installato nel computer in cui viene eseguito il programma. Inoltre, è necessario aggiungere un riferimento alla libreria dei tipi nella scheda COM della finestra di dialogo Aggiungi riferimento disponibile dal menu Progetto. Il nome della libreria dei tipi varia a seconda della versione di Excel installata nel computer. La libreria dei tipi di Microsoft Excel 2002, ad esempio, è 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
Note per gli sviluppatori di applicazioni per Smart Device
Questa funzione non è supportata.
Requisiti
Spazio dei nomi: Microsoft.VisualBasic
Modulo: Interaction
**Assembly:**Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)
Vedere anche
Riferimenti
Funzione GetObject (Visual Basic)