Interaction.CreateObject, méthode
Crée et retourne une référence à l'objet COM. CreateObject ne peut être utilisé pour créer des instances de classes en Visual Basic à moins que ces classes soient exposées explicitement en tant que composants COM.
Espace de noms : Microsoft.VisualBasic
Assembly : Microsoft.VisualBasic (dans microsoft.visualbasic.dll)
Syntaxe
'Déclaration
Public Shared Function CreateObject ( _
ProgId As String, _
<OptionalAttribute> Optional ServerName As String = "" _
) As Object
'Utilisation
Dim ProgId As String
Dim ServerName As String
Dim returnValue As Object
returnValue = Interaction.CreateObject(ProgId, ServerName)
public static Object CreateObject (
string ProgId,
[OptionalAttribute] string ServerName
)
public:
static Object^ CreateObject (
String^ ProgId,
[OptionalAttribute] String^ ServerName
)
public static Object CreateObject (
String ProgId,
/** @attribute OptionalAttribute() */ String ServerName
)
public static function CreateObject (
ProgId : String,
ServerName : String
) : Object
Paramètres
- ProgId
Obligatoire. String. L'ID de programme de l'objet à créer.
- ServerName
Facultatif. String. Le nom du serveur réseau où l'objet sera créé. Si ServerName est une chaîne vide (""), l'ordinateur local est utilisé.
Valeur de retour
Crée et retourne une référence à l'objet COM. CreateObject ne peut être utilisé pour créer des instances de classes en Visual Basic à moins que ces classes soient exposées explicitement en tant que composants COM.
Notes
Pour plus d'informations, consultez la rubrique Visual Basic CreateObject, fonction (Visual Basic).
Pour créer une instance d'un composant COM, assignez l'objet retourné par la fonction CreateObject à une variable objet :
Sub CreateADODB()
Dim adoApp As Object
adoApp = CreateObject("ADODB.Connection")
End Sub
Le type de la variable objet que vous utilisez pour stocker l'objet retourné peut affecter les performances de vos applications. La déclaration d'une variable objet avec la clause As Object crée une variable pouvant contenir une référence à n'importe quel type d'objet. Cependant, l'accès à l'objet par l'intermédiaire de cette variable est effectué par une liaison tardive, c'est-à-dire que la liaison est créée lors de l'exécution de votre programme. Vous devez éviter la liaison tardive pour plusieurs raisons, parmi lesquelles le ralentissement de l'exécution de l'application.
Vous pouvez créer une variable objet qui produit une liaison anticipée, c'est-à-dire que la liaison est créée lors de la compilation du programme. Pour cela, ajoutez une référence à la bibliothèque de types pour votre objet à partir de l'onglet COM de la boîte de dialogue Ajouter une référence dans le menu Projet. Déclarez ensuite la variable objet du type spécifique de votre objet. Dans la plupart des cas, il est plus efficace d'utiliser l'instruction Dim et un assembly PIA (Primary Interop Assembly) pour créer des objets plutôt qu'utiliser la fonction CreateObject.
Interaction avec le code non managé
Un autre problème est que les objets COM utilisent un code non managé, un code sans l'avantage du Common Language Runtime. Le mélange de code managé Visual Basic et de code non managé COM implique un certain degré de complexité. Quand vous ajoutez une référence à un objet COM, Visual Basic cherche un assembly PIA prédéfini pour cette bibliothèque ; si un assembly est trouvé, il est alors utilisé. Si aucun assembly n'est trouvé, Visual Basic crée un assembly d'interopérabilité qui contient les classes d'interopérabilité locales pour chaque classe de la bibliothèque COM. Pour plus d'informations, consultez Interopérabilité COM dans les applications .NET Framework.
En général, il est préférable d'utiliser des objets étroitement liés et des assemblys PIA (Primary Interop Assembly) dès que cela est possible. Les exemples ci-dessous utilisent la fonction CreateObject avec des objets Microsoft Office uniquement dans un but démonstratif. Cependant, ces objets sont plus faciles à utiliser et plus fiables lorsqu'ils sont utilisés avec l'assembly PIA approprié.
Création d'un objet sur un ordinateur distant
Vous pouvez créer un objet sur un ordinateur réseau distant en passant le nom de l'ordinateur à l'argument ServerName de la fonction CreateObject. Ce nom est identique à une partie du nom de l'ordinateur partagé : pour un nom de partage "\\MyServer\Public", ServerName est "MyServer".
Notes
Consultez la documentation COM (voir Microsoft Developer Network) pour plus d'informations sur la manière de rendre accessible une application à partir d'un ordinateur réseau distant. Il vous faudra peut-être ajouter une clé de Registre pour votre application.
Le code suivant retourne le numéro de version d'une instance d'Excel s'exécutant sur un ordinateur distant appelé 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
Si le nom du serveur distant est incorrect, ou si le serveur n'est pas disponible, une erreur se produit au moment de l'exécution.
Notes
Utilisez CreateObject lorsqu'il n'existe aucune instance en cours de l'objet. S'il en existe une, une nouvelle instance est lancée et un objet du type spécifié est créé. Pour utiliser l'instance en cours ou pour lancer l'application en chargeant un fichier, utilisez la fonction GetObject. Si un objet s'est inscrit comme objet à instance unique, une seule instance de l'objet est créée, quel que soit le nombre d'exécutions de la fonction CreateObject.
Création d'objets Framework
Vous pouvez utiliser la fonction CreateObject uniquement pour créer un objet COM. Bien qu'il n'y ait aucun mécanisme équivalent exact pour créer un objet .NET Framework, le Activator dans l'espace de noms System contient des méthodes pour créer des objets locaux ou distants. En particulier, la méthode CreateInstance ou la méthode CreateInstanceFrom peut être utile.
Remarque de sécurité |
---|
La fonction CreateObject nécessite une permission de code non managée, qui peut affecter son exécution dans les situations de confiance partielle. Pour plus d'informations, consultez SecurityPermission et Autorisations d'accès du code. |
Exemple
L'exemple suivant utilise la fonction CreateObject pour créer une feuille de calcul Microsoft Excel et enregistre la feuille de calcul dans un fichier. Pour utiliser cet exemple, Excel doit être installé sur l'ordinateur où ce programme s'exécute. Vous devez également ajouter une référence à la bibliothèque de types à partir de l'onglet COM de la boîte de dialogue Ajouter une référence dans le menu Projet. Le nom de la bibliothèque de types varie en fonction de la version d'Excel installée sur votre ordinateur. Par exemple, la bibliothèque de types pour Microsoft Excel 2002 se nomme Microsoft Excel 10.0 Object Library.
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
Plates-formes
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Informations de version
.NET Framework
Prise en charge dans : 2.0, 1.1, 1.0
Voir aussi
Référence
Interaction, classe
Membres Interaction
Microsoft.VisualBasic, espace de noms
Exception
FileNotFoundException
Activator
CreateInstance
CreateInstanceFrom
Autres ressources
CreateObject, fonction (Visual Basic)
GetObject, fonction (Visual Basic)
Dim, instruction (Visual Basic)
Declare, instruction
Interopérabilité COM dans les applications .NET Framework
Interopération avec du code non managé