Bonjour,
je ne développe pas sous delphi, que je ne connais même pas du tout, mais comme personne ne répond pour l'instant, j'espère que mes maigres connaissances seront un début de piste. Je me baserai juste sur la syntaxe :
En vb.net, pour instancier l'application Excel, il faut définir la variable comme étant de "type" Application Excel puis lui attribuer CreateObject("Nom_de_l_objet").
L'un sans l'autre ne mêne nulle part.
Or, dans "var xlapp: Excel.Application", soit il manque la définition du type, soit il manque l'attribution de la valeur. Il y a peut-être quelque chose à gratter dans ce sens ?
A toutes fins utiles, en vb.net, la syntaxe exacte est :
Dim XlApp As Excel.Application= Ctype(CreateObject("Excel.Application"), Excel.Application)
Je le présise car souvent la conversion de type CType() n'est pas indiquée à cela peut lever une exception de convertion implicite, ce qui rend l'application bancale.
Petites astuces pour les automations dans excel :
1 - Utilisez un bloc with / end with pour éviter les multiples itérations de xlapp
2 - Durant la phase de développement, mettre xlapp.visible = true vous permettra de voir si tout se passe bien, car par défaut, la valeur est false et vous aurez un peu de mal à juger de la qualité d'exécution du code.
3 - Faites attention aux liaisons tardives, il est très facile d'en faire dans ce contexte, et bonjour les dégats... au mieux ça ralenti l'appli, au pire, c'est le mur.
4 - En fin de procédure, pensez à bien libérer toutes vos variables objet liées à excel, et xlapp elle même, dans l'ordre inverse duquel vous les avez déclarées, ou le fermeture se fera mal et le processus persistera. Il sera bien sûr fermé à la fermeture de votre application mais ce n'est pas propre.
Pour le reste, il vous faudra l'aide un connaisseur de Delphi.
Bonne chance !
Partager