En la entrada anterior del blog expliqué como completar un formulario pdf desde Excel, empleando Acrobat...
Hoy emplearemos el método SendKeys (ver aquí) para poder hacerlo usando Adobe Reader.
Este método replica las acciones del teclado sobre las diferentes aplicaciones activas en nuestro equipo... por lo que es más lento e impreciso que el expuesto en el post anterior.
A cambio es más abierto y vale para cualquier aplicación.
Tenemos nuestros datos en el rango C2:C6 dispuestos para trasladarlos al formulario PDF.
Insertamos un módulo estándar, y en esta ventana de código añadiremos nuestra macro:
Si ejecutamos la macro veremos paso a paso como se van rellenando los campos, abriendo las ventanas diálogo y ejecutando las diferentes acciones...
Hoy emplearemos el método SendKeys (ver aquí) para poder hacerlo usando Adobe Reader.
Este método replica las acciones del teclado sobre las diferentes aplicaciones activas en nuestro equipo... por lo que es más lento e impreciso que el expuesto en el post anterior.
A cambio es más abierto y vale para cualquier aplicación.
Tenemos nuestros datos en el rango C2:C6 dispuestos para trasladarlos al formulario PDF.
Insertamos un módulo estándar, y en esta ventana de código añadiremos nuestra macro:
Sub CompletarFormularioPDF() 'Rellenar un formulario PDF con Reader!! 'Declaramos las variables Dim stRutaPDF As String, nombreForm As String, stRutaCompletaPDF As String Dim stRutaGuardadoPDF As String Dim objAcrobatApp As Object, objAcrobatAVDoc As Object, objAcrobatPDDoc As Object Dim objJSO As Object Application.ScreenUpdating = False 'la ruta del formulario a completar stRutaPDF = "E:\excelforo\" nombreForm = "FormWord_PDF.pdf" stRutaCompletaPDF = stRutaPDF & nombreForm 'asignamos valor, desde las celdas, a las variables 'que servirán para completar el formularaio PDF Dim nombre As String, NumExp As String, ciudad As String, registro As Date, email As String NumExp = CStr(Hoja1.Range("C2").Value) nombre = CStr(Hoja1.Range("C3").Value) ciudad = CStr(Hoja1.Range("C4").Value) registro = Format(CStr(Hoja1.Range("C5").Value), "dd/mm/yyyy") email = CStr(Hoja1.Range("C6").Value) 'Generamos la ruta de los pdf guardados stRutaGuardadoPDF = stRutaPDF & nombre & ".pdf" 'comprobamos si existe el fichero destino... y si existe lo eliminamos!! If Dir(stRutaGuardadoPDF) <> Empty Then Kill (stRutaGuardadoPDF) 'abrimos el formulario PDF ThisWorkbook.FollowHyperlink stRutaCompletaPDF 'y comenzamos a movermos empleando las teclas y métodos abreviados Application.SendKeys "{Tab}", True 'nos desplazamos por el formulario TABulando Application.SendKeys nombre, True 'rellenamos el nombre en el primer campo de Nombre Application.Wait Now + TimeSerial(0, 0, 1) 'damos tiempo para rellenar el campo Application.SendKeys "{Tab}", True 'nos desplazamos por el formulario TABulando Application.SendKeys email, True 'rellenamos el nombre en el campo de Email Application.Wait Now + TimeSerial(0, 0, 1) 'damos tiempo para rellenar el campo Application.SendKeys "{Tab}", True 'nos desplazamos por el formulario TABulando Application.SendKeys registro, True 'rellenamos el nombre en el campo de Fecha registro Application.Wait Now + TimeSerial(0, 0, 1) 'damos tiempo para rellenar el campo Application.SendKeys "{Tab}", True 'nos desplazamos por el formulario TABulando Application.SendKeys NumExp, True 'rellenamos el nombre en el campo de Núm expediente Application.Wait Now + TimeSerial(0, 0, 1) 'damos tiempo para rellenar el campo Application.SendKeys "{Tab}", True 'nos desplazamos por el formulario TABulando Application.SendKeys ciudad, True 'rellenamos el nombre en el campo de Ciudad origen Application.Wait Now + TimeSerial(0, 0, 1) 'damos tiempo para rellenar el campo 'una vez completado el formulario lo guardaremos.... 'pero como se ha abierto desde Reader usaremos la opción de 'guardar como' 'desde la opción de imprimir (Ctrl+P) Application.SendKeys "^(p)", True 'presionamos Ctrl+P Application.Wait Now + TimeSerial(0, 0, 3) 'damos tiempo para abrir la ventana diálogo 'en las opciones de elección de impresora Application.SendKeys "{UP}", True 'presionamos flecha arriba Application.SendKeys "{UP}", True 'presionamos flecha arriba.. hasta llegar a impresión 'AdobePDF' Application.SendKeys "{Enter}", True Application.Wait Now + TimeSerial(0, 0, 2) 'damos tiempo para abrir la ventana diálogo Application.SendKeys "%(m)", True 'presionamos Alt+M para escribir el nombre del ficheor Application.Wait Now + TimeSerial(0, 0, 2) 'damos tiempo para abrir la ventana diálogo Application.SendKeys stRutaGuardadoPDF 'añadimos la ruta y nombre del fichero nuevo... Application.Wait Now + TimeSerial(0, 0, 2) Application.SendKeys "%(g)", True 'presionamos Alt+G para guardar Application.Wait Now + TimeSerial(0, 0, 2) 'y acabamos cerrado el pdf y la aplicación Application.SendKeys "^(q)", True 'presionamos Ctrl+Q para salir ' Application.SendKeys "%(n)", True 'presionamos Alt+N para NO guardar cambios 'y restauramos el bloqueo numérico (por razones poco claras se desactiva...) Application.SendKeys "{NUMLOCK}", True 'mensaje final MsgBox "Proceso finalizado" End Sub
Si ejecutamos la macro veremos paso a paso como se van rellenando los campos, abriendo las ventanas diálogo y ejecutando las diferentes acciones...
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.