Partager via


GetObject, fonction

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

Syntaxe

GetObject([ pathname ], [ class ])

La syntaxe de la fonction GetObject comprend les arguments nommés suivants :

Élément Description
pathname Facultatif ; Variante (Chaîne). Chemin d’accès complet et nom du fichier contenant l’objet à récupérer. Si pathname est omis, la classe est obligatoire.
class Facultatif ; Variante (Chaîne). Chaîne représentant la classe de l’objet .

L’argument de classe utilise la syntaxe appname. objecttype et contient les éléments suivants :

Élément Description
appname Obligatoire ; Variante (chaîne). Nom de l’application qui fournit l’objet.
objecttype Obligatoire ; Variante (chaîne). Le type ou classe d’objet à créer.

Remarques

Utilisez la fonction GetObject pour accéder à un objet ActiveX à partir d’un fichier et attribuer cet objet à une variable objet. Utilisez l’instruction Set pour affecter l’objet retourné par GetObject à la variable objet. Par exemple :

Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

Lorsque ce code est exécuté, l’application associée au chemin d’accès spécifié est démarrée et l’objet dans le fichier spécifié est activé.

Si l’argument pathname est une chaîne de longueur nulle (""), la fonction GetObject retourne une nouvelle instance d’objet du type indiqué. Si l’argument pathname est omis, la fonction GetObject retourne un objet actif du type indiqué. S’il n’existe aucun objet du type indiqué, une erreur se produit.

Certaines applications vous permettent d’activer une partie d’un fichier. 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.

Dans une application de dessin, par exemple, vous pouvez avoir un dessin constitué de plusieurs plans dans un fichier. Vous pouvez utiliser le code suivant pour activer une couche dans un dessin appelé SCHEMA.CAD:

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

Si vous ne spécifiez pas la classe de l’objet, Automation détermine l’application à démarrer et l’objet à activer, en fonction du nom de fichier que vous fournissez. Certains fichiers peuvent toutefois gérer plusieurs classes d’objets. Ainsi, un dessin peut prendre en charge trois types d’objet différents : un objet Application, un objet Drawing et un objet Toolbar, appartenant tous au même fichier. Pour indiquer l’objet à activer parmi ceux du fichier, utilisez l’argument facultatif class. Par exemple :

Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING")

Dans l’exemple, FIGMENT est le nom d’une application de dessin et DRAWING est l’un des types d’objets qu’elle prend en charge. Une fois qu’un objet est activé, vous le référencez dans le code à l’aide de la variable objet que vous avez définie. Dans l’exemple précédent, vous accédez aux propriétés et méthodes du nouvel objet à l’aide de la variable objet MyObject. Par exemple :

MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"

Remarque

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

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

Exemple

Cet exemple utilise la fonction GetObject pour obtenir une référence à une feuille de calcul Microsoft Excel spécifique (MyXL). Il utilise la propriété Application de la feuille de calcul pour rendre Microsoft Excel visible, pour le fermer, et ainsi de suite.

À l’aide de deux appels d’API, la DetectExcel procédure Sub recherche Microsoft 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 Microsoft Excel n’est pas déjà en cours d’exécution. Dans l’exemple, l’erreur entraîne la définition de l’indicateur ExcelWasNotRunning sur True.

Le deuxième appel à GetObject spécifie un fichier à ouvrir. Si Microsoft 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é, mytest.xls. Le fichier doit exister à l’emplacement spécifié ; sinon, l’erreur Automation error Visual Basic est générée.

Ensuite, l’exemple de code rend Microsoft Excel et la fenêtre contenant la feuille de calcul spécifiée visibles. Enfin, si aucune version antérieure de Microsoft Excel n’était en cours d’exécution, le code utilise la méthode Quit de l’objet Application pour fermer Microsoft Excel. Si l’application était déjà en cours d’exécution, aucune tentative n’est effectuée pour la fermer. La référence elle-même est libérée en la définissant sur Nothing.

' Declare necessary API routines:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
                    ByVal lpWindowName As Long) As Long

Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
                    ByVal wParam as Long, _
                    ByVal lParam As Long) As Long

Sub GetExcel()
    Dim MyXL As Object    ' Variable to hold reference
                                ' to Microsoft Excel.
    Dim ExcelWasNotRunning As Boolean    ' Flag for final release.

' Test to see if there is a copy of Microsoft Excel already running.
    On Error Resume Next    ' Defer error trapping.
' Getobject function called without the first argument returns a 
' reference to an instance of the application. If the application isn't
' running, an error occurs.
    Set MyXL = Getobject(, "Excel.Application")
    If Err.Number <> 0 Then ExcelWasNotRunning = True
    Err.Clear    ' Clear Err object in case error occurred.

' Check for Microsoft Excel. If Microsoft Excel is running,
' enter it into the Running Object table.
    DetectExcel

' Set the object variable to reference the file you want to see.
    Set MyXL = Getobject("c:\vb4\MYTEST.XLS")

' Show Microsoft Excel through its Application property. Then
' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
    MyXL.Application.Visible = True
    MyXL.Parent.Windows(1).Visible = True
     Do manipulations of your  file here.
    ' ...
' If this copy of Microsoft Excel was not running when you
' started, close it using the Application property's Quit method.
' Note that when you try to quit Microsoft Excel, the
' title bar blinks and a message is displayed asking if you
' want to save any loaded files.
    If ExcelWasNotRunning = True Then 
        MyXL.Application.Quit
    End IF

    Set MyXL = Nothing    ' Release reference to the
                                ' application and spreadsheet.
End Sub

Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
    Const WM_USER = 1024
    Dim hWnd As Long
' If Excel is running this API call returns its handle.
    hWnd = FindWindow("XLMAIN", 0)
    If hWnd = 0 Then    ' 0 means Excel not running.
        Exit Sub
    Else                
    ' Excel is running so use the SendMessage API 
    ' function to enter it in the Running Object Table.
        SendMessage hWnd, WM_USER + 18, 0, 0
    End If
End Sub

Voir aussi

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.