Como crear un botón para imprimir en macros en excel vba en un formato especifico

Desde hace varios días estoy tratado de programar un botón para imprimir que llame todos los datos del formulario de excel a un formato en especifico en otra hoja, pero no tengo idea de como hacerlo y quisiera si alguien tendría la amabilidad de ayudarme un poco por favor adjunto programa por si a alguien más le sirve, muchas gracias.
https://drive.google.com/file/d/1x1snYFqYYE23RZVgzEGfr0WvPy8lrdoc/view?usp=sharing 

2 Respuestas

Respuesta
1

Prueba lo siguiente en tu userform.

La macro crea un nuevo libro con la plantilla, la llena y puedes imprimir o guardar en PDF. No guardes datos en la plantilla, solamente para no tener que limpiarlos más adelante.

Completa los datos que faltan.

Private Sub CommandButton1_Click()
  'Por Dante Amor
  Dim wb1 As Workbook
  Dim sh1 As Worksheet
  Sheets("Plantilla").Copy
  Set wb1 = ActiveWorkbook
  Set sh1 = wb1.Sheets(1)
  sh1.Range("M7").Value = cbo_Nombre
  sh1.Range("M9").Value = txt_FechaIngreso
  sh1.Range("B11").Value = txt_Apellidos
  sh1.Range("B13").Value = txt_Nombre
  sh1.Range("A31").Value = txt_Edad
  '... continuar con los demás campos
  '...
  '...
  sh1.Range("M45").Value = txt_NumSeguro
  '
  'Si quieres imprimir
  Sh1. PrintOut
  'Si quieres guardar como PDF
  wb1.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\PERSONAL.pdf", _
    xlQualityStandard, True, False, , , False
  wb1.Close False
End Sub
Respuesta
1

Pasar a la hoja Plantilla solo requiere que pases el contenido de cada control a las celdas de tu hoja.

Por ej:

Private Sub CommandButton1_Click()
 'x Elsamatilde
Dim hop     'hoja de impresión  (*)
Set hop = Sheets("Plantilla")
'el contenido de cada control se vuelca a esa hoja  (**)
hop.[M7] = cbo_Nombre
hop.[B11] = txt_Apellidos    '***
hop.[B31] = txt_FechaNac     
 'así con el resto de los campos
End Sub

Algunas notas a la macro iniciada:

(*) Estas 2 líneas no son necesarias, solo recomendables. Si no las colocas, en cada pase debes indicarla, por ej;

Sheets("Plantilla").[M7] = cbo_nombre   

(**) Otro modo de realizar el pase, ya sea con la variable hop o con el nombre de la hoja:

'el contenido de cada control se vuelca a esa hoja
With hop
    .[M7] = cbo_Nombre
    .[B11] = txt_Apellidos    '***
    .[B31] = txt_FechaNac
 'así con el resto de los campos
End With

(***)  Es recomendable utilizar la función Trim para eliminar posibles espacios finales o iniciales que se dejan al tipear textos, por ej:

hop.[B11] = Trim(txt_Apellidos)

En video 26 de mi canal desarrollé un formulario (que podrás descargar) donde se muestran otras macros que debieras tener en cuenta:

- Control de campos numéricos.

- Textos siempre en mayúsculas (ideal para nombres, códigos, etc)

Sdos y no olvides valorar la respuesta.

Elsa

https://www.youtube.com/channel/UCSftX2GNQiTDDm0C6H9wEVA 

Muchísimas gracias eso era lo que faltaba te lo agradezco de corazón ya puedo terminar el proyecto, es muy interesante la programación.

La pregunta no admite más respuestas

Más respuestas relacionadas