Hola uso excel 2003 y tengo instalad el PDFCreator lo que necesito es crear una macro que guarde pdf
Buenas noches gente del foro, les comento estoy utilizando en mi negocio office 2003 y 2007 en otras maquinas, lo que estoy necesitando es hacer una macro relacionada a un botón y a su vez vinculada con pdf creator ( ya que en office 2003 no hay otra forma)
que al presionar este macro me guarde el área de impresión de la hoja como pdf con una ruta que seleccionara cada empleado para guardar en sus carpetas.
Les agradecería que me pudieran ayudar y les comento que no soy muy bueno con esto de la macro por favor tengan me paciencia si pregunto cosas obvias,
Saludos y gracias
1 Respuesta
Como estás, esta macro crea un área de impresión e imprime en pdf, adáptala a tus hojas.
Sub ImprimeGraficos()
Application.ScreenUpdating = False
Sheets("Graf_por_dpto").Range("v2").Select
Dim filagrafico As String
filagrafico = 2
While Sheets("Graf_por_dpto").Cells(filagrafico, 22) <> Empty
Sheets("Graf_por_dpto").Range("e16") = Sheets("Graf_por_dpto").Cells(filagrafico, 22)
'Establece área de impresión e imprime en pdf
Cells.Select
ActiveSheet.PageSetup.PrintArea = Selection.Address Range("D12:I12").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Application.ActivePrinter = "PDFCreator en Ne00:"
'ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ '"PDFCreator en Ne00:", Collate:=True filagrafico = filagrafico + 1 Wend
Application.ScreenUpdating = True
End Sub
Visita www.programarexcel.blogspot.com encontrarás ejemplos de macros que puedes descargar y adaptar a lo que estás haciendo en excel.
En http://programarexcel.blogspot.com/search?q=guardar+pdf hay un ejemplo de como guardar automáticamente informes en pdf (para excel 2010) y crear carpetas en caso de que no existan
me tira un error de compilación en este sector . no se por q sera, yo cambie (d12:i12) por H1:K60
ActiveSheet.PageSetup.PrintArea = Selection.Address Range("h1:k60").Select
espero que puedas ayudarme saludos
Disculpas por favor, la forma correcta es la siguiente, prueba y me comentas
ActiveSheet.PageSetup.PrintArea = Selection.Address
Range("h1:k60").Select
Antes de puntuar pregunta todo lo necesario para que quedes satisfecho con la respuesta.
Visita www.programarexcel.blogspot.com encontrarás ejemplos de macros.
Sub ImprimeGraficos()
Application.ScreenUpdating = False
Sheets("Graf_por_dpto").Range("v2").Select
Dim filagrafico As String
filagrafico = 2
While Sheets("Graf_por_dpto").Cells(filagrafico, 22) <> Empty
Sheets("Graf_por_dpto").Range("e16") = Sheets("Graf_por_dpto").Cells(filagrafico, 22)
'Establece área de impresión e imprime en pdf
Cells.Select
ActiveSheet.PageSetup.PrintArea = Selection.Address
Range("A1:F65").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Application.ActivePrinter = "PDFCreator en Ne00:"
'ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ '"PDFCreator en Ne00:", Collate:=True filagrafico = filagrafico + 1 Wend
Application.ScreenUpdating = True
End Sub
Me sigue dando error de compilación y creo que es en esta linea (ver subrayado)
No se que puede ser, si podrías ayudarme te lo agradeceria
la linea que me refería es a esta
ActiveSheet.PageSetup.PrintArea = Selection.Address
Range("A1:F65").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Fíjate adapta esta macro ya está revisada los problemas de compilación estaban dados porque se copiaron mal las líneas quedando en una misma línea de instrucciones, comandos que deberían ir en la siguiente.
Sub ImprimeGraficos()
Application.ScreenUpdating = False
Sheets("Graf_por_dpto").Range("v2").Select
Dim filagrafico As String
filagrafico = 2
While Sheets("Graf_por_dpto").Cells(filagrafico, 22) <> Empty
Sheets("Graf_por_dpto").Range("e16") = Sheets("Graf_por_dpto").Cells(filagrafico, 22)
'Establece área de impresión e imprime en pdf
Cells.Select
ActiveSheet.PageSetup.PrintArea = Selection.Address
Range("D12:I12").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Application.ActivePrinter = "PDFCreator en Ne00:"
filagrafico = filagrafico + 1
Wend
Application.ScreenUpdating = True
End Sub
experto buenas tardes perdón por la demora estuve con varios problemas..
te comento como sigue el tema de esto
copie tal cual lo que vos me dejaste y cambie donde dice RANGE por las celdas que yo tengo el área de impresión, pero me da un error de compilación "Sub idice fuera de intervalo en la tercera linea
Sheets("Graf_por_dpto").Range("v2").Select
capaz que le estoy errando en la adaptación de la compilación de la macro
De ser asi por favor infórmame q rangos son los que tengo q cambiar de la macro.
Saludos y gracias
Como estás, quítale el .select y fijate, la macro que te pase no tiene errores de compilación yo la revise antes de pasártela.
En <a href="http://programarexcel.blogspot.com">http://programarexcel.blogspot.com</a> podrás descargar ejemplos gratis de macros para excel programadas en VBA, las maros se pueden descargar y adaptar al proyecto que estés realizando para automatizar excel.
Experto mil disculpas por mis errores pero no puedo adaptar la variable que me enviaste, me sale el cartel de error desp que la ejecuto.
te comento un poco para ver si me podes ayudar a corregir vos la variable mi hoja se llama 21% iva incluido y el área que necesito que me guarde como pdf creator es desde A1 hasta E65
si me podes ayudar te lo agradecería.
Saludos
experto voy a ver si te puedo pasar el link en dropbox para que veas el archivo en donde estoy trabajando, y asi poder corregir mi error.
Gracias.
Experto te envío el link con mi archivo
https://www.dropbox.com/s/q3065jy8bt4wt82/Sistema%20en%20reforma.xlsm
En el podrás ver a lo que me refería.
Espero tu respuesta y gracias por tu ayuda.
Este código hace lo que quieres específicamente sin tener que adaptar, tienes un error en el nombre de la hoja 21% Iva Incluido, porque tiene un espacio detrás del incluido, o bien quitas ese espacio o lo agregas cuando haces referencia a esa hoja por eso te da error cuando corres la macro. Yo lo quiete en el archivo que te envío por mail donde probé la macro y funciona perfectamente, además te agregue que un mensaje por si no tienes datos para imprimir. .
Sub ImprimeGraficos()
Application.ScreenUpdating = False
Sheets("21% iva incluido").Range("B16").Select
If Sheets("21% iva incluido").Cells(16, 1) <> Empty Then
Range("a1:e65").Select
ActiveSheet.PageSetup.PrintArea = Selection.Address
Application.ActivePrinter = "PDFCreator en Ne00:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Else
MsgBox ("No existen datos para imprimir"), vbCritical, "AVISO"
exit sub
End If
Application.ScreenUpdating = True
End Sub
- Compartir respuesta