GetObject, fonction

Important :  Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Remarque : Si le Service Microsoft Jet Expression s’exécute en mode sandbox, qui empêche l’évaluation des expressions potentiellement dangereuses de la fonction, une méthode, un objet ou une propriété décrites dans cette rubrique est désactivée. Pour plus d’informations sur le mode sandbox, recherchez « mode sandbox » dans l’aide.

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

Syntaxe

GetObject ([chemin d’accès ] [, classe ] )

La syntaxe de la fonction GetObject comprend les arguments suivants :

Argument

Description

chemin d’accès

Facultatif. Variant (Chaîne). Le chemin d’accès complet et le nom du fichier contenant l’objet à récupérer. Si le chemin d’accès est omis, classe est requise.

cours

Facultatif. Variant (Chaîne). Chaîne représentant le classe de l’objet.


La classeargument utilise la syntaxe appname.type d’objet et comprend les éléments suivants :

Élément

Description

appname

Obligatoire. Variant (Chaîne). Le nom de l’application qui fournit l’objet.

type d’objet

Obligatoire. Variant (Chaîne). Type ou classe de l’objet à créer.


Notes

Remarque : Exemples suivants illustrent l’utilisation de cette fonction dans une Visual Basic pour le module d’Applications (VBA). Pour plus d’informations sur l’utilisation de VBA, sélectionnez Référence du développeur dans la liste déroulante en regard de recherche et entrez un ou plusieurs termes dans la zone de recherche.

Utilisez la fonction GetObject pour accéder à un objet ActiveX à partir d’un fichier et assignez l’objet à un variable objet. L’instruction Set permet d’affecter l’objet renvoyé 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 avec le chemin d’accès spécifié est démarrée et l’objet dans le fichier spécifié est activé.

Si le chemin d’accès est une chaîne de longueur nulle (" »), GetObject renvoie une nouvelle instance d’objet du type spécifié. Si l’argument chemin d’accès est omis, GetObject retourne un objet actuellement actif du type spécifié. Si aucun objet du type spécifié existe, une erreur se produit.

Certaines applications permettent d’activer une partie d’un fichier. Ajouter un point d’exclamation (!) à la fin du nom de fichier et suivi d’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, vous devrez plusieurs calques à un dessin stockées dans un fichier. Le code suivant vous permet d’activer un calque d’un dessin nommé SCHEMA.CAD:

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

Si vous ne spécifiez pas de l’objet classe, Automation détermine l’application à démarrer et l’objet à activer, en fonction du nom de fichier que vous avez défini. Toutefois, certains fichiers peuvent prendre en charge plusieurs classes d’objet. Par exemple, un dessin peut prendre en charge trois types différents d’objets : un objet Application , un objet dessin et un objet de la barre d’outils , ce qui font partie d’un même fichier. Pour spécifier quel objet d’un fichier que vous souhaitez activer, utilisez l’argument facultatif cours . Par exemple :

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

Dans l’exemple, FIGMENT est que le nom d’une application de dessin et DRAWING est un des types d’objet que qui prend en charge.

Une fois qu’un objet est activé, vous y faire référence dans le code à l’aide de la variable objet que vous avez défini. Dans l’exemple précédent, vous accéder aux propriétés et les 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 active de l’objet ou si vous voulez créer l’objet avec un fichier déjà chargé. Si aucune instance active, et vous ne voulez pas démarrer l’objet avec un fichier chargé, utilisez la fonction CreateObject .

Si un objet s’est inscrit comme un objet à instance unique, seule une instance de l’objet n’est créée, aucune quel que soit le nombre de fois CreateObject est exécutée. Avec un objet à instance unique, la fonction GetObject renvoie toujours la même instance lorsqu’elle est appelée par la chaîne de longueur nulle (« ») syntaxe et il génère une erreur si l’argument chemin d’accès est omis. Vous ne pouvez pas utiliser GetObject pour obtenir une référence à une classe créée avec Visual Basic.

Exemple

Cet exemple utilise la fonction GetObject pour obtenir une référence à une feuille de calcul spécifiques Microsoft Office Excel 2007 (MyXL). Il utilise la propriété Application de la feuille de calcul pour rendre Excel visible, pour le fermer et ainsi de suite. En utilisant deux appels API, la procédure DetectExcel Sub recherche Excel et si elle est en cours d’exécution, qu’il entre dans la Table des objets en cours d’exécution. Le premier appel à la fonction GetObject génère une erreur si Microsoft Excel n’est pas déjà en cours d’exécution. Dans l’exemple, la GetObject la valeur vrai. Le deuxième appel à la fonction GetObject spécifie un fichier à ouvrir. Si Excel n’est pas déjà en cours d’exécution, le deuxième appel démarre et renvoie une référence à la feuille de calcul représentée par le fichier spécifié, mytest.xls. Le fichier doit figurer dans l’emplacement spécifié ; dans le cas contraire, l’erreur Visual Basic Erreur Automation est générée. L’exemple de code rend ensuite, Excel et la fenêtre contenant la feuille de calcul spécifiée visible. Enfin, si aucune version précédente d’Excel en cours d’exécution s’est produite, le code utilise Quit méthode l’objet Application pour fermer Excel. Si l’application a été déjà en cours d’exécution, aucune tentative pour le fermer. La référence elle-même est publiée en définissant sur rien.

' 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

Remarque : Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoignez le programme Office Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×