Condividi tramite


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

Exception

429

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.

Exception

462

Server non disponibile.

FileNotFoundException

53

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".

Nota:

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.

Nota:

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.

Nota sulla sicurezza:

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)

Istruzione Dim (Visual Basic)

Istruzione Declare

Exception

FileNotFoundException

Activator

CreateInstance

CreateInstanceFrom

Altre risorse

Interoperabilità COM nelle applicazioni .NET Framework

Interoperabilità con codice non gestito