Cómo crear un gráfico a partir de archivos de datos sin procesar en cualquier producto de Office

Cómo crear un gráfico a partir de archivos de datos sin procesar en cualquier producto de Office / Windows

¿No sería agradable tener la capacidad de abrir una hoja de cálculo de Excel o un documento de Word y, sin tener que hacer nada, los datos se leen directamente de un archivo de datos de texto o CSV y se cargan directamente en un cuadro incrustado? en su hoja de cálculo o documento de Word? Esta es una forma de automatización que utiliza productos de Office, porque si es posible automatizar el registro de datos en Office, solo piense en las posibilidades. Puede cargar automáticamente datos en un gráfico para un informe que está reuniendo para su jefe, no se requiere entrada de datos. O puede cargar datos en un gráfico directamente en un correo electrónico en Outlook.

La técnica para lograr esto consiste en instalar el complemento de Office Web Components. Además, solo necesita configurar algunas cosas dentro de la aplicación de Office que desea usar para importar los datos, y está listo para comenzar a automatizar su trabajo de informes. He cubierto algunos de los elementos que vamos a utilizar en este artículo en artículos anteriores de VBA. Cómo puede crear su propia aplicación simple con VBA Cómo puede crear su propia aplicación simple con VBA Para aquellos de ustedes que realmente les encantaría para poder escribir tu propia aplicación, pero nunca antes has escrito una sola línea de código, te guiaré para hacer tu propia ... Lee más aquí en MakeUseOf. Algunos de los que incluyen el paso de datos entre aplicaciones con el portapapeles Pasan cualquier información entre aplicaciones de VBA usando el portapapeles Pasan cualquier información entre aplicaciones de VBA usando el portapapeles Una de las partes más frustrantes de trabajar con VBA dentro de aplicaciones específicas, es que no siempre es fácil para obtener dos aplicaciones para “hablar” el uno al otro Puedes intentar transacciones muy rápidas ... Leer más, exportar tareas de Outlook a Excel Cómo exportar tus tareas de Outlook a Excel con VBA Cómo exportar tus tareas de Outlook a Excel con VBA Ya sea que seas fanático de Microsoft o no, algo bueno que se puede decir acerca de los productos de MS Office, al menos, es lo fácil que es integrarlos entre sí ... Leer más, y enviar correos electrónicos desde un Excel Cómo enviar correos electrónicos desde una hoja de cálculo de Excel Uso de scripts de VBA Cómo enviar correos electrónicos desde una hoja de cálculo de Excel que utiliza secuencias de comandos de VBA Nuestra plantilla de código lo ayudará a configurar correos electrónicos automatizados desde Excel utilizando los objetos de datos de colaboración (CDO) y las secuencias de comandos de VBA. Leer más script.

Lo que le mostraré es cómo combinar Office Web Components con secuencias de comandos de archivos de texto para crear un flujo de datos automatizado y sin problemas desde un archivo de texto plano en su computadora a su producto de Office (en nuestro caso Excel). Puede utilizar esta misma técnica, con algunas pequeñas modificaciones, en Word, Outlook o incluso en PowerPoint. Cualquier producto de Office (o cualquier otro producto para el caso) que tenga un back-end VBA para desarrolladores, le permitirá utilizar esta técnica.

Importar y crear un gráfico a partir de archivos de datos

Antes de poder crear un gráfico a partir de archivos de datos, primero deberá habilitar algunas cosas. En este ejemplo, le mostraré cómo habilitar estas características en Excel, pero el proceso es casi idéntico en todos los demás productos de Office..

Primero, antes de que pueda realizar cualquier desarrollo de VBA, debe habilitar la pestaña de desarrollador en la barra de herramientas (si aún no lo ha hecho). Para hacer esto, simplemente vaya al menú de Opciones, haga clic en “Personalizar la cinta” y habilitar el “Desarrollador” lengüeta.

De vuelta en Excle, ya verás “Desarrollador” Aparecer en los menús. Haga clic en él y haga clic en “Modo de diseño”. Luego haga clic en “Ver código” para ver el editor de VBA.

Dentro del editor es donde deberá habilitar las referencias que necesitará para el código que le daré para trabajar. Asegúrese de haber instalado el complemento Office Web Components antes de hacer esto, de lo contrario, el objeto Microsoft Chart no estará disponible.


Haga clic en Herramientas y luego en Referencias, y verá una lista de todas las referencias disponibles en su sistema. Si no sabe qué son, las referencias son básicamente bibliotecas de código y objetos que puede incluir en su propio proyecto. Estos te permiten hacer cosas realmente interesantes, dependiendo de la referencia que habilites. Si acaba de instalar Office Web Components en su sistema, deberá agregarlo como una nueva biblioteca, así que haga clic en el botón Examinar para encontrar el archivo .dll correcto..

Si ha instalado Office Web Components, el archivo DLL se llama OWC11.dll y se almacena en c: \ archivos de programa \ archivos comunes \ Microsoft shared \ web components \ 11 \

Haga clic en la casilla de verificación de la “Microsoft Office Web Components 11.0” Referencia, y también no te olvides de seleccionar “Microsoft Scripting Runtime” también, lo que le dará acceso para leer o escribir desde archivos de datos.

Ahora que ha agregado la referencia, es hora de agregar el gráfico real a su hoja. En Excel, puede agregar controles haciendo clic en “Insertar” en el menú Desarrollador, y haciendo clic en el pequeño icono de herramientas en la esquina debajo de “Controles ActiveX”.

Desplácese hasta “Gráfico de Microsoft Office 11.0” y haga clic en Aceptar.

Finalmente nos estamos poniendo manos a la obra. Esto es lo que parece el gráfico de componentes web de MS incrustado en una hoja de cálculo. Se verá igual incrustado en un documento de Word o cualquier otra cosa.


Entonces, en el caso de Excel, quiero que el gráfico cargue instantáneamente los datos del archivo de datos al abrir el archivo del libro de trabajo. Para ello, entra en el editor de código haciendo clic en “Ver código” en el menú Desarrollador, y haga doble clic en el libro de trabajo para ver el código del libro de trabajo. Cambia el desplegable de la derecha a “Abierto”. Este es el script que se ejecutará cuando el archivo de libro se abra por primera vez.


Para cargar el gráfico con datos del código, el gráfico en sí necesita un nombre. Vuelva a la hoja de cálculo, haga clic con el botón derecho en el gráfico y elija Propiedades. Verás el “Nombre” campo con algo como “ChartSpace1”. Puedes cambiar esto a cualquier cosa. He llamado al mio “MyChart”.

Además, solo para saber cómo es el archivo de datos, el mío es un archivo de texto con valores de datos en formato delimitado por comas. Este archivo puede ser cualquier cosa: datos de laboratorio exportados desde sensores, información financiera introducida manualmente en el archivo por internos, o cualquier otra cosa. Leerá el archivo con su código, por lo que no importa cómo se vean los datos, siempre que sepa cómo se verá cada línea cuando su programa los lea..

Entonces, ahora para la parte divertida. Le mostraré el código en pequeñas secciones para que no sea abrumador y le explicaré qué hace el código. La parte superior del código primero leerá todos los valores del archivo de texto y los almacenará en dos arrayx, uno para las variables x (xVar) y otro para las variables y (yVar).

Dim fso As New FileSystemObject Dim fnum Dim MyFile As String Dim strDataLine As String Dim xVar () As Variant Dim yVar () As Variant Dim intNumOfLines As Integer MyFile = "c: \ files \ MyData.txt" fnum = FreeFile () Open MyFile Para entrada como # 1 intNumOfLines = 0 Hacer mientras que no EOF (1) intNumOfLines = intNumOfLines + 1 Entrada # 1, strDataLine Entrada # 1, strDataLine Loop Cerrar # 1 ReDim xVar (intNumOfLines) ReDim yVar (intNumOfLines) 1 intNumOfLines = 0 Do While While No EOF (1) Input # 1, xVar (intNumOfLines) Input # 1, yVar (intNumOfLines) intNumOfLines = intNumOfLines + 1 Loop Close # 1

Básicamente, este código se ejecuta en el archivo de datos dos veces: la primera vez para dimensionar las matrices de modo que tengan la longitud exacta necesaria para almacenar los datos, y luego una segunda vez para leer los datos en esas matrices. Si no sabe qué es una matriz, es una variable o un área de almacenamiento que contendrá una larga lista de valores a los que puede acceder utilizando el orden en que se almacenó el valor en la matriz. El tercero cargado sería (3), por ejemplo..

Ahora que tiene dos de estas matrices cargadas con todos los valores de su archivo de datos, está listo para cargar esos valores en el gráfico que ya ha incorporado. Aquí está el código que hace eso.

Con Sheet1.MyChart .Clear .Refresh Set oChart = .Charts.Add oChart.HasTitle = True oChart.Title.Caption = "Mis valores de datos" 'oChart.Interior.Color = "blue" oChart.PlotArea.Interior.Color = " blanco "Set oSeries = oChart.SeriesCollection.Add With oSeries .Caption =" My Data Values ​​".SetData chDimCategories, chDataLiteral, xVar .SetDataplacas en las que se encuentra la empresa. .Weight = 2 .Type = chChartTypeLine End With oChart.HasLegend = True oChart.Legend.Position = chLegendPositionBottom End With

Es el “Sheet1.MyChart” que conecta el código al gráfico real que has incrustado. Se basa en lo que le pusiste. Este será el caso cuando lo incruste en Word, Powerpoint o cualquier otro producto de Office. No lo referirás usando “Hoja1”, pero en su lugar, cualquier elemento que contenga el gráfico en ese caso, como “documento1” en Word por ejemplo.

El código anterior configura el etiquetado y la coloración del gráfico y luego carga los valores utilizando el “.setdata” Método para los valores x e y del conjunto de datos bidimensionales. Una vez que se ejecuta el código anterior, aparecerá el siguiente gráfico.

Estos datos son directamente del archivo de texto. El único inconveniente aquí es que los archivos de datos deberían ser bidimensionales solo si desea utilizar el código anterior. Podría agregar más valores al conjunto de datos, pero tendría que modificar el código anterior para leer el tercer valor cada vez a través del bucle y luego duplicar el “SeriesCollection.Add” sección para crear otra serie y luego agregarla al gráfico de la misma manera.

Puede parecer complejo solo leer el código anterior, pero una vez que haya hecho uno de estos, es muy fácil modificarlo para lo que sea que necesite. Puede usar el mismo gráfico y código similar para crear un gráfico de barras, un gráfico de dispersión o cualquier otro tipo de gráfico que desee con este mismo objeto. Es versátil y flexible, y es una herramienta poderosa en su arsenal si usted es un fanático de la automatización para una mayor productividad..

Juegue con el código de arriba y vea si puede cargar datos automáticamente en sus aplicaciones. ¿Qué usos creativos puedes pensar para este tipo de automatización? Comparte tus opiniones y comentarios en la sección de comentarios a continuación!

Explore más acerca de: Microsoft Excel, Microsoft PowerPoint, Microsoft Word.