Comment créer un graphique à partir de fichiers de données brutes dans n'importe quel produit Office

Comment créer un graphique à partir de fichiers de données brutes dans n'importe quel produit Office / les fenêtres

Ne serait-il pas agréable d'avoir la possibilité d'ouvrir simplement une feuille de calcul Excel ou un document Word, et sans rien faire du tout, les données sont lues directement à partir d'un fichier texte ou CSV, puis chargées directement dans un graphique incorporé sur votre feuille de calcul ou document Word? Il s'agit d'une forme d'automatisation utilisant les produits Office, car s'il est possible d'automatiser la création de graphiques de données dans Office, il suffit de penser aux possibilités. Vous pouvez automatiquement charger des données dans un graphique pour un rapport que vous préparez pour votre patron - aucune saisie de données n'est requise. Ou vous pouvez charger des données dans un graphique directement dans un courrier électronique dans Outlook.

Pour ce faire, la technique consiste à installer le complément Office Web Components. En outre, il vous suffit de configurer quelques éléments de l'application Office que vous souhaitez utiliser pour importer les données et vous êtes prêt à automatiser votre travail de création de rapports. J'ai abordé certains des éléments que nous allons utiliser dans cet article de précédents articles sur VBA Comment créer votre propre application simple avec VBA Comment créer votre propre application simple avec VBA Pour ceux qui aimeraient vraiment pour pouvoir écrire votre propre application, mais je n'ai jamais tapé une seule ligne de code auparavant, je vais vous expliquer comment… Lisez la suite ici à MakeUseOf. Quelques-uns de ceux-ci incluaient le transfert de données entre les applications avec le presse-papiers. Passer toute information entre les applications VBA à l'aide du presse-papiers. Passer toute information entre les applications VBA et le presse-papiers. L'un des aspects les plus frustrants de l'utilisation de VBA dans des applications spécifiques est que ce n'est pas toujours facile. pour obtenir deux applications à “parler” les uns aux autres. Vous pouvez essayer des transactions très rapides… Lire la suite, exportation des tâches Outlook vers Excel Comment exporter vos tâches Outlook vers Excel avec VBA Comment exporter vos tâches Outlook vers Excel avec VBA Que vous soyez un fan de Microsoft ou non, une bonne On peut au moins dire à propos des produits MS Office, à quel point il est facile d’intégrer chacun d’entre eux… En savoir plus et envoyer des courriels à partir d’Excel Comment envoyer des courriels à partir d’une feuille de calcul Excel à l’aide de scripts VBA Comment envoyer des courriels à partir de une feuille de calcul Excel à l'aide de scripts VBA Notre modèle de code vous aidera à configurer des e-mails automatisés à partir d'Excel à l'aide de CDO (Collaboration Data Objects) et de scripts VBA. Lire plus de script.

Ce que je vais vous montrer, c'est comment combiner Office Web Components avec des scripts de fichier texte pour créer un flux de données transparent et automatisé à partir d'un fichier texte plat sur votre ordinateur dans votre produit Office (dans notre cas, Excel). Vous pouvez utiliser cette même technique - avec quelques petites modifications - dans Word, Outlook ou même PowerPoint. Tout produit Office (ou tout autre produit d'ailleurs) disposant d'un back-end VBA pour les développeurs vous permettra d'utiliser cette technique..

Importer et créer un graphique à partir de fichiers de données

Avant de pouvoir créer un graphique à partir de fichiers de données, vous devez d'abord activer certaines choses. Dans cet exemple, je vais vous montrer comment activer ces fonctionnalités dans Excel, mais le processus est presque identique dans tous les autres produits Office..

Tout d'abord, avant de pouvoir développer VBA, vous devez activer l'onglet Développeur dans la barre d'outils (si ce n'est déjà fait). Pour ce faire, il suffit d'aller dans le menu Options, cliquez sur “Personnaliser le ruban” et activer le “Développeur” languette.

De retour dans Excle, vous verrez maintenant “Développeur” montrer dans les menus. Cliquez dessus et cliquez sur “Mode de conception”. Puis cliquez sur “Voir le code” voir l'éditeur VBA.

Dans l'éditeur, vous devez activer les références dont vous avez besoin pour le code que je vais vous donner. Assurez-vous d'avoir préalablement installé le complément Office Web Components, sinon l'objet Microsoft Chart ne sera pas disponible..


Cliquez sur Outils, puis sur Références. Une liste de toutes les références disponibles sur votre système s'affiche. Si vous ne savez pas ce que c'est, les références sont essentiellement des bibliothèques de code et des objets que vous pouvez insérer dans votre propre projet. Celles-ci vous permettent de faire des choses vraiment cool en fonction de la référence que vous activez. Si vous venez d'installer Office Web Components sur votre système, vous devez l'ajouter comme nouvelle bibliothèque. Cliquez donc sur le bouton Parcourir pour rechercher le fichier .dll approprié..

Si vous avez installé Office Web Components, le fichier DLL s'appelle OWC11.dll et il est stocké dans c: \ program files \ common files \ microsoft shared \ web components \ 11 \.

Cliquez sur la case à cocher pour la “Microsoft Office Web Components 11.0” référence, et aussi n'oubliez pas de sélectionner “Microsoft Scripting Runtime” ainsi, vous aurez accès à la lecture ou à l'écriture à partir de fichiers de données.

Maintenant que vous avez ajouté la référence, il est temps d'ajouter le graphique réel à votre feuille. Dans Excel, vous pouvez ajouter des contrôles en cliquant sur “Insérer” dans le menu Développeur, et en cliquant sur la petite icône d'outils dans le coin sous “Contrôles ActiveX”.

Faites défiler jusqu'à “Microsoft Office Chart 11.0” et cliquez sur OK.

Nous nous mettons enfin au travail. Voici à quoi ressemble le tableau des composants Web MS intégré dans une feuille de calcul. Il aura le même aspect intégré dans un document Word ou quoi que ce soit d'autre.


Ainsi, dans le cas d'Excel, je souhaite que le graphique charge instantanément les données du fichier de données lors de l'ouverture du fichier de classeur. Pour cela, vous allez dans l'éditeur de code en cliquant sur “Voir le code” dans le menu Développeur et double-cliquez sur le classeur pour afficher le code du classeur. Changer le bon menu déroulant à “Ouvrir”. Ceci est le script qui sera exécuté lors de la première ouverture du fichier de classeur.


Pour charger le graphique avec des données de code, le graphique lui-même a besoin d'un nom. Retournez à la feuille de calcul, faites un clic droit sur le graphique et choisissez Propriétés. Vous verrez le “prénom” champ avec quelque chose comme “ChartSpace1”. Vous pouvez changer cela en n'importe quoi. J'ai appelé le mien “MyChart”.

En outre, pour que vous sachiez à quoi ressemble un fichier de données, le mien est un fichier texte contenant des valeurs de données au format délimité par des virgules. Ce fichier peut être n'importe quoi: données de laboratoire exportées à partir de capteurs, informations financières saisies manuellement dans le fichier par des stagiaires, ou quoi que ce soit d'autre. Vous lirez le fichier avec votre code, donc peu importe l'apparence des données, du moment que vous savez à quoi ressemblera chaque ligne lorsque votre programme le lira..

Alors, maintenant pour la partie amusante. Je vais vous montrer le code par petites sections pour que ce ne soit pas accablant et expliquer ce que le code fait. Le haut du code va d'abord lire toutes les valeurs du fichier texte et les stocker dans deux tableaux, un pour x variables (xVar) et un pour y variables (yVar)..

Dim fso As New FileSystemObject Dim fnum Dim MyFile As String Dim strDataLine As String xVar () As Variant Dim yVar () As Variant Dim intNumOfLines As Entier MonFich = "c: \ files \ MyData.txt" fnum = FreeFile () Ouvrir MyFile Pour une entrée # 1, intNumOfLines = 0 à ne pas faire EOF (1) intNumOfLines = intNumOfLines + 1 Entrée # 1, strDataLine Entrée # 1, strDataLine Boucle Fermer # 1 ReDim xVar (intNumOfLines) ReDim yVar (intNumOfLines) Ouvrir MonFiste 1 intNumOfLines = 0 à ne pas faire EOF (1) Entrée n ° 1, xVar (intNumOfLines) Entrée n ° 1, yVar (intNumOfLines) intNumOfLines = intNumOfLines + 1 Fermeture de la boucle n ° 1

Ce code parcourt essentiellement le fichier de données à deux reprises: la première fois pour dimensionner les tableaux de manière à ce qu'ils correspondent à la longueur exacte nécessaire au stockage des données, puis une seconde fois pour lire les données dans ces tableaux. Si vous ne savez pas ce qu'est un tableau, il s'agit d'une variable ou d'une zone de stockage qui contiendra une longue liste de valeurs auxquelles vous pourrez accéder en utilisant l'ordre dans lequel la valeur a été stockée. Le tiers chargé serait (3), par exemple.

Maintenant que vous avez chargé deux de ces tableaux avec toutes les valeurs de votre fichier de données, vous êtes prêt à charger ces valeurs dans le graphique que vous avez déjà incorporé. Voici le code qui fait ça.

Avec Sheet1.MyChart .Clear .Refresh Définissez oChart = .Charts.Add oChart.HasTitle = True oChart.Title.Caption = "Mes valeurs de données" 'oChart.Interior.Color = "blue" oChart.PlotArea.Interior.Color = " white "Définissez oSeries = oChart.SeriesCollection.Add avec oSeries .Caption =" Mes valeurs de données ".SetData chDimCategories, chDataLiteral, xVar .SetData chDimValues, chDataLiteral, yVar .Line.Color =" blue ".Line.DashStyle = chLine .Weight = 2 .Type = chChartTypeLine Fin avec oChart.HasLegend = True oChart.Legend.Position = chLegendPositionBottom Fin avec

C'est le “Sheet1.MyChart” qui relie le code au graphique que vous avez intégré. C'est basé sur ce que vous l'avez nommé. Ce sera le cas lorsque vous l'incorporerez dans Word, Powerpoint ou tout autre produit Office. Vous ne le référerez pas en utilisant “Feuille1”, mais à la place quel que soit l'élément détient le graphique dans ce cas, tels que “document1” dans Word par exemple.

Le code ci-dessus configure ensuite l’étiquetage et la coloration du graphique, puis charge les valeurs à l’aide de la touche “.setdata” méthode pour les valeurs x et y de l’ensemble de données 2D. Une fois que le code ci-dessus est exécuté, le graphique suivant apparaîtra.

Ces données sont directement sorties du fichier texte. Le seul inconvénient ici est que les fichiers de données ne doivent être bidimensionnels que si vous souhaitez utiliser le code ci-dessus. Vous pouvez ajouter d'autres valeurs à l'ensemble de données, mais vous devez modifier le code ci-dessus pour lire la troisième valeur à chaque fois dans la boucle, puis dupliquer le fichier. “SeriesCollection.Add” section pour créer une autre série, puis l'ajouter au graphique de la même manière.

Cela peut sembler complexe de lire le code ci-dessus, mais une fois que vous en avez fait une, c'est un jeu d'enfant de le modifier en fonction de vos besoins. Vous pouvez utiliser le même graphique et le même code pour créer un graphique à barres, un graphique à dispersion ou tout autre type de graphique que vous souhaitez utiliser avec le même objet. Il est polyvalent et flexible - et constitue un outil puissant dans votre arsenal si vous êtes un féru d'automatisation pour une plus grande productivité..

Jouez avec le code ci-dessus et voyez si vous pouvez charger automatiquement des données dans vos applications. Quelles utilisations créatives pouvez-vous imaginer pour ce type d'automatisation? Partagez vos opinions et commentaires dans la section commentaires ci-dessous!

En savoir plus sur: Microsoft Excel, Microsoft PowerPoint, Microsoft Word.