OVH Cloud OVH Cloud

Excel.Workbooks.add

2 réponses
Avatar
PM
Bonjour !

Quand je fais : Workbooks.add dans VBA, j'obtiens un nouveau classeur.
Visible.

Quand je fais : Excel.Workbooks.add dans une dll en VB qui pilote Excel, le
classeur n'est pas visible. Il est néanmoins crée dans le répertoire voulu.
Si ensuite je clique dessus, à la main (pour voir...), il est en lecture
seule.

Comment créer un nouveau classeur utilisable quand je suis
dans VB et que je pilote Excel par Automation ? Que se passe-t-il avec la
commande simple ci-dessus ?

Merci !

PM

2 réponses

Avatar
Thierry Bertrand
J'ai développé une aplli en VB6 qui créé un fichier excel sans problème.
J'ai procédé ainsi

Déclaration dans la proc:
Dim Appli As New Excel.Application

puis dans le corps de la proc:

Appli.Visible = False
car je ne veux pas que l'utilisateur voit excel.

puis pour créer la feuille:

'Créer un nouveau classeur EXCEL initialisé à la ligne 1
Appli.Workbooks.Add.Activate

Et enfin ;

' Affecter les données dans les cellules de la feuille
With Appli.ActiveWorkbook.Worksheets("Feuil1")


etc ...

Je n'ai jamais eu de soucis, dès l'instant où le document excel est
correctement ferme en sortie de proc.


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

Bonjour !

Quand je fais : Workbooks.add dans VBA, j'obtiens un nouveau classeur.
Visible.

Quand je fais : Excel.Workbooks.add dans une dll en VB qui pilote Excel,


le
classeur n'est pas visible. Il est néanmoins crée dans le répertoire


voulu.
Si ensuite je clique dessus, à la main (pour voir...), il est en lecture
seule.

Comment créer un nouveau classeur utilisable quand je suis
dans VB et que je pilote Excel par Automation ? Que se passe-t-il avec la
commande simple ci-dessus ?

Merci !

PM




Avatar
PM
Merci !

En fait, j'ai compris que je dois ouvrir comme suit

Classeur_ouvert.application.workbooks.add

Sinon, on crée une nouvelle instance d'Excel et les deux instances ne savent
pas bien communiquer.
Ce n'était pas clair dans la question, maintenant c'est clair pour moi !
--
Patrick Momal

"Thierry Bertrand" <bertrand.thierry(nospam)@(nospam)numericable.fr> a écrit
dans le message de news:
J'ai développé une aplli en VB6 qui créé un fichier excel sans problème.
J'ai procédé ainsi

Déclaration dans la proc:
Dim Appli As New Excel.Application

puis dans le corps de la proc:

Appli.Visible = False
car je ne veux pas que l'utilisateur voit excel.

puis pour créer la feuille:

'Créer un nouveau classeur EXCEL initialisé à la ligne 1
Appli.Workbooks.Add.Activate

Et enfin ;

' Affecter les données dans les cellules de la feuille
With Appli.ActiveWorkbook.Worksheets("Feuil1")


etc ...

Je n'ai jamais eu de soucis, dès l'instant où le document excel est
correctement ferme en sortie de proc.


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

Bonjour !

Quand je fais : Workbooks.add dans VBA, j'obtiens un nouveau classeur.
Visible.

Quand je fais : Excel.Workbooks.add dans une dll en VB qui pilote Excel,


le
classeur n'est pas visible. Il est néanmoins crée dans le répertoire


voulu.
Si ensuite je clique dessus, à la main (pour voir...), il est en lecture
seule.

Comment créer un nouveau classeur utilisable quand je suis
dans VB et que je pilote Excel par Automation ? Que se passe-t-il avec la
commande simple ci-dessus ?

Merci !

PM