Discussion:
Crear un boton comando para imprimir excel 2007
(demasiado antiguo para responder)
Silvia
2009-11-14 01:52:02 UTC
Permalink
Tengo un libro de excel con varias hojas, en una entro los datos y las otras
se rellenan con los datos introducidos. Como se crea un boton comando en la
hoja de entrada de datos para que me imprima la otra hoja. Gracias.
Héctor Miguel
2009-11-14 04:37:24 UTC
Permalink
hola, Silvia !
Tengo un libro de excel con varias hojas, en una entro los datos y las otras se rellenan con los datos introducidos.
Como se crea un boton comando en la hoja de entrada de datos para que me imprima la otra hoja.
solo tienes que incrustar en la hoja donde lo necesites un control de boton (de formularios o de controles activex)
y la unica instruccion (en codigo vba) que se requiere seria pareciad a la siguiente:

worksheets("nombre de la hoja que quieres imprimir").printout

o puedes activar la grabadora de macros, realizar la impresion, detener la grabadora, revisar/adaptar/... el codigo generado

saludos,
hector.
Silvia
2009-11-15 18:05:02 UTC
Permalink
Muchas gracias por tu ayuda. Saludos,
Silvia
Post by Héctor Miguel
hola, Silvia !
Tengo un libro de excel con varias hojas, en una entro los datos y las otras se rellenan con los datos introducidos.
Como se crea un boton comando en la hoja de entrada de datos para que me imprima la otra hoja.
solo tienes que incrustar en la hoja donde lo necesites un control de boton (de formularios o de controles activex)
worksheets("nombre de la hoja que quieres imprimir").printout
o puedes activar la grabadora de macros, realizar la impresion, detener la grabadora, revisar/adaptar/... el codigo generado
saludos,
hector.
.
Silvia
2009-11-15 19:21:01 UTC
Permalink
Hola Héctor,

Ahora necesito que un boton de comando me cree un pdf de la hoja, pero que
me pregunte primero con que nombre quiero grabar el archivo, he sido capaz de
generar el pdf, pero siempre me coge el nombre del archivo y no se que
expresión usar en la macro para que me pregunte el nombre.

Muchas gracias
Silvia
Post by Héctor Miguel
hola, Silvia !
Tengo un libro de excel con varias hojas, en una entro los datos y las otras se rellenan con los datos introducidos.
Como se crea un boton comando en la hoja de entrada de datos para que me imprima la otra hoja.
solo tienes que incrustar en la hoja donde lo necesites un control de boton (de formularios o de controles activex)
worksheets("nombre de la hoja que quieres imprimir").printout
o puedes activar la grabadora de macros, realizar la impresion, detener la grabadora, revisar/adaptar/... el codigo generado
saludos,
hector.
.
Héctor Miguel
2009-11-15 19:27:02 UTC
Permalink
hola, Silvia !
Post by Silvia
Ahora necesito que un boton de comando me cree un pdf de la hoja
pero que me pregunte primero con que nombre quiero grabar el archivo
he sido capaz de generar el pdf, pero siempre me coge el nombre del archivo
y no se que expresion usar en la macro para que me pregunte el nombre...
transcribe la macro tal como la estas usando ahora (para conocer de la impresora virtual)
y como prefieres asignar el nombre (y la ruta) para el pdf (de alguna celda ?, por una pregunta ?)

saludos,
hector.
Silvia
2009-11-16 09:43:02 UTC
Permalink
Hola Héctor,

Te adjunto la macro que utilizo para generar un pdf, y lo que quiero es que
me pregunte con que nombre y donde quiero guardar el pdf que creará. En excel
2007 te permite guardar como pdf sin impresora virtual si no me equivoco.

Gracias

Sub Botón22_Haga_clic_en()
'
' Botón22_Haga_clic_en Macro
'

'
Sheets("OFERTA").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Documents and Settings\Administrador\Escritorio\Formato
oferta_1.pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True,
IgnorePrintAreas _
:=False, From:=1, To:=1, OpenAfterPublish:=False
Sheets("INTRODUCIR DATOS").Select
End Sub
Post by Héctor Miguel
hola, Silvia !
Post by Silvia
Ahora necesito que un boton de comando me cree un pdf de la hoja
pero que me pregunte primero con que nombre quiero grabar el archivo
he sido capaz de generar el pdf, pero siempre me coge el nombre del archivo
y no se que expresion usar en la macro para que me pregunte el nombre...
transcribe la macro tal como la estas usando ahora (para conocer de la impresora virtual)
y como prefieres asignar el nombre (y la ruta) para el pdf (de alguna celda ?, por una pregunta ?)
saludos,
hector.
.
Héctor Miguel
2009-11-16 18:13:32 UTC
Permalink
hola, Silvia !
Post by Silvia
Te adjunto la macro que utilizo para generar un pdf, y lo que quiero es
que me pregunte con que nombre y donde quiero guardar el pdf que creara.
En excel 2007 te permite guardar como pdf sin impresora virtual si no me equivoco.
por impersora "virtual" me refiero a que NO existe una impresora "fisica" instalada en el sistema
las aplicaciones utilizan "controladores" para hacer (emulando) una salida "impresa" del documento

para que la macro "solicite" el nombre de salida del documento (generalmente) se usa un InputBox
que puedes asignar a una variable (previamente declarada) que se pasa como parte de la instruccion
y la impresion se hara en la carpeta actual (por omision o la ultima detectada de documentos abiertos)
o puedes incluir alguna ruta especifica como parte de la instruccion (o agregarla a la variable del nombre)

prueba con una macro +/- como la siguiente (adapta/corrige/... como creas mas conveniente)
nota: da respuesta al inputbox SIN incluir la EXTension (pdf) para el nombre del archivo (se hace por codigo)

Sub Genera_pdf()
Dim Ruta As String, Nuevo_nombre As String
Ruta = "c:\documents and settings\administrador\escritorio\"
Nuevo_nombre = Trim(InputBox("Ingresa el nombre para el *.PDF"))
If Nuevo_nombre = "" Then Exit Sub Else Nuevo_nombre = Ruta & Nuevo_nombre & ".pdf"
Worksheets("oferta").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Nuevo_nombre, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False
End Sub

saludos,
hector.

__ el codigo expuesto __
Post by Silvia
Sub Boton22_Haga_clic_en()
Sheets("OFERTA").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Documents and Settings\Administrador\Escritorio\Formato oferta_1.pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, From:=1, To:=1, OpenAfterPublish:=False
Sheets("INTRODUCIR DATOS").Select
End Sub
Silvia
2009-11-17 10:04:05 UTC
Permalink
Hola Héctor,

Muchas gracias, funciona pero no soy capaz de insertar la variable para que
también me pida donde lo quiero guardar.

Gracias por ayudarme,
Silvia
Post by Héctor Miguel
hola, Silvia !
Post by Silvia
Te adjunto la macro que utilizo para generar un pdf, y lo que quiero es
que me pregunte con que nombre y donde quiero guardar el pdf que creara.
En excel 2007 te permite guardar como pdf sin impresora virtual si no me equivoco.
por impersora "virtual" me refiero a que NO existe una impresora "fisica" instalada en el sistema
las aplicaciones utilizan "controladores" para hacer (emulando) una salida "impresa" del documento
para que la macro "solicite" el nombre de salida del documento (generalmente) se usa un InputBox
que puedes asignar a una variable (previamente declarada) que se pasa como parte de la instruccion
y la impresion se hara en la carpeta actual (por omision o la ultima detectada de documentos abiertos)
o puedes incluir alguna ruta especifica como parte de la instruccion (o agregarla a la variable del nombre)
prueba con una macro +/- como la siguiente (adapta/corrige/... como creas mas conveniente)
nota: da respuesta al inputbox SIN incluir la EXTension (pdf) para el nombre del archivo (se hace por codigo)
Sub Genera_pdf()
Dim Ruta As String, Nuevo_nombre As String
Ruta = "c:\documents and settings\administrador\escritorio\"
Nuevo_nombre = Trim(InputBox("Ingresa el nombre para el *.PDF"))
If Nuevo_nombre = "" Then Exit Sub Else Nuevo_nombre = Ruta & Nuevo_nombre & ".pdf"
Worksheets("oferta").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Nuevo_nombre, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False
End Sub
saludos,
hector.
__ el codigo expuesto __
Post by Silvia
Sub Boton22_Haga_clic_en()
Sheets("OFERTA").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Documents and Settings\Administrador\Escritorio\Formato oferta_1.pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, From:=1, To:=1, OpenAfterPublish:=False
Sheets("INTRODUCIR DATOS").Select
End Sub
.
Héctor Miguel
2009-11-18 05:15:19 UTC
Permalink
hola, Silvia !
... funciona pero no soy capaz de insertar la variable para que tambien me pida donde lo quiero guardar...
prueba con esta modificacion...

Sub Genera_pdf()
Dim Ruta As String, Titulo As String, Nuevo_nombre As String
Titulo = "Selecciona por favor la ruta para guardar el *.PDF..."
On Error Resume Next ' por si el usuario pulsa {esc} y no selecciona nada :)) '
With CreateObject("shell.application")
Ruta = .BrowseForFolder(0, Titulo, 0, "c:").Items.Item.Path
End With: On Error GoTo 0
If Ruta = "" Then Exit Sub _
Else Nuevo_nombre = Trim(InputBox("Ingresa el nombre para el *.PDF"))
If Nuevo_nombre = "" Then Exit Sub _
Else Nuevo_nombre = Ruta & Nuevo_nombre & ".pdf"
Worksheets("oferta").ExportAsFixedFormat _
Type:=xlTypePDF, Filename:=Nuevo_nombre, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
End Sub

saludos,
hector.
Silvia
2009-11-18 22:35:01 UTC
Permalink
Hola Héctor,

Muchas gracias. Si la dejo como esta funciona, pero si escojo otra carpeta
para guardar el archivo no funciona.

Por ejemplo quiero guardar un archivo al que llamaré oferta 12 en "mis
documentos", en el cuadro de carpetas le digo que me lo grabe en mis
documentos, y luego le doy el nombre al archivo. Entonces el archivo me
aparece en la carpeta superior (C:\Documents and Settings\Administrador) y el
archivo aparece bajo el nombre "Mis documentosoferta 12".

Necesito ayuda para solucionarlo y poder escoger la ruta correctamente.

Muchas gracias de antemano por tu ayuda. Silvia
Post by Héctor Miguel
hola, Silvia !
... funciona pero no soy capaz de insertar la variable para que tambien me pida donde lo quiero guardar...
prueba con esta modificacion...
Sub Genera_pdf()
Dim Ruta As String, Titulo As String, Nuevo_nombre As String
Titulo = "Selecciona por favor la ruta para guardar el *.PDF..."
On Error Resume Next ' por si el usuario pulsa {esc} y no selecciona nada :)) '
With CreateObject("shell.application")
Ruta = .BrowseForFolder(0, Titulo, 0, "c:").Items.Item.Path
End With: On Error GoTo 0
If Ruta = "" Then Exit Sub _
Else Nuevo_nombre = Trim(InputBox("Ingresa el nombre para el *.PDF"))
If Nuevo_nombre = "" Then Exit Sub _
Else Nuevo_nombre = Ruta & Nuevo_nombre & ".pdf"
Worksheets("oferta").ExportAsFixedFormat _
Type:=xlTypePDF, Filename:=Nuevo_nombre, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
End Sub
saludos,
hector.
.
Héctor Miguel
2009-11-19 17:58:56 UTC
Permalink
hola, Silvia !
Si la dejo como esta funciona, pero si escojo otra carpeta para guardar el archivo no funciona.
Por ejemplo quiero guardar un archivo al que llamare oferta 12 en "mis documentos"
en el cuadro de carpetas le digo que me lo grabe en mis documentos, y luego le doy el nombre al archivo.
Entonces el archivo me aparece en la carpeta superior (C:\Documents and Settings\Administrador)
y el archivo aparece bajo el nombre "Mis documentosoferta 12"...
tienes razon, en la propuesta de codigo me hizo falta "proteger" un separador de rutas ( \ )
cambia esta parte:

If Nuevo_nombre = "" Then Exit Sub _
Else Nuevo_nombre = Ruta & Nuevo_nombre & ".pdf"

por esta otra:

If Nuevo_nombre = "" Then Exit Sub _
Else Nuevo_nombre = Ruta & "\" & Nuevo_nombre & ".pdf"

saludos,
hector.

__ propuesta original __
Post by Héctor Miguel
Sub Genera_pdf()
Dim Ruta As String, Titulo As String, Nuevo_nombre As String
Titulo = "Selecciona por favor la ruta para guardar el *.PDF..."
On Error Resume Next ' por si el usuario pulsa {esc} y no selecciona nada :)) '
With CreateObject("shell.application")
Ruta = .BrowseForFolder(0, Titulo, 0, "c:").Items.Item.Path
End With: On Error GoTo 0
If Ruta = "" Then Exit Sub _
Else Nuevo_nombre = Trim(InputBox("Ingresa el nombre para el *.PDF"))
If Nuevo_nombre = "" Then Exit Sub _
Else Nuevo_nombre = Ruta & Nuevo_nombre & ".pdf"
Worksheets("oferta").ExportAsFixedFormat _
Type:=xlTypePDF, Filename:=Nuevo_nombre, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
End Sub
Silvia
2009-11-22 17:21:01 UTC
Permalink
Hola Héctor, muchas gracias por tu ayuda. Funciona perfectamente.

Saludos,
Silvia
Post by Héctor Miguel
hola, Silvia !
Si la dejo como esta funciona, pero si escojo otra carpeta para guardar el archivo no funciona.
Por ejemplo quiero guardar un archivo al que llamare oferta 12 en "mis documentos"
en el cuadro de carpetas le digo que me lo grabe en mis documentos, y luego le doy el nombre al archivo.
Entonces el archivo me aparece en la carpeta superior (C:\Documents and Settings\Administrador)
y el archivo aparece bajo el nombre "Mis documentosoferta 12"...
tienes razon, en la propuesta de codigo me hizo falta "proteger" un separador de rutas ( \ )
If Nuevo_nombre = "" Then Exit Sub _
Else Nuevo_nombre = Ruta & Nuevo_nombre & ".pdf"
If Nuevo_nombre = "" Then Exit Sub _
Else Nuevo_nombre = Ruta & "\" & Nuevo_nombre & ".pdf"
saludos,
hector.
__ propuesta original __
Post by Héctor Miguel
Sub Genera_pdf()
Dim Ruta As String, Titulo As String, Nuevo_nombre As String
Titulo = "Selecciona por favor la ruta para guardar el *.PDF..."
On Error Resume Next ' por si el usuario pulsa {esc} y no selecciona nada :)) '
With CreateObject("shell.application")
Ruta = .BrowseForFolder(0, Titulo, 0, "c:").Items.Item.Path
End With: On Error GoTo 0
If Ruta = "" Then Exit Sub _
Else Nuevo_nombre = Trim(InputBox("Ingresa el nombre para el *.PDF"))
If Nuevo_nombre = "" Then Exit Sub _
Else Nuevo_nombre = Ruta & Nuevo_nombre & ".pdf"
Worksheets("oferta").ExportAsFixedFormat _
Type:=xlTypePDF, Filename:=Nuevo_nombre, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
End Sub
.
Héctor Miguel
2009-11-23 00:48:28 UTC
Permalink
hola, Silvia !
... gracias por tu ayuda. Funciona ...
gracias a ti, por el "feed-back" ;)
saludos,
hector.
b***@gmail.com
2013-12-30 16:47:26 UTC
Permalink
Post by Héctor Miguel
hola, Silvia !
... gracias por tu ayuda. Funciona ...
gracias a ti, por el "feed-back" ;)
saludos,
hector.
Hola Héctor,

He leído vuestros post (ya un poco antiguos la verdad :) ) y la verdad que están muy bien y de gran ayuda.
Pero no estoy consiguiendo una cosa y al mejor me puedes ayudar. Todo el proceso me sirve pero quería que el nombre del fichero fuera automático, es decir solo elegir carpeta y el nombre del fichero: "nombre de hoja activa+espacio+celdra c8+espacio+celdra c3"

he puesto así pero me devuelve siempre error 1004 por las ultimas lines pero antes funcionaba bien:

Private Sub CommandButton1_Click()

Dim Ruta As String, Titulo As String, Nuevo_nombre As String
Titulo = "Selecciona por favor la ruta para guardar el *.PDF..."
On Error Resume Next ' por si el usuario pulsa {esc} y no selecciona nada :)) '
With CreateObject("shell.application")
Ruta = .BrowseForFolder(0, Titulo, 0, "c:").Items.Item.Path
End With: On Error GoTo 0
If Ruta = "" Then Exit Sub _
Else Nuevo_nombre = Range("C3").Value & " " & Range("C8").Value
If Nuevo_nombre = "" Then Exit Sub _
Else: Nuevo_nombre = Ruta & "\" & Nuevo_nombre & ".pdf"
Worksheets("VO").ExportAsFixedFormat _
Type:=xlTypePDF, Filename:=Nuevo_nombre, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False


End Sub

gracias,
d***@gmail.com
2017-09-29 23:14:53 UTC
Permalink
Post by Héctor Miguel
hola, Silvia !
Tengo un libro de excel con varias hojas, en una entro los datos y las otras se rellenan con los datos introducidos.
Como se crea un boton comando en la hoja de entrada de datos para que me imprima la otra hoja.
solo tienes que incrustar en la hoja donde lo necesites un control de boton (de formularios o de controles activex)
worksheets("nombre de la hoja que quieres imprimir").printout
o puedes activar la grabadora de macros, realizar la impresion, detener la grabadora, revisar/adaptar/... el codigo generado
saludos,
hector.
Hola!
me funciona este codigo para imprimir! pero necesito ayuda para agregar una vista previa azntes de que imprima
ayudaa por favor

t***@gmail.com
2014-02-18 17:27:24 UTC
Permalink
Hola soy nuevo en esto y estoy trabajando con alguna macro, he creado una macro para imprimir varias hojas de un libro, pero me interesa que en vez de imprimir directamente me genere un pdf. o xps. y me lo guarde en mis documentos. Esta es la macro que tengo para imprimir que funciona correctamente :
Sub imprimir()
Sheets("PORTADA").PrintOut
Sheets("Bases - Pensión Máxima").PrintOut
Sheets("Portada-1").PrintOut
Sheets("Informe-1").PrintOut
Sheets("Portada-2").PrintOut
Sheets("Informe-2").PrintOut
Sheets("Portada-3").PrintOut
Sheets("Informe-3").PrintOut
Sheets("Portada-4").PrintOut
Sheets("Informe-4").PrintOut
Sheets("Portada-5").PrintOut
Sheets("Informe-5").PrintOut
Sheets("Cuadro Comparativo").PrintOut
Sheets("I.FISCAL").PrintOut
Sheets("Comp.Simul.").PrintOut
End Sub
j***@gmail.com
2014-05-27 19:09:50 UTC
Permalink
Hola Héctor hola Silvia, como se puede hacer para que el botón que crea el pdf. no me pida donde guardarlo ni el nombre, es decir ya predeterminar el nombre, por medio de una celda,
j***@gmail.com
2014-05-27 19:10:23 UTC
Permalink
Post by Silvia
Tengo un libro de excel con varias hojas, en una entro los datos y las otras
se rellenan con los datos introducidos. Como se crea un boton comando en la
hoja de entrada de datos para que me imprima la otra hoja. Gracias.
Loading...