Accès à Doc excel déjà ouvert (vb2005)

vercomax Messages postés 547 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 11 septembre 2013 - 14 mai 2007 à 11:14
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 - 15 mai 2007 à 13:21
bonjour,

voilà je connais trés bien la procédure pour ouvrir un  document excel depuis vb2005 et y faire des modifs dans les cellules.
avec:

docexcel_ib = CreateObject(

"Excel.Application" )
docexcel_ib.DisplayAlerts =
False
docexcel_ib.Workbooks.Open(
"chemin\nomduficher.xls")
docexcel_ib.Visible =
True
Mais je n'arrive pas à trouver la manière au cas où le document serait déjà ouvert

merci de votre aide

12 réponses

cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
14 mai 2007 à 11:26
Salut,

je ne suis pas certains, mais ton document, une fois ouvert, doit appartenir à une collection correspondant au fichier ouvert.
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
14 mai 2007 à 11:28
Genre workbooks.Item au pif.
0
vercomax Messages postés 547 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 11 septembre 2013 2
14 mai 2007 à 11:29
hum, je ne comprends pas trop là, désolé.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 mai 2007 à 11:32
Salut,
[auteurdetail.aspx?ID= 999867 Nicko11]Oui c'est vrai mais uniquement si le classeur à déjà été ouvert par la même instance d'Excel (le classeur fera alors parti de la collection WorkBooks et pourra être appelé par 
docexcel_ib.workbooks(NomClasseur)

Mais si il est déjà ouvert (par ouverture classique par exemple). tu ne le verras pas par la collection WorkBooks (enfin j'espere ne pas dire de bêtises)

Donc pour aider au mieux je pense  que [auteurdetail.aspx?ID=314187 vercomax]
  devrait plus détailler
@+: =89254 Ju£i?n
Pensez: Réponse acceptée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
14 mai 2007 à 11:35
Si plusieurs fichiers sont ouvert par la meme instance,

tu accedéreras à ces fichiers par :

Workbooks.Item("Nom_du_fichier")

Exemple en affichant le nom d'un fichier ouvert :

MsgBox Workbooks.Item("test").Name
0
vercomax Messages postés 547 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 11 septembre 2013 2
14 mai 2007 à 14:01
ok, merci

mais vu que c'est un autre programme qui ouvre ces classeurs je ne pourrais donc pas.

il doit bien y a voir un moyen pourtant...
merci quand même.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 mai 2007 à 14:05
Salut,
Essaye de récupérer l'instance d'excel ouverte.

@+: Ju£i?n
Pensez: Réponse acceptée
0
vercomax Messages postés 547 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 11 septembre 2013 2
14 mai 2007 à 14:07
oui, certes mais sont les commandes en vb2005, c'est celà que je cherche. ?
0
vercomax Messages postés 547 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 11 septembre 2013 2
14 mai 2007 à 14:21
quelles sont les commandes, je mange mes mots :)
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
14 mai 2007 à 15:19
Cherche du côté de l'API Windows FindWindow.    Il est possible de retrouver ainsi l'instance (le hwnd) de Excel.  Ensuite, tu peux lui envoyer un SendMessage pour p.e. mettre cette instance au premier plan.

Christophe
0
vercomax Messages postés 547 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 11 septembre 2013 2
14 mai 2007 à 15:23
ok, bon, je vais mater,
celà dit je ne cherche pas à la mettre au premier plan, simplement, ne pas ré-ouvrir la feuille xls si elle est déjà ouverte par une autre appli

merci beaucoup
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
15 mai 2007 à 13:21
Avec un GetObject tu vas pouvoir retrouver l'instance de Excel (si Excel est déjà ouvert).   Si GetObject retourne autre chose que Nothing, c'est que tu as une instance.   Ensuite, passe au travers de la liste des Workbook qui sont ouvert.

Set xlApp = GetObject(, "Excel.Application")

If Not IsNothing(xlApp) Then
  
   With xlApp
     
      ' Be sure that Excel is ready
     
      Do While Not .Ready: DoEvents: Loop
        
      For Each xlBook In .Workbooks
         wIndex = wIndex + 1
         If (xlBook.FullName = sXLSFileName) Then bAlreadyOpen = True: Exit For
      Next
        
      Set xlBook = Nothing

   End With

End If, ----
(Coloration syntaxique automatique par Kenji)

Christophe
0
Rejoignez-nous