vercomax
Messages postés547Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention11 septembre 2013
-
14 mai 2007 à 11:14
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 20091 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.
vercomax
Messages postés547Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention11 septembre 20132 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
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 20091 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