Renombrar Fichero .pdf con dato en su interior.
Publicado por donkayak (3 intervenciones) el 22/03/2009 18:55:08
La macro/botón final debe trabajar en cualquier sistema operativo (en Vista no me va) y realizarse con Adobe Reader.
1.- Necesito abrir un fichero [color=blue]NNNNNNNN.pdf[/color] y localizar una serie de caracteres fácilmente identificables (sería un chorizo de 15 números que empiezan por el año [color=brown]2009NNNNNNNNNNN[/color] ) y localizables (situados a continuación de la palabra pedido_: ) , tal que se extrajera [color=brown]2009NNNNNNNNNNN[/color].
2.- Renombrar el fichero [color=blue]NNNNNNNN.pdf[/color] , poniendole a continuación el chorizo extraido en el apartado 1 ( pedido_: [color=brown]2009NNNNNNNNNNN[/color] )
Debiendo quedar así: [color=blue]NNNNNNNN[/color][color=red]_[/color][color=brown]2009NNNNNNNNNNN[/color].pdf
[url=http://www.ayudaexcel.com/foro/attachments/macros-y-programacion-vba/2963d1235903430-extraer-dato-de-un-archivo-pdf-76298132.pdf]AQUÍ[/url] dejo un link para obtener un fichero ejemplo de donde extraer el dato [color=brown]209NNNNNNNNN[/color]
[code]Sub buscar20091111()
' buscar20091111 Macro
' Macro grabada el 02/03/2009 por .
'
'
' Shell ("C:Program FilesAdobeAcrobat 7.0ReaderAcroRd32.exe C:orrar76298132.pdf")
Application.Run "BOTON_pDF.xls!Macro1" ' llamo la macro que arranca la aplicacion y el fichero .pdf
SendKeys "+^(F)" ' lanzo la secuencia ''buscar'' mediante mayúsculas (+) , control (^), y la letra F
SendKeys "200911111" ' lanzo la búsqueda de la parte del fichero 200911111
Application.Wait Now + TimeValue("0:00:02") ' hago una pausa
SendKeys "{ENTER}" ' lanzo la tecla intro con la cadena {ENTER}
SendKeys "^(c)" ' copio la cadena que por defecto se marca al completo ejemplo 200911111***
' [b][color=red]EN ESTE PUNTO SURGE EL PROBLEMA, PUES NO SIEMPRE COPIA LO MARCADO[/color][/b]
SendKeys "+^(s)" ' inicio el salvado del fichero
Application.Wait Now + TimeValue("0:00:02") ' hago una pausa
SendKeys "{END}" ' me posiciono al final del nombre del fichero
Application.Wait Now + TimeValue("0:00:02") ' hago una pausa
SendKeys "{LEFT}{LEFT}{LEFT}{LEFT}" ' Me pongo justo delante del punto del pdf osea .pdf
SendKeys "(_)"
SendKeys "^(v)" ' Pego la cadena anteriormente buscada
Application.Wait Now + TimeValue("0:00:02") ' hago una pausa
SendKeys "{ENTER}" ' Pincho intro para guardar
Application.Wait Now + TimeValue("0:00:02")
SendKeys "^(q)" ' Cierro la ventana del .pdf
End Sub[/code]
¡Gracias!
1.- Necesito abrir un fichero [color=blue]NNNNNNNN.pdf[/color] y localizar una serie de caracteres fácilmente identificables (sería un chorizo de 15 números que empiezan por el año [color=brown]2009NNNNNNNNNNN[/color] ) y localizables (situados a continuación de la palabra pedido_: ) , tal que se extrajera [color=brown]2009NNNNNNNNNNN[/color].
2.- Renombrar el fichero [color=blue]NNNNNNNN.pdf[/color] , poniendole a continuación el chorizo extraido en el apartado 1 ( pedido_: [color=brown]2009NNNNNNNNNNN[/color] )
Debiendo quedar así: [color=blue]NNNNNNNN[/color][color=red]_[/color][color=brown]2009NNNNNNNNNNN[/color].pdf
[url=http://www.ayudaexcel.com/foro/attachments/macros-y-programacion-vba/2963d1235903430-extraer-dato-de-un-archivo-pdf-76298132.pdf]AQUÍ[/url] dejo un link para obtener un fichero ejemplo de donde extraer el dato [color=brown]209NNNNNNNNN[/color]
[code]Sub buscar20091111()
' buscar20091111 Macro
' Macro grabada el 02/03/2009 por .
'
'
' Shell ("C:Program FilesAdobeAcrobat 7.0ReaderAcroRd32.exe C:orrar76298132.pdf")
Application.Run "BOTON_pDF.xls!Macro1" ' llamo la macro que arranca la aplicacion y el fichero .pdf
SendKeys "+^(F)" ' lanzo la secuencia ''buscar'' mediante mayúsculas (+) , control (^), y la letra F
SendKeys "200911111" ' lanzo la búsqueda de la parte del fichero 200911111
Application.Wait Now + TimeValue("0:00:02") ' hago una pausa
SendKeys "{ENTER}" ' lanzo la tecla intro con la cadena {ENTER}
SendKeys "^(c)" ' copio la cadena que por defecto se marca al completo ejemplo 200911111***
' [b][color=red]EN ESTE PUNTO SURGE EL PROBLEMA, PUES NO SIEMPRE COPIA LO MARCADO[/color][/b]
SendKeys "+^(s)" ' inicio el salvado del fichero
Application.Wait Now + TimeValue("0:00:02") ' hago una pausa
SendKeys "{END}" ' me posiciono al final del nombre del fichero
Application.Wait Now + TimeValue("0:00:02") ' hago una pausa
SendKeys "{LEFT}{LEFT}{LEFT}{LEFT}" ' Me pongo justo delante del punto del pdf osea .pdf
SendKeys "(_)"
SendKeys "^(v)" ' Pego la cadena anteriormente buscada
Application.Wait Now + TimeValue("0:00:02") ' hago una pausa
SendKeys "{ENTER}" ' Pincho intro para guardar
Application.Wait Now + TimeValue("0:00:02")
SendKeys "^(q)" ' Cierro la ventana del .pdf
End Sub[/code]
¡Gracias!
Valora esta pregunta
0