Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Interaction.CreateObject, méthode

Crée et retourne une référence à un 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)

[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
[HostProtectionAttribute(SecurityAction.LinkDemand, Resources = HostProtectionResource.ExternalProcessMgmt)]
public static Object CreateObject(
	string ProgId,
	string ServerName
)

Paramètres

ProgId
Type : System.String
Obligatoire. String . ID de programme de l'objet à créer.
ServerName
Type : System.String
Optionnel. String . 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

Type : System.Object
Crée et retourne une référence à un 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.

ExceptionCondition
Exception

ProgId est introuvable ou non fourni

ou

ServerName fait échouer la fonction DnsValidateName, très probablement parce qu'elle comprend plus de 63 caractères ou contient un caractère non valide.

Exception

Le serveur est indisponible.

FileNotFoundException

Aucun objet du type spécifié n'existe

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 à 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. Puis déclarez la variable objet du type spécifique de votre objet. Dans la plupart des cas, il est plus efficace d'utiliser l'instruction Dimet 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 (Primary Interop Assembly) 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 (Visual Basic).

En général, il est préférable d'utiliser des objets fortement 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 (Primary Interop Assembly) 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 partage nommé "\\MyServer\Public", ServerName, le nom est "MyServer."

RemarqueRemarque

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 en cours d'exécution 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.

RemarqueRemarque

Utilisez CreateObject lorsqu'il n'existe aucune instance actuelle 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 actuelle ou pour lancer l'application en chargeant un fichier, utilisez la fonction GetObject. Si un objet s'est inscrit comme un objet à instance unique, une seule instance de l'objet est créée, quel que soit le nombre d'exécutions de l'objet 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 peuvent être utiles.

Note de sécuritéNote de sécurité

La fonction CreateObject nécessite une permission de code non managée, qui peut affecter son exécution dans les situations d'un niveau de confiance partiel. Pour plus d’informations, consultez SecurityPermission et Autorisations d'accès du code.

RemarqueRemarque

L'attribut HostProtectionAttribute appliqué à ce type ou membre a la valeur de propriété Resources suivante : Resources. HostProtectionAttribute n'affecte pas les applications bureautiques (qui sont généralement démarrées en double-cliquant sur une icône, en tapant une commande ou en entrant une URL dans un navigateur). Pour plus d'informations, consultez la classe HostProtectionAttribute ou Attributs de programmation et de protection des hôtes SQL Server.

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


.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft