Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Macros

El origen de la palabra macro se remonta al griego, tal como lo define Wikipedia  (μακρο, makro, que significa ‘grande’).

Las macros en programación son una serie de instrucciones que se pueden ejecutar de manera secuencial desde que se realiza la invocación a la ejecución . Cada una de las instrucciones de las cuales están compuestas son instrucciones sencillas.  El principal beneficio de las macros radica en poder lograr la automatización de tareas repetitivas.

Las macros pueden almacenarse y emplearse dentro del propio programa que las utiliza, por ejemplo en Excel  las macros suelen formar parte del mismo archivo en el cual se desea que las macros sean ejecutadas.

Lenguaje de Programación usado en las Macros

Las macros en Excel, se realizan por medio de un lenguaje de programación conocido como VBA , "Visual Basic para Aplicaciones", o "Visual Basic for Applications".

A la lógica que se utiliza para escribir las macros se le conoce como Algoritmo, podemos ver más al respecto en: ¿Qué es un Algoritmo?

A la técnica empleada, por medio de este lenguaje de programación, para escribir las Macros se le conoce Programación Estructurada, puede examinar más sobre este concepto en: ¿Qué es Programación Estructurada?

Todo sobre Macros en Excel 

Los primeros pasos para empezar a usar las macros los podemos ver en: Crear macro paso a paso.

Otros conceptos iniciales los podemos encontrar en:

¿Qué es una Macro en Excel? 

¿Qué es VBA?

Introducción a las Macros en Excel 

Curso de Excel Avanzado

 

Macros avanzadas de Excel 

Algunos de los mejores ejemplos de macros:

  1. Ejercicios resueltos de VBA
  2. Validar datos en VBA
  3. Sorteo en Excel con Macros
  4. RemoveDuplicates VBA Excel
  5. Uso de fechas en VBA
  6. Doble condicional en VBA
  7. Manipular Formatos en VBA
  8. Proceso Masivo de Datos
  9. Fechas en Formulario con VBA
  10. Simular usuario y Password en VBA
  11. El Modelo de Objetos de Excel
  12. VBA Guardar Como
  13. Quitar duplicados en VBA
  14. Macro para abrir y cerrar archivos en Excel
  15. Generar números primos en Excel
  16. Pantalla completa en Excel (VBA)
  17. Ventajas de usar Macros en Excel
  18. Personajes Principales de SAILOR MOON
  19. Lista Pokemon Excel
  20. Seleccionar rango en VBA
  21. 5 tips de macros recomendables
  22. 5 conceptos básicos de VBA
  23. 5 ejemplos de Macros con FOR
  24. Cinco conceptos para aprender VBA
  25. Mis cinco ejemplos “if…then…else” favoritos
  26. Mis 5 ejemplos favoritos de Macros
  27. 5 trucos de Macros recomendables
  28. 5 ejemplos de gráficos con macros
  29. 5 Funciones en VBA imprescindibles
  30. 5 Mejores ejemplos de tablas dinámicas con macros
  31. 5 ejemplos de uso de Loop
  32. 5 macros para el manejo de hojas en Excel
  33. 5 Ejemplos de macros con Select Case
  34. 5 Ejemplos de Macros con For
  35. Mis 5 ejercicios favoritos de userforms
  36. 5 macros para el manejo de rangos en Excel
  37. 5 Ejercicios de Funciones definidas por el usuario
  38. 5 Trucos de VBA necesarios
  39. 5 ejemplos favoritos de Userforms
  40. 5 ejemplos de macros con With
  41. 5 ejemplos para comenzar a usar Macros
  42. Ejemplos de funciones definidas por el usuario
  43. 5 macros para el manejo de libros en Excel
  44. ¿Qué es el WACC?
  45. Suma de decibeles
  46. Números Primos
  47. Catálogos de imágenes con Macros

16 comentarios

  1. Hola, tengo una pregunta, no se si este sea el medio para hacerla llegar: Tengo una macro que es para darle formato a un reporte, al cual le agrego una columna -formula- en la linea 3 y luego con "doble click" para llenar -como copy paste- las celdas de abajo., el punto es que, cuando hice la macro tenia 150 registros aprox, y asi se grabo la macro, pero ahora tiene aprox 200, y de hecho cada dia varía tantitos renglones mas,, tantitos renglones menos, ¿como puedo hacer que se copien a la cantidad de renglones exacta de cada dia? es decir, que el "paste" varíe segun el numero de renglones. Muchas Gracias.

    • Hola Dany ... por lo que mencionas tienes que examinar tu código para determinar donde se aparece "150" .. que es la cantidad para la que funciona tu código .. luego usar el código de la última fila en reemplazo de ese 150 .. para que funcione para cualquier cantidad de registros que existan.

      https://www.excel-avanzado.com/2791/identificar-la-ultima-fila-en-uso-con-vba.html

      Saludos

  2. Hola amigos tengo una duda quiero saber si porfavor me la responden

    ¡Como hago una aplicacion que me permita alquilar autos a los clientes verificando que los autos de mi lista se encuentren disponibles ?

    Muchisimas Gracias soy del Lago de Yojoa Honduras"!!!!

  3. Estimados, junto con saludar, me es de gran interés realizar una macro en la cual realice una búsqueda en todas las hojas y con datos repetidos. Por ejemplo, en el libro cuento con 25 hojas, donde cada una de estas hojas representa a cada trabajador. En estas hojas contamos con una columna de w/o, donde cada técnico trabaja en w/o similares. La búsqueda es para verificar quien está trabajando en esas w/o. es bastante simple realizarlo con Ctrl+b y buscar todo, pero me gustaría realizarlo de forma más amigable para los técnicos.

    Desde ya se agradece.

    Saludos.

  4. Muy interesante la información que brindan, estoy interesada en aprender macros.

    gracias
    saludos

  5. estoy intentado realizar mi propio programa par contrlar una farmacia pequeña con 2 sucursales mas pequeñas y al realizar me obstruye indicandome que no estan habilitadas mis macros ya lo habilite las macros como encontre en el internet pero sigue saliendome ese mensaje necesito ayuda !!!urgente !!!

    • Lo usual es realizar el cambio en el nivel de seguridad, tal como se muestra en:
      https://www.excel-avanzado.com/16620/cambiar-el-nivel-de-seguridad-en-excel-2010.html

      a veces (en alguna ocasión) es necesario cerrar el Excel completamente, y en la siguiente ocasión ya aparecerá correctamente.

  6. hola, he copiado el siguiente codigo de una macro, me da este error :
    " error compilacion... caracter no valido "
    Decir que uso excel 2010
    function conversorSegundosHoras($tiempo_en_segundos) {
    $horas = floor($tiempo_en_segundos / 3600);
    $minutos = floor(($tiempo_en_segundos - ($horas * 3600)) / 60);
    $segundos = $tiempo_en_segundos - ($horas * 3600) - ($minutos * 60);

    $hora_texto = "";
    if ($horas > 0 ) {
    $hora_texto .= $horas . "h ";
    }

    if ($minutos > 0 ) {
    $hora_texto .= $minutos . "m ";
    }

    if ($segundos > 0 ) {
    $hora_texto .= $segundos . "s";
    }

    return $hora_texto;
    }

  7. Saludos, desde hace tiempo su web me ha ayudado en muchos problemas que me han ido surgiendo a la hora de implementar soluciones en office, me ha surgido un problema:
    -Uso una macro para pasar informacion contenida en varios libros de excel, al ser muy diferente la informacion utilizo varialbes de tipo string para capturar la informacion -->

    ' declaracion de variales, asi hago con todas, ya que tengo fechas, valores numericos y celdas con texto e incluso formulas (aluna suma, resta o lo que corresponda en esa determinada posicion)

    Dim p01_j20 As String

    'voy cambiando de hoja en funcion de los datos a asignar a mis variales ya que algunas las uso varias veces

    Sheets("P01").Select

    p01_j20 = Range("J20")

    'P01_J20_I es el bookmark que tengo insertado en word y mete el valor de la variable optenida desde excel

    Call insertar_campo("P01_J20_I", p01_j20)

    'macro inserta en word el bookmark

    Sub insertar_campo(arg1 As String, arg2 As String)
    'Cada vez que se inserte un campo en el word se llamara al procedimiento
    wdApp.activedocument.bookmarks(arg1).Range.Select
    wdApp.Selection.TypeText Text:=arg2
    End Sub

    mi problema es que en el word al insertar el dato mediante bookmarks los numero se me pegan sin formato

    muchas gracias de antemano y seguid asi, ayudais a mucha gente
    un saludo

    • Ya lo he encontrado, buscando por ahi -->
      p02_j20 = Format(Range("J20"), "#,##0.00")
      en este caso me aplica formato de miles

    • Hola Carlos

      Se puede probar con lo siguiente:

      https://www.excel-avanzado.com/183/copiar-un-contenido-de-excel-a-word.html

  8. Tengo una cantidad de registro bastante robusta en Excel, entre los campos que tengo existe uno que se llama "Obj_Accion" (que corresponde la dirección). Lo que necesito hacer es que una macro me identifique las celdas de esta columnas que están vacías, y me las copie (con toda su fila) a otra hoja excel.

    ¿es posible?

  9. Hola,
    Quisiera hacer una macro para que, eligiendo dd, mmm, yyyy de un calendario desplegable, se abra un archivo que contiene en su nombre esa fecha seleccionada.
    Muchas gracias,
    Saludos,

  10. HOLA BUENAS TARDES
    EN UN FORMULARIO SI HAY UNA VARIABLE QUE DETERMINE EL ULTIMO
    REGISTRO DE LA HOJA COMO LA UTILIZO PARA DIFERENTES HOJAS COMO DECLARO LA FORMULA PARA DIFERENTES HOJAS Y EL FORMULARIO ME SIRVA PARA TODAS MIS HOJAS GRACIAS

  11. Mucho gusto en tener contacto con Uds. Soy profesor de cursos de informática y requiero ampliar mis conocimiento conocimientos en excel avanzado.

  12. Buen día es posible a través de una macro en vba en excel enviar un mensaje a través de microsoft teams? Saludos

Deja una respuesta

Los campos requeridos estan marcados con *.