I. Introduction▲
Afin de permettre à MATLAB de piloter Excel, il faut établir au préalable une connexion via un serveur Automation. Une fois cette connexion établie, on peut envoyer des ordres à Excel par l'intermédiaire de commandes suivant la syntaxe du langage VBA.
À partir d'un exemple simple, nous allons aborder les commandes de base qui permettent de gérer l'application Excel et les classeurs.
II. Exemple de code▲
Voici un exemple de code complet qui permet, depuis MATLAB, de lancer une application Excel, de créer un nouveau classeur, de l'enregistrer dans un fichier data.xlsx placé dans le répertoire D:, de fermer le classeur et de fermer l'application Excel.
Excel = actxserver('Excel.Application'
);
Excel.Visible = true;
Workbook = Excel.Workbooks.Add;
Workbook.SaveAs('D:\data.xlsx'
);
Workbook.Close;
Excel.Quit;
delete(Excel)
clear Excel
Nous allons détailler ligne par ligne ce code dans le chapitre suivant.
Le format xlsx n'est supporté que depuis Excel 2007. Si vous utilisez une version plus ancienne d'Excel, vous devez impérativement utiliser le format xls.
III. Explication pas à pas▲
III-A. Création du serveur Automation▲
La commande MATLAB permettant l'ouverture d'une application Excel est la suivante :
Excel = actxserver('Excel.Application'
);
Cette commande renvoie un objet COM comme le montre le résultat de la commande whos :
>> whos Excel
Name Size Bytes Class Attributes
Excel 1x1 COM.Excel_Application
Malgré le fait que MATLAB ne renvoie pas de message d'erreur, l'interface graphique d'Excel n'apparaît pas par défaut. On peut néanmoins remarquer la réussite de la commande en ouvrant le gestionnaire des tâches de Windows et en vérifiant qu'un nouveau processus Excel a bien été créé.
Le gestionnaire liste le nombre total de processus Excel ouverts. Il est donc normal de voir apparaître N+1 processus Excel si vous avez déjà N processus Excel ouverts avant d'exécuter le code MATLAB.
III-B. Visibilité de l'application Excel▲
Comme on l'a vu précédemment, l'application Excel s'ouvre de manière cachée par défaut. Pour voir l'application, il faut ajouter la ligne suivante juste après son ouverture :
Excel.Visible = true;
L'interface graphique d'Excel apparaît alors vide :
La visibilité de l'interface Excel n'est généralement pas nécessaire. Cette ligne de commande n'est donc que rarement utilisée dans la pratique.
III-C. Création d'un nouveau classeur▲
Pour créer un classeur, on utilise la commande suivante :
Workbook = Excel.Workbooks.Add;
Une feuille de calcul Excel apparaît alors vide :
Bien qu'une nouvelle feuille de calcul Excel apparaisse, le fichier n'a pas encore de nom. Par défaut, Excel utilise ici le nom Classeur1 comme on peut le voir dans la partie supérieure de la figure ci-dessus.
III-D. Enregistrement dans un nouveau fichier▲
Pour enregistrer dans un nouveau fichier data.xlsx situé dans le dossier D:, on utilise la commande suivante :
Workbook.SaveAs('D:\data.xlsx'
);
Le nom du fichier (ici data.xlsx) apparaît maintenant dans la partie supérieure de la fenêtre Excel :
III-E. Fermeture du classeur▲
Pour fermer le classeur, on utilise la commande suivante :
Workbook.Close;
L'interface Excel retrouve son état initial vide :
III-F. Fermeture de l'application Excel▲
Pour fermer l'application Excel, on utilise la commande suivante :
Excel.Quit;
Le processus Excel n'existe plus et n'est donc plus listé par le gestionnaire des tâches de Windows.
III-G. Nettoyage de l'espace de travail▲
Même si la commande Excel.Quit ferme l'application Excel, l'objet Excel est encore présent en mémoire dans MATLAB.
Pour le libérer, il faut utiliser la commande suivante :
delete(Excel)
Pour finir, la variable Excel reste disponible sous MATLAB. Il faut donc la supprimer en utilisant la fonction clear :
clear Excel
IV. Compléments▲
Bien que celles-ci n'apparaissent pas dans l'exemple du chapitre II, il est néanmoins judicieux de présenter dès maintenant quelques commandes supplémentaires.
IV-A. Ouvrir un fichier existant▲
Pour ouvrir un fichier Excel déjà existant, on utilise la commande suivante :
xlspath = 'D:\'
;
xlsfile = 'data.xlsx'
;
Workbook = Excel.Workbooks.Open(fullfile(xlspath,xlsfile));
Voir Comment concaténer le nom d'un fichier et celui d'un répertoire ? pour en savoir plus sur l'utilité de la fonction fullfile
Le chemin du dossier où se trouve le fichier Excel doit impérativement être donné en absolu et non pas en relatif.
IV-B. Enregistrement dans un fichier existant▲
Pour enregistrer dans un fichier existant, on utilise la commande suivante :
Workbook.Save;
IV-C. Fermeture d'un classeur sans enregistrement▲
En cas de fermeture d'un classeur sans enregistrement des modifications au préalable, Excel ouvre une boîte de dialogue pour les options de sauvegarde.
Pour forcer la fermeture du classeur sans qu'Excel ne demande de confirmation d'enregistrement, on utilise la commande suivante :
Workbook.Close(false);
V. Conclusion▲
Vous savez maintenant comment connecter Excel et MATLAB via Automation.
Nous avons vu comment ouvrir et fermer Excel, et comment gérer l'ouverture, la fermeture et l'enregistrement d'un classeur.
Vous pouvez maintenant poursuivre votre lecture par l'article intitulé Contrôle d'Excel par MATLAB via Automation - Les objets et leur manipulation qui présente les objets VBA et les techniques de gestion de ces objets.