Corrección en macro o configuración de página

Tengo la siguiente macro que exporta la hoja de excel a pdf

h1 = Sheets("Transacciones Captaciones")
ru = "C:\Users\User\Dropbox\"
uf = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ru & h1.Cells(uf, "B").value, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

todo bien hasta aqui, pero esta macro exporta la hoja de un tamaño normal de A4 (Ancho: 21cm y Largo 29.7cm) quiero que exporte solo una hoja en tamaño de Ancho 6.27 cm y de largo de 9.01 cm

¿Cómo puedo hacer este ajuste? ¿Es la macro o alguna configuracion en excel en si?

1 Respuesta

Respuesta
1

[Hola

Antes de exportar a pdf asegura que tienes configurada y elegida (o predeterminada) una impresora que permita el tamaño de página que mencionas, una vez hecho eso configura al tamaño deseado (Diseño de página - Configurar página (grupo) - Tamaño) y una vez hecho eso recién usa tu macro para convertir en pdf.

Si deseas hacerlo todo con macros, activa la grabadora de macros y realiza los pasos de configuración de páginas y tendrás el código. Ah, ojo, de todos modos tienes que tener configurada la impresora que permita ese tamaño de papel.

Saludos]

Abraham Valencia

Saludos,

He intentado de muchas maneras pero no he podido porque quiero que el macro seleccione una impresora y una hoja (para que tome el tamaño de pagina) que tengo y exporte a PDF con el macro de la pregunta inicial (sin imprimir) y luego que seleccione la impresora que tenía antes de ejecutar la macro. Para ver si me puede ayudar ahí.

gracias de antemano 

Intenta así:

Dim WshNetwork As Object
Dim ImpresoraActiva  As String
Set WshNetwork = CreateObject("WScript.Network")
Let ImpresoraActiva = Left(ActivePrinter, Len(ActivePrinter) - 9) 'detectamos la predeterminada
WshNetwork.SetDefaultPrinter "Aquí_el_nombre_EXACTO_de_la_impresora_nueva" 'esta línea es para elegir la impresora "nueva"
'Aquí configuras la hoja tal cual la deseas
'Aquí exportas
WshNetwork. SetDefaultPrinter ImpresoraActiva 'esta línea retoma la impresa predeterminada

Abraham Valencia

No funciona bien,

Cambia de impresora predetermina en windows a la que tiene el papel que quiero exportar pero no cambia de nuevo a la impresora que uso regularmente. (Debería ser solo en excel no en la pc)

También no funciona para exportar correctamente porque no toma el papel de la impresora PDF que es el correcto para exportarlo y exporta en formato A4 (grande)

Puse en el impresora PDF como predeterminado el papel A7(que es el que quiero) y si así funciona el macro

Tal y como te mencioné, la cuestión es esa: Configurar/cambiar el tamaño de la página (o "papel") a través de una impresora que por supuesto puede ser la impresora PDF, ya que por si acaso, la conversión a dicho formato PDF se hace a través de una "impresora virtual" (por decirle de un modo).

De todos modos, si lo de Windows no te convenció y/o se pudo hacer (para modificarlo/adaptarlo hay que leer/saber del tema) pues te dejo otra opción que, ahora que leo tu nueva intervención, pues quizá te sea más útil:

ImpresoraActiva = Application.ActivePrinter
ActiveWindow.SelectedSheets.PrintOut ActivePrinter:="Nombre Impresora PDF", Collate:=True
Application.ActivePrinter = ImpresoraActiva

Claro, solo sí realmente quieres seguir probando.

Abraham Valencia

Señor, entiendo la idea, pero quiero que sea con mi macro de exportar directamente porque la guarda automáticamente con nombre y todo, aquí tengo que intervenir para poner el nombre y donde guardar.
¿Más bien como configuro la hoja que sea A7 en la macro?

Pues volvemos a lo que ya te dije, pero lo copiaré/pegaré nuevamente:

"Si deseas hacerlo todo con macros, activa la grabadora de macros y realiza los pasos de configuración de páginas y tendrás el código. Ah, ojo, de todos modos tienes que tener configurada la impresora que permita ese tamaño de papel."

Es decir, sin pensar en tu macro, activa (si deseas solo en el Excel) alguna impresora que tenga el tamaño de papel A7. Una vez hecho eso, activa la grabadora de macros (asumo que sabes cómo se activa) vas a "Diseño de página - (grupo) Configurar página) - (botón) Tamaño, eliges "A7" y desactivas la grabadora de macros y entras al editor de VBA para que veas el código que configura la página la tamaño deseado.

Abraham Valencia

Logre que me funcionara como quería con el siguiente código de vba

ru = "C:\Users\User\Dropbox\"
Dim WshNetwork As Object
Dim ImpresoraActiva  As String
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.SetDefaultPrinter "PDFCreator" 'esta línea es para elegir la impresora "nueva"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ru & h1.Cells(uf, "B").value, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
WshNetwork.SetDefaultPrinter "Hewlett-Packard HP LaserJet Pro MFP M127fn"

Muchas gracias por su ayuda y sus consejos

Excelente, excelente

Muchos saludos]

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas