Imprimir formulario en Horizontal

30/08/2004 - 11:21 por Emilio \(en el curro\) | Informe spam
Hola a tod@s
Estoy tratando de imprimir un formulario, lo cual consigo sin otro problema
que el de que no cabe en un A4 vertical, intento hacer una configuración de
página previa, cambiando a Horizontal, pero no parece que la aplique a
imprimir formularios.

Lo que he hecho hasta ahora es lo siguiente:
Private Sub cmdImprimir_Click()
If ActiveSheet.PageSetup.Orientation = xlLandscape Then
frmMenu.PrintForm
Else
ActiveSheet.PageSetup.Orientation = xlLandscape
frmMenu.PrintForm
ActiveSheet.PageSetup.Orientation = xlPortrait
End If
End Sub ' cmdImprimir_Click

¿Alguna idea para salir del atolladero?
He hecho busquedas en google al respecto pero en vez de aclararme algo me lo
complica más.
Muchas Gracias anticipadas

Saludos a tod@s

Emilio
 

Leer las respuestas

#1 Fernando Arroyo
30/08/2004 - 12:21 | Informe spam
Te sugiero una solución que está basada en un código de Tom Ogilvy, que a su vez lo está en uno de Orlando Magalhàes:

http://tinyurl.com/6wz66

Sólo como comentario, uno de los motivos por los que me encanta internet es este tipo de colaboración "agregada" :-)
Al grano:

Suponiendo que el botón para imprimir el formulario se llamara CommandButton1, en el módulo del formulario iría el siguiente código:

Private Sub CommandButton1_Click()
DoEvents
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
DoEvents
Workbooks.Add
Application.Wait Now + TimeValue("00:00:01")

With ActiveSheet
.PasteSpecial Format:="mapa de bits", Link:=False, DisplayAsIcon:=False
.Range("A1").Select
.PageSetup.Orientation = xlLandscape
'
'Otros posibles ajustes para la página a imprimir
'
End With

ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWorkbook.Close False
End Sub


Y en un módulo creado por ti iría:

Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Public Const VK_SNAPSHOT = 44
Public Const VK_LMENU = 164
Public Const KEYEVENTF_KEYUP = 2
Public Const KEYEVENTF_EXTENDEDKEY = 1

Un saludo.


Fernando Arroyo
MS MVP - Excel



"Emilio (en el curro)" <miliu56 ARROBA hotmail.com> escribió en el mensaje news:
Hola a
Estoy tratando de imprimir un formulario, lo cual consigo sin otro problema
que el de que no cabe en un A4 vertical, intento hacer una configuración de
página previa, cambiando a Horizontal, pero no parece que la aplique a
imprimir formularios.

Lo que he hecho hasta ahora es lo siguiente:
Private Sub cmdImprimir_Click()
If ActiveSheet.PageSetup.Orientation = xlLandscape Then
frmMenu.PrintForm
Else
ActiveSheet.PageSetup.Orientation = xlLandscape
frmMenu.PrintForm
ActiveSheet.PageSetup.Orientation = xlPortrait
End If
End Sub ' cmdImprimir_Click

¿Alguna idea para salir del atolladero?
He hecho busquedas en google al respecto pero en vez de aclararme algo me lo
complica más.
Muchas Gracias anticipadas

Saludos a

Emilio


Preguntas similares