Curso de Macros utilizando Matrices Ejercicio 1

Curso de Macros en Excel para aprender cómo utilizar matrices.

En el curso veremos ejercicios para leer los datos de la hoja, llevarlos a una matriz, procesar los datos en memoria, pasar los datos a la matriz de salida y por último poner el resultado a las celdas.






Sub matriz_ejercicio1()
'Incio
  Dim a As Variant, b As Variant
  Dim i As Long, j As Long
'Entradas
  a = Range("A1:C5").Value
  ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
'Proceso
  For i = 1 To UBound(a, 1)
    For j = 1 To UBound(a, 2)
      b(i, j) = a(i, j)
    Next
  Next
'Salida
  Range("E1").Resize(UBound(b, 1), UBound(b, 2)).Value = b
End Sub

Enviar correos de calificaciones en automático

Te gustaría aprender cómo enviar por correo la calificación a cada uno de tus alumnos.

Tienes que pasar cada calificación a un formato, guardarlo como archivo pdf y enviar el archivo por correo a cada alumno.

Eso te lleva MUCHO tiempo y en ocasiones te faltaron correos o no está la información completa.

Revisa el vídeo, ahí te explico cómo enviar correos en automático.





Código para enviar correos:


Sub EnviarCalificaciones()
'Por Dante Amor
  Dim c As Range
  Dim matricula As Range, nombre As Range, evaluacion As Range, curso As Range
  Dim sh2 As Worksheet
  Dim dam As Object
  Dim archivo As String, columnaCorreo  As String, sArea As String
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  '
  'Parámetros
  Set curso = [A4]          'celda con el nombre del curso
  Set matricula = [B6]      'celda con la matrícula
  Set nombre = [E6]         'celda con el nombre del alumno
  Set evaluacion = [B8]     'celda con la evaluación
  columnaCorreo = "G"
  '
  sArea = ActiveSheet.PageSetup.PrintArea
  For Each c In Range("matriculas")
    matricula.Value = c.Value
    archivo = ThisWorkbook.Path & "\" & matricula.Value & ".pdf"
    Range(sArea).ExportAsFixedFormat xlTypePDF, archivo
    
    Set dam = CreateObject("outlook.application").createitem(0)
    dam.To = Sheets(c.Parent.Name).Range(columnaCorreo & c.Row).Value
    dam.Subject = "Evaluación " & evaluacion.Value & _
                  ", " & nombre.Value
    dam.body = "Buen día, en el archivo encontrarás " & _
               "el resultado de tu evaluación del curso : " & curso.Value & vbCr & _
               "Saludos"
    dam.Attachments.Add archivo
    'dam.Display  'El correo se muestra
    dam.Send
  Next
  MsgBox "Calificaciones Enviadas", vbInformation, "Excel y Macros"
End Sub



Curso de Macros utilizando Matrices Ejercicio 2

Curso de Macros en Excel para aprender cómo utilizar matrices. En el curso veremos ejercicios para leer los datos de la hoja, llevarlos a una matriz, procesar los datos en memoria, pasar los datos a la matriz de salida y por último poner el resultado a las celdas. 



Sub matriz_ejercicio2()
  Dim a As Variant, b As Variant
  Dim i As Long, j As Long, k As Long
  
  a = Range("A1:D5").Value
  ReDim b(1 To UBound(a, 1) * UBound(a, 2), 1 To 3)
  
  For i = 2 To UBound(a, 1)
    For j = 2 To UBound(a, 2)
      k = k + 1
      b(k, 1) = a(i, 1)
      b(k, 2) = a(1, j)
      b(k, 3) = a(i, j)
    Next
  Next
  
  Range("F2").Resize(k, 3).Value = b
End Sub






Imprime la pantalla completa y guárdala como jpeg

La siguiente macro captura la imagen completa de la pantalla y la guarda como archivo jpeg en la carpeta y el nombre que desees. 




Sub Guardar_Pantalla()
  'Por.Dante Amor
  Dim sh As Worksheet
  Dim archivo As String
  '
  archivo = "C:\ejemplo\pantalla.jpeg"
  Application.SendKeys "(%{1068})"
  DoEvents
  Set sh = Sheets.Add
  DoEvents
  sh.Shapes.AddChart
  With sh.ChartObjects(1)
      .Height = 500
      .Width = 1000
      .Chart.Paste
      .Chart.Export archivo
  End With
  Application.DisplayAlerts = False
  sh.Delete
  MsgBox "Se guardó la pantalla"
End Sub




Curso de Macros utilizando Matrices Ejercicio 3

Curso de Macros en Excel para aprender cómo utilizar matrices.

En el curso veremos ejercicios para leer los datos de la hoja, llevarlos a una matriz, procesar los datos en memoria, pasar los datos a la matriz de salida y por último poner el resultado a las celdas.





Sub matriz_ejercicio3()
  Dim a As Variant, b As Variant
  Dim i As Long, j As Long, k As Long, m As Long, lr As Long
  
  lr = Sheets("Plantilla").Range("A" & Rows.Count).End(3).Row
  a = Sheets("Plantilla").Range("A1:L" & lr).Value
  ReDim b(1 To UBound(a, 1) * 7, 1 To UBound(a, 2))
  
  For i = 2 To UBound(a, 1)
    m = 5
    For j = 1 To 7
      k = k + 1
      b(k, 1) = a(i, 1)
      b(k, 2) = a(i, 2)
      b(k, 3) = a(i, 3)
      b(k, 4) = a(i, 4)
      b(k, m) = a(i, m)
      b(k, 12) = a(i, 12)
      m = m + 1
    Next
  Next
  
  Sheets("Carga").Range("A2").Resize(k, UBound(b, 2)).Value = b
End Sub







Tabla Dinámica

Las tablas dinámicas se utilizan para organizar tus datos de una manera inteligente, con ellas puedes obtener datos únicos, sumas o conteos de los datos, ordenarlos y darle una presentación más elegante a tu información.

Veamos entonces cómo crear una Tabla Dinámica, para ello realiza los siguientes pasos:

Paso 1:

En tu hoja de Excel. Entra al menú Insertar, selecciona la opción Tabla dinámica.


Paso 2:

Selecciona el rango de datos, la celda donde quieres la tabla dinámica y presiona aceptar.


Paso 3. 

Arrastra el campo Nombres al área de Filas. Arrastra el campo Días al área Valores.


Listo, ya tienes tu tabla dinámica con la suma de días por cada nombre.



Fórmula EXTRAE

Les ha tocado que les envíen información en un archivo de Excel o en PDF y necesitan obtener la fecha, pero ésta, no se encuentra en una columna, en el siguiente ejemplo, la fecha se encuentra al final del texto, en medio pero en diferentes posiciones y también al inicio del texto.


Utilizando los signos de interrogación (?) como comodín, dentro de la función Hallar, podemos determinar en cuál posición empieza la fecha.

=HALLAR("??/??/????",A2)

De esta manera, sin importar si la fecha se encuentra al inicio, en medio o al final, podremos saber exactamente dónde comienza.

Con la función Extrae y el número de posición obtenido con la función Hallar, entonces podemos obtener la fecha, por ejemplo, para el primer texto, la fórmula quedaría así, extraer de la celda A2, empezando en la posición 45, tomar 10 caracteres que conforman dos caracteres para el día + la diagonal + 2 caracteres para el mes + la diagonal + cuatro caracteres para el año, en total considerar 10 caracteres en la extracción:

=EXTRAE(A2,45,10)

Combinando las funciones Extrae y Hallar podemos obtener definitivamente la fecha:

=EXTRAE(A2,HALLAR("??/??/????",A2),10)