OVH Cloud OVH Cloud

Ouvrir ou pas Excel

8 réponses
Avatar
Patrick Fredin
Bonjour,

Je pense que ma question concerne plus VB que Access. Sinon, veuillez me
pardonner mon erreur de groupe.

Dans Access, je vais exporter une requête vers Excel. Après, je souhaite
l'ouvrir dans Excel. Mais idéalement, si Excel est déjà démarré, j'aimerais
y ouvrir les données exportées pour ne pas avoir plusieurs fois Excel
d'ouvert, sinon je démarrerai Excel.

Donc j'aimerais savoir :

1. Comment il est possible de savoir si Excel est déjà démarré ?

2. Comment faire référence à Excel déjà ouvert pour le contrôler pour
qu'il ouvre les données exportées ?

Un très grand merci pour votre aide.


--
Patrick

8 réponses

Avatar
Alain CROS
Bonjour.

Sub LanceXL()
Dim XL As Object
On Error Resume Next
Set XL = GetObject(, "Excel.Application")
If XL Is Nothing Then
Set XL = CreateObject("Excel.Application")
If XL Is Nothing Then
MsgBox "Impossible de démarrer Excel", vbCritical
Exit Sub
End If
End If
On Error GoTo 0
XL.workbooks.Open "CheminCompletDuFichier.xls"
XL.Visible = True
Set XL = Nothing
End Sub

Alain CROS

"Patrick Fredin" a écrit dans le message de news:
Bonjour,

Je pense que ma question concerne plus VB que Access. Sinon, veuillez me
pardonner mon erreur de groupe.

Dans Access, je vais exporter une requête vers Excel. Après, je souhaite
l'ouvrir dans Excel. Mais idéalement, si Excel est déjà démarré, j'aimerais
y ouvrir les données exportées pour ne pas avoir plusieurs fois Excel
d'ouvert, sinon je démarrerai Excel.

Donc j'aimerais savoir :

1. Comment il est possible de savoir si Excel est déjà démarré ?

2. Comment faire référence à Excel déjà ouvert pour le contrôler pour
qu'il ouvre les données exportées ?

Un très grand merci pour votre aide.


--
Patrick




Avatar
ng
Salut,

On ne peut pas récupérer une instance deja instanciée d'excel.
Il te faudra simplement utiliser CreateObject() comme te l'a deja précisé
Alain.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Patrick Fredin wrote:
Bonjour,

Je pense que ma question concerne plus VB que Access. Sinon, veuillez
me pardonner mon erreur de groupe.

Dans Access, je vais exporter une requête vers Excel. Après, je
souhaite l'ouvrir dans Excel. Mais idéalement, si Excel est déjà
démarré, j'aimerais y ouvrir les données exportées pour ne pas avoir
plusieurs fois Excel d'ouvert, sinon je démarrerai Excel.

Donc j'aimerais savoir :

1. Comment il est possible de savoir si Excel est déjà démarré ?

2. Comment faire référence à Excel déjà ouvert pour le contrôler
pour qu'il ouvre les données exportées ?

Un très grand merci pour votre aide.


Avatar
Alain CROS
Bonjour.

Le code récupére l'instance d'excel déjà lancée puis l'utilise.
Si pas d'instance d'excel, on le lance avec CreateObject.

Alain CROS

"ng" a écrit dans le message de news:
Salut,

On ne peut pas récupérer une instance deja instanciée d'excel.
Il te faudra simplement utiliser CreateObject() comme te l'a deja précisé
Alain.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/



Avatar
Patrick Fredin
Merci. C'est super.

--
Patrick

"Alain CROS" wrote in message
news:
Bonjour.

Sub LanceXL()
Dim XL As Object
On Error Resume Next
Set XL = GetObject(, "Excel.Application")
If XL Is Nothing Then
Set XL = CreateObject("Excel.Application")
If XL Is Nothing Then
MsgBox "Impossible de démarrer Excel", vbCritical
Exit Sub
End If
End If
On Error GoTo 0
XL.workbooks.Open "CheminCompletDuFichier.xls"
XL.Visible = True
Set XL = Nothing
End Sub

Alain CROS

"Patrick Fredin" a écrit dans le
message de news:
Bonjour,

Je pense que ma question concerne plus VB que Access. Sinon, veuillez me
pardonner mon erreur de groupe.

Dans Access, je vais exporter une requête vers Excel. Après, je souhaite
l'ouvrir dans Excel. Mais idéalement, si Excel est déjà démarré,
j'aimerais
y ouvrir les données exportées pour ne pas avoir plusieurs fois Excel
d'ouvert, sinon je démarrerai Excel.

Donc j'aimerais savoir :

1. Comment il est possible de savoir si Excel est déjà démarré ?

2. Comment faire référence à Excel déjà ouvert pour le contrôler pour
qu'il ouvre les données exportées ?

Un très grand merci pour votre aide.


--
Patrick








Avatar
ng
Quand je disais que ca ne pouvais pas recupérer l'instance ce n'est pas ca
que j'entendais mais bien qu'une nouvelle isntance de l'objet COM est créé
(mais pas forcément d'excel).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Alain CROS wrote:
Bonjour.

Le code récupére l'instance d'excel déjà lancée puis l'utilise.
Si pas d'instance d'excel, on le lance avec CreateObject.

Alain CROS

"ng" a écrit dans le message de news:

Salut,

On ne peut pas récupérer une instance deja instanciée d'excel.
Il te faudra simplement utiliser CreateObject() comme te l'a deja
précisé Alain.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/




Avatar
Patrick Fredin
Pour ouvrir le fichier Excel, j'utilise ShellExecute comme cela :

ShellExecute 1, "open", FileFullName, vbNullString, "C:", 1

mais il crée toujours une nouvelle instance d'Excel.

Est-ce qu'il y a un moyen d'ouvrir le fichier dans l'instance déjà existante
d'Excel ?

Merci.

--
Patrick

"ng" wrote in message
news:
Quand je disais que ca ne pouvais pas recupérer l'instance ce n'est pas ca
que j'entendais mais bien qu'une nouvelle isntance de l'objet COM est créé
(mais pas forcément d'excel).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Alain CROS wrote:
Bonjour.

Le code récupére l'instance d'excel déjà lancée puis l'utilise.
Si pas d'instance d'excel, on le lance avec CreateObject.

Alain CROS

"ng" a écrit dans le message de news:

Salut,

On ne peut pas récupérer une instance deja instanciée d'excel.
Il te faudra simplement utiliser CreateObject() comme te l'a deja
précisé Alain.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/








Avatar
ng
Je parlais d'instance COM.

Oui : CreateObject("Excel.Application")

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Patrick Fredin wrote:
Pour ouvrir le fichier Excel, j'utilise ShellExecute comme cela :

ShellExecute 1, "open", FileFullName, vbNullString, "C:", 1

mais il crée toujours une nouvelle instance d'Excel.

Est-ce qu'il y a un moyen d'ouvrir le fichier dans l'instance déjà
existante d'Excel ?

Merci.


"ng" wrote in message
news:
Quand je disais que ca ne pouvais pas recupérer l'instance ce n'est
pas ca que j'entendais mais bien qu'une nouvelle isntance de l'objet
COM est créé (mais pas forcément d'excel).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Alain CROS wrote:
Bonjour.

Le code récupére l'instance d'excel déjà lancée puis l'utilise.
Si pas d'instance d'excel, on le lance avec CreateObject.

Alain CROS

"ng" a écrit dans le message de news:

Salut,

On ne peut pas récupérer une instance deja instanciée d'excel.
Il te faudra simplement utiliser CreateObject() comme te l'a deja
précisé Alain.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/








Avatar
Gloops
Patrick Fredin a écrit, le 07/02/2005 21:36 :
Est-ce qu'il y a un moyen d'ouvrir le fichier dans l'instance déjà existante
d'Excel ?



Bonjour,

Alain avait donné le bon départ.
Une fois qu'on a fait
Set XL = GetObject(, "Excel.Application")
If XL Is Nothing Then
Set XL = CreateObject("Excel.Application")
Endif

il ne reste plus qu'à utiliser cette instance.

Il faut regarder dans l'aide d'Excel, et remplacer Application par XL.

Sous réserve que je me rappelle bien :
XL.Workbooks.Open "nomfichier.xls"

Il y a un moment de ça il me semblait devoir écrire une boucle pour
donner le temps à Excel de se charger. Mais c'était avec d'anciennes
versions il est vrai.