Impresión con código

18/01/2005 - 20:56 por J.LL.R | Informe spam
Hola a todos los amigos del foro.
Como puedo hacer hacer por código que me imprima de la
hoja1.
1- Que en cada hoja a imprimir me ponga como título el
nombre de la fila uno.
2-Que cuando cuente 50 lineas,pasa a la pagina 2 y asi
sucesivamente.
3-Que permite seleccionar las columna que deseo imprimir.
Atte.Juan G. de LLanos

Preguntas similare

Leer las respuestas

#6 KL
21/01/2005 - 09:03 | Informe spam
Perdon, se me olvido - quita las siguientes lineas del codigo:

Application.ScreenUpdating = False

y

Application.ScreenUpdating = True

Saludos,
KL

"KL" wrote in message
news:%23s%23iM74$
Juan,

Prueba esto. No lo he podido probar ya q estoy de viaje y no dispongo de
impresora. Espero te sirva.

Saludos,
KL

'-Inicio Codigo
Sub Imprimir()
Dim rng As Range, pag As Range
Dim nPag As Integer, uFilaTemp As Long
Dim pFila As Long, uFila As Long

Application.ScreenUpdating = False
With ActiveSheet
With .PageSetup
.PrintTitleRows = "$1:$1"
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

On Error Resume Next
Set rng = Application.InputBox _
("Selecciona las columnas a imprimir" _
, , , , , , , 8)
On Error GoTo 0

uFila = 1
If Not rng Is Nothing Then
.Columns.Hidden = True
rng.Columns.Hidden = False
For Each c In rng.Columns
uFilaTemp = _
.Cells(.Rows.Count, c.Column).End(xlUp).Row
If uFilaTemp > uFila Then uFila = uFilaTemp
Next
Else
MsgBox "Se ha cancelado la impresion."
Exit Sub
End If

nPag = WorksheetFunction.RoundUp((uFila - 1) / 50, 0)

pFila = 2
For i = 1 To nPag
uFila = pFila + 49
Set pag = .Range(Cells(pFila, 1), Cells(uFila, 256))
pag.PrintOut
pFila = pFila + 50
Next i

.Columns.Hidden = False
End With
Application.ScreenUpdating = True
End Sub
'-fin Codigo


"J.LL.R" wrote in message
news:105201c4ff12$a85455d0$
Hola KL parece que no me explique bien.
Lo que yo quiero es EJ:
A B C D E
Nombre Apellidos Direccion Edad Salario

El encabezado que quiero que me salga en cada página
nueva es: Nombre,Apellido etc.Si quiero imprimir por
ejemplo Columna A,B y D al seleccionarlas estos sean los
nombres del encabezado. El ejemplo si imprime bien los
grupos de 50 registro.
Saludos Juan G. de LLanos





Juan,

1) Paginas: tal como has planteado el macro imprime cada


50 filas (incluida
la del titulo) si no es asi, p.ej. Titulo+50 lineas,


dimelo.

2) Titulos: el macro asume q el titulo esta en la columna


A en la primera
celda de cada bloque de 50 filas, o sea A1, A51, A101,


etc. Si no es asi
tendras q modificar la siguiente parte del codigo:

'cambia 1 por el numero de la columna
'q contiene los titulos de paginas.
..PageSetup.LeftHeader = Cells(pFila, 1)

3) Columnas no adyacentes: el macro usa la funcionalidad


de imprimir
seleccion de Excel. Esta imprime cada region de la


seleccion en una pagina
aparte. Cuando hayas arreglado los puntos 1 y 2 de arriba


deberia funcionar
tal como yo lo habia previsto. Si no es como lo quieres


tal vez podriamos
explorar la posibilidad de esconder todas las columnas


menos las
seleccionadas e imprimir.

Dime algo,
KL


"J.LL.R" wrote in


message
news:044401c4fef1$d0c98e20$
Buenas KL, probe lo que me enviaste y me da problema,me
pone los nombre de los titulos solo en en la primera
pagina, aunque el de la A sale como montado con otro o el
mismo repetido,en las otras paginas no pone el titulo.
Si escojo las columnas a imprimir salteadas no imprime ni
el nombre de los titulos ni los registros.
Un saludos Juan G. de LLanos




Hola Juan,

El macro de abajo deberia hacer lo q planteas pero


tendras q establecer el
ancho de pagina sea a mano o por codigo ya q no has


especificado ningun
parametro al respecto.

Saludos,
KL

'-Inicio Codigo
Sub Imprimir()
Dim x As Range
Dim rng As Range
Dim pag As Range
Dim nPag As Integer
Dim pFila As Long, uFila As Long

With ActiveSheet
Set rng = .UsedRange
On Error Resume Next
Set x = Application.InputBox _
("Selecciona las columnas ENTERAS a imprimir"


_
, , , , , , , 8)
On Error GoTo 0
If Not x Is Nothing Then
Set rng = Intersect(rng, x)
Else
MsgBox "Se ha cancelado la impresion."
Exit Sub
End If

nPag = WorksheetFunction.RoundUp(rng.Rows.Count /


50, 0)

pFila = rng.Row
For i = 1 To nPag
uFila = pFila + 49
Set pag = Intersect(rng, _
Range(Cells(pFila, 1), Cells(uFila,




256)))
.PageSetup.LeftHeader = Cells(pFila, 1)
pag.PrintOut
pFila = pFila + 50
Next i
.PageSetup.LeftHeader = ""
End With
End Sub
'-fin Codigo


"J.LL.R" wrote in


message
news:1f4001c4fd97$cc5a5e60$
Hola a todos los amigos del foro.
Como puedo hacer hacer por código que me imprima de la
hoja1.
1- Que en cada hoja a imprimir me ponga como título el
nombre de la fila uno.
2-Que cuando cuente 50 lineas,pasa a la pagina 2 y asi
sucesivamente.
3-Que permite seleccionar las columna que deseo




imprimir.
Atte.Juan G. de LLanos


.





.





Respuesta Responder a este mensaje
#7 J.LL.R
21/01/2005 - 16:38 | Informe spam
Fantastico KL, funciona perfecto eso mismo es lo que yo
deseaba hacer,la verdad que te lo sabes todas. Voy a probar
en otra hoja mas complicada y te digo.Muchisimas gracias
por tu gran ayuda.
Un saludos


Perdon, se me olvido - quita las siguientes lineas del


codigo:

Application.ScreenUpdating = False

y

Application.ScreenUpdating = True

Saludos,
KL

"KL" wrote in


message
news:%23s%23iM74$
Juan,

Prueba esto. No lo he podido probar ya q estoy de viaje




y no dispongo de
impresora. Espero te sirva.

Saludos,
KL

'-Inicio Codigo
Sub Imprimir()
Dim rng As Range, pag As Range
Dim nPag As Integer, uFilaTemp As Long
Dim pFila As Long, uFila As Long

Application.ScreenUpdating = False
With ActiveSheet
With .PageSetup
.PrintTitleRows = "$1:$1"
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

On Error Resume Next
Set rng = Application.InputBox _
("Selecciona las columnas a imprimir" _
, , , , , , , 8)
On Error GoTo 0

uFila = 1
If Not rng Is Nothing Then
.Columns.Hidden = True
rng.Columns.Hidden = False
For Each c In rng.Columns
uFilaTemp = _
.Cells(.Rows.Count, c.Column).End




(xlUp).Row
If uFilaTemp > uFila Then uFila =




uFilaTemp
Next
Else
MsgBox "Se ha cancelado la impresion."
Exit Sub
End If

nPag = WorksheetFunction.RoundUp((uFila - 1) /




50, 0)

pFila = 2
For i = 1 To nPag
uFila = pFila + 49
Set pag = .Range(Cells(pFila, 1), Cells




(uFila, 256))
pag.PrintOut
pFila = pFila + 50
Next i

.Columns.Hidden = False
End With
Application.ScreenUpdating = True
End Sub
'-fin Codigo


"J.LL.R" wrote in




message
news:105201c4ff12$a85455d0$
Hola KL parece que no me explique bien.
Lo que yo quiero es EJ:
A B C D E
Nombre Apellidos Direccion Edad Salario

El encabezado que quiero que me salga en cada página
nueva es: Nombre,Apellido etc.Si quiero imprimir por
ejemplo Columna A,B y D al seleccionarlas estos sean




los
nombres del encabezado. El ejemplo si imprime bien los
grupos de 50 registro.
Saludos Juan G. de LLanos





Juan,

1) Paginas: tal como has planteado el macro imprime cada


50 filas (incluida
la del titulo) si no es asi, p.ej. Titulo+50 lineas,


dimelo.

2) Titulos: el macro asume q el titulo esta en la






columna
A en la primera
celda de cada bloque de 50 filas, o sea A1, A51, A101,


etc. Si no es asi
tendras q modificar la siguiente parte del codigo:

'cambia 1 por el numero de la columna
'q contiene los titulos de paginas.
..PageSetup.LeftHeader = Cells(pFila, 1)

3) Columnas no adyacentes: el macro usa la funcionalidad


de imprimir
seleccion de Excel. Esta imprime cada region de la


seleccion en una pagina
aparte. Cuando hayas arreglado los puntos 1 y 2 de






arriba
deberia funcionar
tal como yo lo habia previsto. Si no es como lo quieres


tal vez podriamos
explorar la posibilidad de esconder todas las columnas


menos las
seleccionadas e imprimir.

Dime algo,
KL


"J.LL.R" wrote in


message
news:044401c4fef1$d0c98e20$
Buenas KL, probe lo que me enviaste y me da problema,me
pone los nombre de los titulos solo en en la primera
pagina, aunque el de la A sale como montado con otro o






el
mismo repetido,en las otras paginas no pone el titulo.
Si escojo las columnas a imprimir salteadas no imprime






ni
el nombre de los titulos ni los registros.
Un saludos Juan G. de LLanos




Hola Juan,

El macro de abajo deberia hacer lo q planteas pero


tendras q establecer el
ancho de pagina sea a mano o por codigo ya q no has


especificado ningun
parametro al respecto.

Saludos,
KL

'-Inicio Codigo
Sub Imprimir()
Dim x As Range
Dim rng As Range
Dim pag As Range
Dim nPag As Integer
Dim pFila As Long, uFila As Long

With ActiveSheet
Set rng = .UsedRange
On Error Resume Next
Set x = Application.InputBox _
("Selecciona las columnas ENTERAS a








imprimir"
_
, , , , , , , 8)
On Error GoTo 0
If Not x Is Nothing Then
Set rng = Intersect(rng, x)
Else
MsgBox "Se ha cancelado la impresion."
Exit Sub
End If

nPag = WorksheetFunction.RoundUp








(rng.Rows.Count /
50, 0)

pFila = rng.Row
For i = 1 To nPag
uFila = pFila + 49
Set pag = Intersect(rng, _
Range(Cells(pFila, 1), Cells(uFila,




256)))
.PageSetup.LeftHeader = Cells(pFila, 1)
pag.PrintOut
pFila = pFila + 50
Next i
.PageSetup.LeftHeader = ""
End With
End Sub
'-fin Codigo


"J.LL.R" wrote in


message
news:1f4001c4fd97$cc5a5e60$
Hola a todos los amigos del foro.
Como puedo hacer hacer por código que me imprima de








la
hoja1.
1- Que en cada hoja a imprimir me ponga como título el
nombre de la fila uno.
2-Que cuando cuente 50 lineas,pasa a la pagina 2 y asi
sucesivamente.
3-Que permite seleccionar las columna que deseo




imprimir.
Atte.Juan G. de LLanos


.





.









.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida