Interaction.GetObject(String, String) Méthode

Définition

Retourne une référence à un objet fourni par un composant COM.

public static object GetObject(string PathName = default, string Class = default);
static member GetObject : string * string -> obj
Public Function GetObject (Optional PathName As String = Nothing, Optional Class As String = Nothing) As Object

Paramètres

PathName
String

Optional. String. Chemin d’accès complet et nom du fichier contenant l’objet à récupérer. Si PathName elle est omise, Class elle est requise.

Class
String

Obligatoire s’il PathName n’est pas fourni. String. Chaîne représentant la classe de l’objet . L’argument Class a la syntaxe et les parties suivantes :

appname.objecttype

[1|1] Paramètre

[1|2] Description

[2|1] appname

[2|2] Obligatoire. String. Nom de l’application fournissant l’objet.

[3|1] objecttype

[3|2] Obligatoire. String. Type ou classe de l’objet à créer.

Retours

Référence à un objet fourni par un composant COM.

Exceptions

Aucun objet du type de classe spécifié n’existe.

Aucun objet avec le chemin d’accès et le nom de fichier spécifiés n’existent.

Exemples

L’exemple suivant utilise la fonction GetObject pour obtenir une référence à une feuille de calcul Microsoft Excel spécifique (excelObj). Elle utilise la propriété Application de la feuille de calcul pour rendre Excel visible, la fermer et effectuer d'autres actions. À l’aide de deux appels d’API, la procédure detectExcel recherche Excel et, si elle est en cours d’exécution, l’entre dans la table d’objets en cours d’exécution. Le premier appel à GetObject provoque une erreur si Excel n’est pas déjà en cours d’exécution, ce qui entraîne la définition de l’indicateur excelWasNotRunning sur True. Deuxième appel pour GetObject spécifier un fichier à ouvrir. Si Excel n’est pas déjà en cours d’exécution, le deuxième appel le démarre et retourne une référence à la feuille de calcul représentée par le fichier spécifié, test.xls. Le fichier doit exister à l’emplacement spécifié ; sinon, Visual Basic lève un FileNotFoundException. Ensuite, l’exemple de code rend Excel et la fenêtre contenant la feuille de calcul spécifiée visibles.

Cet exemple nécessite Option Strict Off , car il utilise la liaison tardive, où les objets sont affectés à des variables de type Object. Vous pouvez spécifier Option Strict On et déclarer des objets de types d’objets spécifiques si vous ajoutez une référence à la bibliothèque de types Excel à partir de la boîte de dialogue COM du menu Add Reference du menu Project dans Visual Studio.

' Add Option Strict Off to the top of your program.
Option Strict Off
' Test to see if a copy of Excel is already running.
Private Sub testExcelRunning()
    On Error Resume Next
    ' GetObject called without the first argument returns a
    ' reference to an instance of the application. If the
    ' application is not already running, an error occurs.
    Dim excelObj As Object = GetObject(, "Excel.Application")
    If Err.Number = 0 Then
        MsgBox("Excel is running")
    Else
        MsgBox("Excel is not running")
    End If
    Err.Clear()
    excelObj = Nothing
End Sub
Private Sub getExcel()
    Dim fileName As String = "c:\vb\test.xls"

    If Not My.Computer.FileSystem.FileExists(fileName) Then
        MsgBox(fileName & " does not exist")
        Exit Sub
    End If

    ' Set the object variable to refer to the file you want to use.
    Dim excelObj As Object = GetObject(fileName)
    ' Show Excel through its Application property. 
    excelObj.Application.Visible = True
    ' Show the window containing the file.
    Dim winCount As Integer = excelObj.Parent.Windows.Count()
    excelObj.Parent.Windows(winCount).Visible = True

    ' Insert additional code to manipulate the test.xls file here.
    ' ...

    excelObj = Nothing
End Sub

Lorsque vous appelez la fonction getExcel, une vérification est effectuée pour voir si Excel est déjà en cours d’exécution. Si ce n’est pas le cas, une instance est créée.

Important

Par souci de simplicité, l’exemple précédent suppose que toute fenêtre appelée XLMAIN appartient à une instance de Microsoft Excel. Si un autre objet, éventuellement lancé par une falsification illicite, a créé une fenêtre portant ce nom, il reçoit tous les messages que vous avez prévus pour Excel. Dans une application à utiliser pour la production, vous devez inclure des tests plus rigoureux pour vérifier que XLMAIN appartient vraiment à Excel.

Remarques

Utilisez la GetObject fonction pour charger une instance d’un composant COM à partir d’un fichier. L’exemple suivant illustre cela.

Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")

Lorsque ce code s’exécute, l’application associée au code spécifié PathName est démarrée et l’objet du fichier spécifié est activé.

Cas par défaut

S’il s’agit PathName d’une chaîne de longueur nulle (""), GetObject retourne une nouvelle instance d’objet du type de classe spécifié. Si l’argument PathName est omis, GetObject retourne un objet actif du type de classe spécifié dans Class. Si aucun objet du type spécifié n’existe, une erreur se produit.

Accès à un sous-objet

Certaines applications vous permettent d’activer un sous-objet associé à un fichier. Pour ce faire, ajoutez un point d’exclamation (!) à la fin du nom de fichier et suivez-le avec une chaîne qui identifie la partie du fichier que vous souhaitez activer. Pour plus d’informations sur la création de cette chaîne, consultez la documentation de l’application qui a créé l’objet.

Par exemple, dans une application de dessin, plusieurs couches peuvent être stockées dans un fichier. Vous pouvez utiliser le code suivant pour activer une couche dans un dessin appelé schema.cad.

layerObject = GetObject("C:\CAD\schema.cad!Layer3")

Spécification d’une classe

Si vous ne spécifiez pas l’objet, Automation détermine l’application Classà démarrer et l’objet à activer, en fonction du nom de fichier que vous fournissez. Toutefois, certains fichiers peuvent prendre en charge plusieurs classes d’objet. Par exemple, un dessin peut prendre en charge trois types d’objets différents : un Application objet, un Drawing objet et un Toolbar objet, qui font tous partie du même fichier. Pour spécifier l’objet dans un fichier que vous souhaitez activer, utilisez l’argument facultatif Class . L’exemple suivant illustre cela.

Dim drawObj As Object
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")

Dans l’exemple précédent, Figment est le nom d’une application de dessin et Drawing est l’un des types d’objets qu’il prend en charge.

Utilisation de l’objet

Une fois qu’un objet est activé, vous le référencez dans le code à l’aide de la variable d’objet que vous avez déclarée. Dans l’exemple précédent, vous accédez aux propriétés et méthodes du nouvel objet à l’aide de la variable drawObjd’objet. L’exemple suivant illustre cela.

drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")

Note

Utilisez la GetObject fonction lorsqu’il existe une instance actuelle de l’objet ou si vous souhaitez créer l’objet avec un fichier chargé. S’il n’existe aucune instance actuelle et que vous ne souhaitez pas que l’objet démarre avec un fichier chargé, utilisez la CreateObject fonction.

Si un objet s’est inscrit en tant qu’objet à instance unique ActiveX, une seule instance de l’objet est créée, peu importe le nombre de fois CreateObject qu’il est appelé. Avec un objet à instance unique, GetObject retourne toujours la même instance lorsqu’elle est appelée avec la syntaxe de chaîne de longueur nulle ("") et provoque une erreur si l’argument PathName est omis. Vous ne pouvez pas utiliser GetObject pour obtenir une référence à une classe créée avec Visual Basic.

Important

La GetObject fonction nécessite une autorisation de code non managée, ce qui peut affecter son exécution dans des situations de confiance partielle. Pour plus d’informations, consultez SecurityPermission et autorisations d’accès au code.

S’applique à

Voir aussi