Creación personalizada de mapa en VBA/Excel

Estándar

Hace algunos meses en el trabajo me asignaron la tarea de construir unos reportes de ventas por región. En mi compañía se divide al país (México) en seis regiones. Uno de mis compañeros se basó en la siguiente herramienta para poder construir reportes previos por región:

http://analisisydecision.es/trucos-excel-mapa-de-mexico-por-estados/

Era muy buena herramienta, pero mi compañero solo me estrego las autoformas y yo tenia que seleccionar todos los estados que conformaran una región para posteriormente pintarlos de un color, así sucesivamente con cada región, francamente no es nada cómodo ir seleccionando estado por estado agrupar y pintar así que se me ocurrió la idea de en una hoja tener el id de cada estado con su nombre y el color que le corresponda y ya después al terminar de asignar colores dar clic en un botón y por arte de magia se construye un mapa de México personalizado como cada quien desee.

Los usos para esta macro pueden ser variados (principalmente para todas aquellas empresas mexicanas), los cuales pueden ser:

  • Identificar estados de acuerdo su venta
  • Identificar estados con mayor rotación o días de inventario de un producto
  • Agrupar regiones
  • Destacar estados o grupos de estados de otrossadsa

Los anteriores son los que se me ocurren a mí pero estoy seguro que pueden ocurrírseles decenas de usos más en su trabajo diario.

Les comparto la macro con el código desprotegido para su consulta o modificación.

Anuncios

Crear un gráfico en Excel 2003 vs Excel 2007

Estándar

Anteriormente en Excel 2003 se utilizaba el método “Charts.Add” para agregar un nuevo gráfico, y después, se especificaba los datos, tipo de gráfico y finalmente si se quería el gráfico en la hoja existente o en una nueva.
Si se va a crear una macro que correrá en versiones de Excel 2003, se debe emplear el siguiente código:


Charts.Add
ActiveChart.SetSourceData Source:=Sheets(“Sheet 1”).Range(“A1:E4”)
ActiveChart.ChartType=xlColumnClustered
ActiveChart.Location Where:=xlLocationAsObject, Name:=”Sheet 1”

Pero si solo se va a trabajar con 2007 en adelante, se puede emplear el siguiente codigo:


ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Sheets(“Sheet 1”).Range(“A1:E4”)
ActiveChart.ChartType=xlColumnClustered

Como se puede apreciar para 2007 en adelante se requiere menos código y es mas entendible. Se puede especificar el tamaño y posición del gráfico en el método “AddChart”.

Aquí la macro para que comparen ambos métodos.

Google Apps Script – Video Turoriales

Estándar

Bueno… ya tiene varias semanas que no escribo sobre esta práctica e ingeniosa tecnología que nos permite correr scripts en los servidores de google y que nos dan acceso directo a los servicios que este ofrece, entre los cuales están: Sheets, Docs, Forms, Sites, Drive, Gmail, Calendar, Contacs, Groups, Maps, Translate.

Les comparto los siguientes tres links a videos en español que he encontrado por mi cuenta, por supuesto que existen mas videos, pero estos están en ingles… mas adelante espero escribir sobre los proyectos que he desarrollado por mi cuenta.

clsLog – Registrar el funcionamiento y operaciones que realiza una macro

Estándar

Hace unas semanas me encontraba elaborando la macro para recolectar los datos de varios libros en unos solo. Había casos en los que debido a la mala disposición de los datos, mi macro no sería capaz de tomar los datos. Entonces, que hacer para informar de ello al usuario?

Podría imprimir un mensaje en pantalla indicando el archivo y el tipo de error y detener la ejecución de la macro para que el usuario hiciera las modificaciones de forma manual y ejecutara nuevamente la macro. Este proceso no se me hizo tan fluido, así que me vino a la mente que en un anterior empleo había un sistema que llevaba un Log (bitácora) de todos los cambios y errores en el mismo, así que puse manos a la obra y programe un modulo de clase llamado clsLog con lo cual podría emular la funcionalidad de dicho sistema.

Una vez contando con dicho modulo de clase el usuario ejecutaba la macro y si la macro encontraba algún error en cualquier archivo y por lo mismo no incorporaba los datos, se escribían las observaciones al archivo Log, con esto la ejecución era más fluida. Al terminar la macro, el usuario revisaba el archivo Log para ver si había archivos que tenían problemas y si era así corregirlos todos para ya solamente ejecutar la macro una vez mas.

La clase clsLog cuenta:

  • AddData              – Se encarga de agregar una cadena de texto al Log
  • NewLine             – Agrega un salto de línea al Log
  • Save                      – Escribe el contenido del Log en un archivo
  • Path                      – Establece la ruta de donde se escribirá el Log, en caso de no proporcionar una ruta y nombre, el Log se escribirá en la ruta del actual y con un nombre genérico como “Log-(ddmmyyyy)”

 

Dejo un archivo de ejemplo que incluye la clase clsLog, recuerden que solo deben importarla a sus proyectos con lo cual tendrán todas sus ventajas a su alcance.