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

Respuesta
1

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

Pásame la macro te tienes y te da error, la voy a probar en mi pc.

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

Antes de puntuar pregunta todo lo necesario, me interesa que quedes satisfecho con la respuesta.

Vista www.programarexcel.blogspot.com

Perdón no te lo puedo enviar por mail porque no tengo tu mail, vos no subiste el archivo desde mi página,. Pero copia y pega el código reemplazando totalmente el anterior.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas