Datos de Formulario exportar a PDF y guardarlos con nombres generados automáticamente.

Tengo datos que los busco de varias las columnas de Excel mediante un UserForm, deseo exportar usando un CommandButton a archivo PDF estos datos del formulario y que se guarde automáticamente con la FECHA y el DNI (01052018-45324567.pdf) en el D:\Archivos y se abra automáticamente el pdf exportado.

Fecha. Será la fecha actual cuando es exportado el archivo

DNI. Esta en el TextBox2 dentro de Page1 del UserForm

2 Respuestas

Respuesta
1

[Hola

Te paso la macro


Valora la respuesta para finalizar saludos!

Private Sub CommandButton1_Click()
'Por Adriel Ortiz
'https://www.todoexpertos.com/preguntas/
    Application.ScreenUpdating = False
    '
    Set h = Sheets("Hoja1") ' cambia el nombre de la hoja
    Ruta = "D:\Archivos\"
        Dni = TextBox2
    h.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=Ruta & Format(Date, "ddmmyyyy") & "-" & Dni & ".pdf", _
    quality:=xlQualityStandard, includedocproperties:=True, _
    ignorePrintAreas:=False, openAfterPublish:=True
    Application.ScreenUpdating = True
    '
    MsgBox "Se ha guardado la hoja en PDF", vbInformation
End Sub
Respuesta
2

[Hola

Solo para estar seguro ¿quieres qué el "USerForm" con los datos se conviertan en pdf? ¿Es eso?

Abraham Valencia

Buenas, gracias por su atención.

Claro eso es, que el UserForm con sus datos se conviertan y guardar en pdf,  y después utilizare para enviar el pdf creado en un correo electrónico.

saludos.

Aja, entonces es el "UserForm". Vamos a tener que recurrir a las funciones de la API de Windows.

Coloca esto en el módulo del "UserForm", debe ir en la parte superior, nada debe estar arriba de estas líneas:

#If VBA7 Then
    Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
#Else
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
#End If
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Const VK_SNAPSHOT = &H2C
Const VK_MENU = &H12

Luego, usa esto en botón:

Private Sub CommandButton2_Click()
Dim Ruta As String
keybd_event VK_MENU, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
DoEvents
ThisWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count)
Range("A1").Select
ActiveSheet.Paste
Let Ruta = "D:\Archivos\" & Format(Date, "ddmmyyyy") & "-" & Textbox2.Value & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Ruta, _
    Quality:=xlQualityStandard, IncludeDocProperties:=False, _
    IgnorePrintAreas:=False, OpenAfterPublish:=True
Application.DisplayAlerts = False
Worksheets(Worksheets.Count).Delete
Application.DisplayAlerts = True
End Sub

Solo cambia el nombre del botón por el tuyo (ahí he usado "CommanButton2")

Comentas

Abraham Valencia

PD: ¿Cuándo dices "page1" es por qué tienes un objeto "MultiPage"? De ser así NO especificaste si quiere que se conviertan en PDF todos los datos de sus páginas. OJO con eso.

Gracias, Abraham Valencia.

Hay detalles que se me olvida debe ser por ser un novato en el tema, sabes gracias a personas como tu, estoy aprendiendo, estaré agradecido a http://www.todoexpertos.com .

El codigo funciona bien solo que me sale el formulario en dos hojas de PDF, mi consulta seria que medidas de ancho y alto son perfectos para un tamaño A4.

Es cierto estoy trabajando con un "MultiPage" que serán unos 5 paginas y los 5 paginas deben exportarse en un mismo archivo pdf.

Me parece un tanto complicado, que otro programa similar usaría en esos casos, para hacer directorio telefónico, directorio personal, impresion de formatos (facturas, vales, consumos), etc. que sean mas trabajables sin tanto programación.

Gracias por su aporte.

[Hola

Pues yendo a lo del "MultiPage", sí, la dificultad de mandar a PDF todas sus páginas se incrementa y hay que programar mucho más. Quizá una mejor alternativa es que todos esos datos vayan a otra hoja y ahí mandarla a PDF.

Sobre un mejor programa, pues del paquete Office, para esos temas es mejor Access, pero en mi experiencia a las personas acostumbradas a Excel se les complica un poco su uso, a pesar de que para algunas cosas como "Consultas" o "Informes" necesita mucho menos programación (VBA) que Excel.

Abraham Valencia

¡Gracias! 

Aprecio tu apoyo, como ud. menciona creo voy a tener que enviar a una hoja de excel y después pasar a PDF.

Por otro lado averiguare eso del access como lo puedo hacer es verdad todos estamos acostumbrados al excel muy poco o casi nada en access.

Espero me puedan apoyar mas adelante cuando formule otra pregunta.

saludos cordailes

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas