Generar citaciones a estudiantes de una lista en base de datos.

Dispongo de una base de datos generada por profesores, en la cual se reflejan datos como las materias que están observados los estudiantes, motivo del reporte entre otros, quisiera poder generar una citación a ese grupo de estudiantes, el cual seria variable, desde pocos estudiantes hasta 500 o más.

Base de datos, en la cual se refleja al estudiante, y todas las áreas en la que esta reportado, ejemlplo el estudiante "Alegre Vasquez Negro : estaría reportado en : Comunicación y lenguajes, Lengua extranjera, Ciencias Sociales, Ciencias naturales: Biología, entre otras",

formato de citación:

Respuesta
2

Comparte en google drive un archivo con 3 hojas.

En la primera hoja la base de datos. Marca en amarillo un alumno para utilizarlo de ejemplo.

En la segunda hoja el formato.

En la tercera hoja el formato con el ejemplo del alumno. Marca en amarillo los datos que corresponden al alumno.

https://drive.google.com/file/d/17Q2ZEbd3ogKndEd-mGhgQNVN92fLW1Gm/view?usp=sharing 

https://drive.google.com/file/d/17Q2ZEbd3ogKndEd-mGhgQNVN92fLW1Gm/view?usp=sharing

Buenas tardes Dante Amor, ya hice las diferentes hojas con lo que me solicito, estaré atento para ver como se puede resolver nueva necesidad que tengo, le agradezco una vez más por su tiempo.

Cada citación de cada alumno la quieres en archivo xls o pdf y qué nombre le ponemos al archivo.

Buenas tardes Dante Amor, en xls para poder tal vez modificar algo más adelante, lo cual también me permitiría exportar en pdf, muchas gracias.

¿Y el nombre de cada archivo?

El nombre del estudiante y curso. O en caso lo exporte por curso, el nombre del mismo, por favor. 

Realiza lo siguiente:

Crea un UserForm con 2 textbox y commandbutton.

En el UserForm pon todo el siguiente código.

Option Explicit
Private Sub CommandButton1_Click()
  Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet
  Dim dic As Object
  Dim wb2 As Workbook
  Dim a As Variant, b As Variant, ky As Variant, ary As Variant
  Dim i As Long, j As Long, k As Long, cont As Long, fil As Long, col As Long
  '
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  '
  Set sh1 = Sheets("Hoja1")
  Set sh2 = Sheets("formato")
  Set dic = CreateObject("Scripting.Dictionary")
  dic.comparemode = vbTextCompare
  '
  a = sh1.Range("A2:E" & sh1.Range("A" & Rows.Count).End(3).Row).Value
  ReDim b(1 To UBound(a, 1), 1 To 50)
  '
  For i = 1 To UBound(a, 1)
    ky = a(i, 5)
    If Not dic.exists(ky) Then
      cont = cont + 1
      dic(ky) = cont & "|" & 1
      b(cont, 1) = a(i, 2)
    End If
    j = Split(dic(ky), "|")(0)
    k = Split(dic(ky), "|")(1)
    k = k + 1
    b(j, k) = a(i, 3)
    dic(ky) = j & "|" & k
  Next
  For Each ky In dic.keys
    i = Split(dic(ky), "|")(0)
    sh2.Copy
    Set wb2 = ActiveWorkbook
    Set sh3 = wb2.Sheets(1)
    sh3.Range("B5").Value = ky
    sh3.Range("G5").Value = b(i, 1)
    sh3.Range("B12").Value = TextBox1.Value
    sh3.Range("D12").Value = TextBox2.Value
    col = 1
    fil = 8
    For j = 2 To UBound(b, 2)
      If b(i, j) = "" Then Exit For
      sh3.Cells(fil, col).Value = b(i, j)
      col = col + 2
      If col > 7 Then
        fil = fil + 1
        col = 1
      End If
    Next
    wb2.SaveAs ThisWorkbook.Path & "\" & ky & "-" & b(i, 1) & ".xlsx"
    wb2.Close False
  Next
  Application.DisplayAlerts = True
  Application.ScreenUpdating = True
  MsgBox "Fin de generar archivos", vbInformation, "CITACIONES"
End Sub
'
Private Sub UserForm_Activate()
  TextBox1.Value = Format(Date, "dd/mm/yyyy")
  TextBox2.Value = Format(Now, "hh:mm am/pm")
End Sub

Modifiqué un poco el "formato". Te anexo el archivo, para que ejecutes la macro y generar los archivos.

En la hoja1 te puse un botón para abrir el userform, llenar la fecha y la hora. Presiona el botón para generar los archivos de los estudiantes.


[No olvides valorar la respuesta.


Puedes dejar la fecha y la hora vacías y posteriormente llenar la fecha y hora en el archivo de acuerdo a la agenda de citaciones.

https://docs.google.com/spreadsheets/d/1DCef84F1lzCjqnNXrnB4VmaTllG5nShr/edit?usp=sharing&ouid=103060997651612915482&rtpof=true&sd=true 


¡Gracias! acabo de probar la macro, funciona perfectamente, voy tratando de entenderla para poder hacer uso en distintos casos, mil gracias Dante Amor.

[Encantado de ayudarte.  Gra cias por comentar!

1 respuesta más de otro experto

Respuesta
2

Este es el tipo de consultas ideales para Access y gestores de datos. Si quiere envíeme su libro de Excel y lo traslado a Access para que le quede fácil de consultar e imprimir. Aunque estoy seguro que los expertos de Excel lo pueden automatizar. Mi correo es [email protected] si lo hace favor en el asunto anotar la consulta.

Muchas gracias, nunca he probado access pero de igual manera me gustaría aprender, le envíe un correo tal vez lo pueda revisar, si se pudiera hacer también con macros, se los agradecería muchísimo.

Ya la elaboré en Access, pero hay un detalle a la base de datos de Excel le hace falta el nombre del tutor

Igualmente se debe solicitar la fecha y hora de la reunión, algo como:

Este sería el reporte.

Para que las áreas reportadas queden en una línea se requiere de programación VBA. Esta es una idea y algo que para mi concepto es más fácil hacerlo en Access que en Excel.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas