Cómo creé mi primera macro
Uno de mis primeros empleos fue el de “procesador de pedidos” en una gran central de compras. Todos los días recibía entre 100 y 150 archivos con pedidos de las tiendas asociadas a nuestra empresa. Estos archivos me llegaban en formato csv que debía introducir en el sistema informático de la empresa.
Parecía un trabajo sencillo, de hecho lo era porque no tenía que pensar mucho. Solamente tenia tres pasos:
- Separar en columnas los diferentes campos (creo recordar que eran alrededor de cinco)
- Cambiar el orden de las columnas
- Importar ese archivo en el sistema informático.
Fácil, ¿verdad?
Al principio lo hacía todo a mano. El compañero al que sustituía lo llevaba haciendo así desde hace mucho tiempo y por el momento iba a esperar para ver cómo mejorar esto. Ni que decir tiene que jamás había oído hablar de macros o VBA.
Cierto día, buscando otro tipo de información, me topé con una web sobre Excel (imposible recordar cuál) en la que se hablaba de simplificar tareas repetitivas con algo llamado “grabadora de macros”…
Como soy más curioso que un gato, me puse a investigar qué era eso de la grabadora de macros y descubrí que servía para grabar las acciones que ibas haciendo en la hoja de cálculo para luego reproducirlas infinitas veces con muy pocos clics de ratón. Es decir que añadir o quitar filas o columnas, introducir valores o crear fórmulas, podría hacerlo con un solo clic de ratón. ¡¡Qué descubrimiento!!
¿Qué pasos seguí para automatizar mi trabajo?
- En primer lugar pensé en el orden óptimo de los movimientos de datos que iba a hacer dentro de mi csv para evitar cualquier posible error y acelerar el funcionamiento. Esto es algo importante para no ‘desperdiciar’ movimientos (que se traducen en más tiempo de ejecución).
- Pulsé en el botón Grabar macro que se encuentra en la parte inferior izquierda de la pantalla (la versión de Excel que utilizaba entonces estaba incluida en Office 97.
- Le di un nombre a la macro y le asigné un atajo de teclado (creo que Ctrl + s, que en teclado español (de España) sirve para subrayar valores). Guardé la macro en el libro de macros personal para que estuviese disponible en cualquier archivo que abriera desde mi equipo. Para cerrar el cuadro de diálogo pulsé Aceptar.
- A continuación, cambié el orden de las columnas colocándolas en la posición adecuada para que el sistema informático lo leyera correctamente.
- Una vez que estuvo todo perfectamente formateado, finalicé la grabación pulsando en el botón Detener grabación que se encuentra en el mismo sitio que el de inicio de la grabación (en el extremo inferior izquierdo).
Después de finalizar el trabajo tenía que comprobar que la macro repetía las acciones que acababa de grabar, así que abrí un archivo csv de los que recibía diariamente, presioné las teclas Ctrl + S…
Y ¡¡voila!!¡en menos de medio segundo había hecho el trabajo de casi dos minutos.
Si quieres curiosear, el código que generó la macro grabada fue el siguiente:
Sub ImportaPedidos()
'
' ImportaPedidos Macro
'
' Acceso directo: Ctrl+s
'
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _
TrailingMinusNumbers:=True
Columns("B:B").Select
Selection.Cut
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
Columns("E:E").Select
Selection.Cut
Columns("D:D").Select
Selection.Insert Shift:=xlToRight
End Sub
Me sentí tan orgulloso de mi macro que se la enseñaba a todo aquel que se acercaba a mi despacho.
Por supuesto, el código grabado con la grabadora es muy mejorable para hacerlo funcionar más rápido, pero desde ese día me dije que si había sido capaz de crear esa sencilla macro, podría ser capaz de crear cosas más complicadas.
Excelente
Saludos.
Motivante y desafiante al mismo tiempo
Sergio, el maestro forma al alumno, efectivamente, es por eso que me gusta este blog, porque asi comienza uno, quitandose el miedo
“(se puede estropear el archivo o puedo descomponer la aplicacion o no se hacer eso)”
Asi comence, entrando a ayudaexcel y esa manera de pensar me dio fuerzas y valor para disminuir el tiempo de actualizacion y cambio de formato a un archivo de Programacion de Horarios de una Plataforma de 70 Oficiales de Atencion Telefonica que estaba en xlsb a formato de xls 2003.
El tiempo que me tomaba para hacer esas modificaciones era de 1.5 horas, para automatizarlo (como era mi primera vez) lleve 16 horas pero lo deje salvaje, despues era un proceso de 1 minuto.
Gracias sergio por este sitio.
Ya cuando me promovieron a otro departamento, la actualizacion de horas extras se basa en reportes de AVAYA CMS (cuando me lo dieron todo era manual) y tambien ese archivo (Programacion de Horarios) esta amarrado a un control de adherencia (ese archivo fue otra mejora) y viceversa.
Gracias por tu comentario, Guillermo. Un pensamiento que intento transmitir con la web es que Excel sirve para trabajar menos y más rápido.
Genial pagina, me ayudaron mucho en un proyecto para mi trabajo. Muy recomendable
Desde aquí animo a todo el mundo a programar, no sólo en excel, sino tb en access. Con este binomio se pueden hacer grandes cosas. Y un ejemplo es mi trabajo, una multinacional soportada por un programa hecho en access y con muchas herramientas que capturan estos valores y los pasan a excel
ánimo y suerte a todos,
Jordi
Jordi, gracias por tu comentario. Me alegra saber que tanto la web como el foro de Ayuda Excel, son de utilidad para mucha gente.
Saludos
Saludos. Es sorprendente ver la inmensidad de cosas que se puede hacer con excel. A veces pienso que no se va a poder alcanzar a revisar mas cosas porque de hecho parecen difíciles. pero con la ayuda de esta página y sobre del MAESTRO Sergio las cosas se hacen un poco mas llevaderas. Gracias por compartir.
Felicidades por esta magnífica web…en ese mismo punto que describes, me encontraba yo hace cosa de unos 4 meses, cuando alentado por mis escasos conocimientos adquiridos sobre otros lenguajes de programación, y con el objetivo de automatizar procesos diarios de mi actual trabajo, descubrí el maravilloso mundo de VBA. Gracias por compartir tus conocimientos!
VBA es la herramienta más útil que tiene Excel, ya que es capaz de convertir un programa “general” en una auténtica aplicación adaptada a cada necesidad. Poco a poco y sin darte cuenta, irás aprendiendo cosas nuevas.
Estimado Sergio: Primera vez que te escribo. Primera vez que ingreso a una de estas “ayudas”. Primera vez que solicito información de este tipo…(soy auto didacta), Primera vez que envío agradecimientos y me alegro mucho de haberte contactado, pues ya me di cuenta lo que “pesas” y lo valioso que me será tu apoyo en este tema.
¡sigue siempre igual…te deseo que la buena suerte esté de tu lado!
Jorge, Antofagasta, Chile.
Gracias, Jorge. Espero verte por aquí a menudo!
Hola Sergio, este foro ha sido de gran ayuda para mi.. te agradesco mucho por toda la informacion que compartes.
Quiero aprender a utilizar macros , pero no se como empezar . ¿ me puedes ayudar?
Juanjo, si vas a aprender desde cero, te recomiendo que busques en Youtube. Existen cursos completos para usuarios que no saben nada de macros.
También, más offline tienes mi Manual de Programación VBA para Excel, que también es para principiantes.
Saludos
Hola Como estás?
Te envio este saludo desde Chile. Vivo en la ciudad de Rancagua, donde se encuentra, la mina de cobre subterranea, más grande del mundo. Comentario aparte jjjjj.
Sergio. Desde hace tiempo que quiero aprender a programar en macros, pero no se por donde empezar. Por ejemplo
veo tus ejemplos, y aparecen las lineas de codigo………. y hasta llego.
Para programar en macro. Hay que tener necesariamente, conocimientos o nociones en programación?
Que manual, o texto, recomendarías para un principiante como yo, que desea indagar y aprender en éste intrigante e interesante “mundo” de las macros.
Esperando una buena acogida por la presente, se despide
atentamente
Danilo Martínez B.
Rancagua, marzo 11 de 2016