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

  • Lesley Fowler
  • 0
  • 2490
  • 365
Anuncio

¿No sería bueno 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 texto o CSV y se cargan directamente en un gráfico incrustado en tu hoja de cálculo o documento de Word? Esta es una forma de automatización utilizando productos de Office, porque si es posible automatizar el trazado de datos en Office, solo piense en las posibilidades. Puede cargar automáticamente datos en un gráfico para un informe que está elaborando para su jefe, sin necesidad de ingresar datos. O puede cargar datos en un gráfico directamente en un correo electrónico en Outlook.

La técnica para lograr esto implica instalar el complemento 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 usar en este artículo en artículos anteriores de VBA Cómo puede hacer su propia aplicación simple con VBA Cómo puede hacer su propia aplicación simple con VBA Para aquellos de ustedes que realmente amarían para poder escribir su propia aplicación, pero nunca antes he escrito una sola línea de código, voy a guiarlo para que haga su ... aquí en MakeUseOf. Algunos de los incluidos incluyen el paso de datos entre aplicaciones con el portapapeles. Pase cualquier información entre las aplicaciones de VBA usando el portapapeles Pase cualquier información entre las 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. Puede intentar transacciones muy rápidas ..., exportando tareas de Outlook a Excel Cómo exportar sus tareas de Outlook a Excel con VBA Cómo exportar sus tareas de Outlook a Excel con VBA Si usted es o no un fanático de Microsoft, una buena cosa puede ser lo que se dice acerca de los productos de MS Office, al menos, es lo fácil que es integrarlos entre sí ... y enviar correos electrónicos desde un Excel Cómo enviar correos electrónicos desde una hoja de cálculo de Excel usando scripts de VBA Cómo enviar correos electrónicos desde una hoja de cálculo de Excel usando Scripts de VBA Nuestra plantilla de código lo ayudará a configurar correos electrónicos automáticos desde Excel utilizando Collaboration Data Objects (CDO) y scripts de VBA. guión.

Lo que le voy a mostrar es cómo combinar Office Web Components con secuencias de comandos de archivos de texto para crear un flujo continuo y automatizado de datos desde un archivo de texto plano en su computadora a su producto de Office (en nuestro caso Excel). Puede usar esta misma técnica, con algunas pequeñas modificaciones, en Word, Outlook o incluso PowerPoint. Cualquier producto de Office (o cualquier otro producto) que tenga un back-end VBA para desarrolladores, le permitirá usar 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 hacer 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ú Opciones, haga clic en “Personalizar la cinta” y habilitar el “Desarrollador” lengüeta.

De vuelta en Excle, ahora 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 voy a 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 cuáles son, las referencias son básicamente bibliotecas de código y objetos que puede incorporar a su propio proyecto. Estos le permiten hacer algunas cosas realmente geniales, dependiendo de la referencia que habilite. 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 para “Microsoft Office Web Components 11.0” referencia, y tampoco te olvides de seleccionar “Microsoft Scripting Runtime” también, 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”.

Desplazarse a “Microsoft Office Chart 11.0” y haga clic en Aceptar.

Finalmente nos estamos poniendo manos a la obra. Así es como se ve 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 datos del archivo de datos al abrir el archivo del libro de trabajo. Para hacer esto, vaya al 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. Cambie el menú desplegable de la derecha a “Abierto”. Este es el script que se ejecutará cuando el archivo del libro se abra por primera vez.


Para cargar el gráfico con datos del código, el gráfico mismo necesita un nombre. Vuelva a la hoja de cálculo, haga clic 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 el mio “MyChart”.

Además, para que sepa cómo es el archivo de datos, el mío es un archivo de texto lleno de valores de datos en formato delimitado por comas. Este archivo podría ser cualquier cosa: datos de laboratorio exportados desde sensores, información financiera ingresada manualmente en el archivo por pasantes 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 la lea.

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

Dim fso como 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 () Abrir MyFile Para entrada como # 1 intNumOfLines = 0 Do While Not EOF (1) intNumOfLines = intNumOfLines + 1 Input # 1, strDataLine Input # 1, strDataLine Loop Close # 1 ReDim xVar (intNumOfLines) ReDim yVar (intNumOfLines) Open MyFile For Input como #File ForFile 1 intNumOfLines = 0 Do While Not EOF (1) Input # 1, xVar (intNumOfLines) Input # 1, yVar (intNumOfLines) intNumOfLines = intNumOfLines + 1 Loop Close # 1

Este código básicamente se ejecuta dos veces en el archivo de datos: 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 estos arreglos cargados con todos los valores de su archivo de datos, está listo para cargar esos valores en el gráfico que ya ha incrustado. Aquí está el código que hace eso.

Con Sheet1.MyChart .Clear .Refresh Set oChart = .Charts.Add oChart.HasTitle = True oChart.Title.Caption = "My Data Values" 'oChart.Interior.Color = "blue" oChart.PlotArea.Interior.Color = " white "Set oSeries = oChart.SeriesCollection.Add With oSeries .Caption =" My Data Values ​​".SetData chDimCategories, chDataLiteral, xVar .SetData chDimValues, chDataLiteral, yVar .Line.Color =" blue ".Line. .Weight = 2 .Type = chChartTypeLine End with oChart.HasLegend = True oChart.Legend.Position = chLegendPositionBottom End With

Es el “Sheet1.MyChart” que conecta el código con el gráfico real que ha incrustado. Se basa en cómo lo llamaste. Este será el caso cuando lo inserte en Word, Powerpoint o cualquier otro producto de Office. No lo referirá 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 el color del gráfico, y luego carga los valores utilizando “.setdata” Método para los valores x e y del conjunto de datos bidimensional. Una vez que se ejecuta el código anterior, aparecerá el siguiente gráfico.

Estos datos salen 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 necesitaría modificar el código anterior para leer el tercer valor cada vez a través del ciclo, 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 simplemente leyendo el código anterior, pero una vez que haya hecho uno de estos, es fácil modificarlo para lo que sean sus necesidades. Puede usar el mismo gráfico y un 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 tiene un compañero fanático de la automatización para una mayor productividad..

!




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.