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

#1 KL
19/01/2005 - 17:42 | Informe spam
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
#2 J.LL.R
20/01/2005 - 14:13 | Informe spam
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
#3 KL
20/01/2005 - 16:43 | Informe spam
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
#4 J.LL.R
20/01/2005 - 18:08 | Informe spam
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
#5 KL
21/01/2005 - 08:57 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida