Macro para copiar

17 envíos / 0 nuevos
Último envío
rafaelmvt
Imagen de rafaelmvt
Offline
última acción: Hace 9 años 6 meses
alta: 15/07/2013 - 12:22
Puntos: 162
Macro para copiar

Buenos días, soy nuegvo en este foro y recurro a Uds. para solicitarles un favor

por la web conseguí la siguiente macro hecha por Ron de Bruin:
Sub Print_Odd_Even()

Dim Totalpages As Long

Dim StartPage As Long

Dim Page As Integer

On Error GoTo errHandler
StartPage = 1 '1 = Odd and 2 = Even
StartPage = InputBox("Ingrese 1 para impares, 2 para pares")
Totalpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")

For Page = StartPage To Totalpages Step 2

ActiveSheet.PrintOut from:=Page, To:=Page, _

Copies:=1, Collate:=True

Next

ExitSub

errHandler:

Exit Sub
End Sub

esta macro lo que hace es imprimir las paginas impares o pares, y esta funcionando pero lo que quiero es lo siguiente
1:saber si se puede modificar de tal manera que yo pueda seleccionar los números de paginas que quiera imprimir, aqui me refiero y esta aclaratoria es para las dos preguntas, es que una hoja puede tener varias paginas debido al salto de paginas de esa hoja;

puede ser una, dos o tres paginas las que quiera, tanto impares como pares, como lo hace el Word, que uno selecciona los números de paginas que va imprimir. Esta hoja se llama liquidación, por lo cual requiero de esto para no imprimir todas las hojas ni estar seleccionando las que voy a imprimir; en este caso hay un trabajador por pagina.


2: es también para imprimir, tengo otra hoja que se llama recibo ahí están en orden vertical todos los trabajadores que hay en la nomina, (hay 100 trabajadores, al igual a la anterior la pestaña u hoja tiene salto de paginas); es decir en una pagina hay dos trabajadores, por lo cual hay 50 paginas, lo que quiero es seleccionar al igual que la anterior lo que quiera imprimir de esa hoja.

me explico en la pagina 1 esta el recibo de ramón y juan por ejemplo. y yo solo quiero imprimir el de juan, de esa pagina y también quiero imprimir el recibo de luis que esta en la pagina 10 y el de rafael que esta en la pagina 50, se podría hacer esta macro de tal manera de no tener que imprimirlas todas ni estar seleccionando a pie como dice uno.

Hay que tomar en cuenta que cuando hablo de paginas no me estoy refiriendo a las pestañas sino a los saltos de paginas que pueda tener las hojas en cuention; en este caso la hoja Liquidacion y la hoja Recibos.

Gracias de antemano

Rafaelmvt

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 28 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
para imprimir páginas salteadas de una misma hoja de cálculo

imagina que facilitas al programa una lista de páginas que quieras imprimir separadas por comas.

por ejemplo

1,5,6,7,10,22

la puedes pedir al usuario con inputbox, o como sea 

listaseparadaporcomas=InputBox("introduce la lista separada por comas de páginas a impimir)

 

Ahora puedes utilizar la función Split de VBA para separar los números

paginasimprimir=Split (listaseparadaporcomas, ",")

 

Esto guarda en paginasimprimir una matriz con las páginas.

ahora necesitas un bucle que recorra esa matriz y vaya imprimiendo las páginas sueltas

siguiendo el ejemplo que propones...

 

    Totalpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")

    For i = LBound(paginasimprimir) To UBound(paginasimprimir)

        ActiveSheet.PrintOut from:=paginasimprimir(i), to:=paginasimprimir(i), Copies:=1, Collate:=True

    Next

 
 
 
 

 

------
Ya sé Excel, pero necesito más.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 28 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Imprimir partes diferentes de diferentes páginas

Para la segunda parte de tu pregunta, imprimir recibos que están en diferentes páginas, pero sólo en la mitad de una página

 

Como sólo quieres imprimir un recibo, yo creo que lo más interesante sería la opción de imprimir selección, es decir, seleccionar las celdas correspondientes a la persona que quieras e imprimir esa selección

Range(rangodeseado).Select

Selection.PrintOut

 

necesitarás decirle de alguna manera qué rango corresponde a cada persona, bien mediante nombres de rango, bien mediante un listado auxiliar donde busques el nombre (o el identificador que sea) y junto a él se encuentre su rango asociado.

 

 

------
Ya sé Excel, pero necesito más.

rafaelmvt
Imagen de rafaelmvt
Offline
última acción: Hace 9 años 6 meses
alta: 15/07/2013 - 12:22
Puntos: 162
Re: Imprimir partes diferentes de diferentes páginas

Buenos dias, offline, disculpa mi ignorancia, pero las respuestas que me has dado son para agregar esas instrucciones a la macro que tengo?, porque en verdad estos de programar en VB de excel no lo hago muy bien y quisiera saber si es asi pedirte el favor de añadir esas intrucciones y asi yo pueda copiar y pegar la macro en un modulo.

Porque de verdad no soy muy bueno en esto de macros.

Rafaelmvt

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 28 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Imprimir partes diferentes de diferentes páginas

HOla

las respuestas son para crear macros nuevas basadas en la macro de ejemplo que dejaste en el primer envío.

son sólo ideas para orientarte, 

no hay una única opción y hay cosas que dependen de tu criterioo de tus gustos, por ejemplo ¿cómo quieres decirle a la macro las hojas que quieres imprimir? ¿con un inputBox, leyéndolo de una celda...?

si quieres te dejo una versión, pero tampoco va a ser definitiva y siempre requerirá que la ajustes

 

------
Ya sé Excel, pero necesito más.

rafaelmvt
Imagen de rafaelmvt
Offline
última acción: Hace 9 años 6 meses
alta: 15/07/2013 - 12:22
Puntos: 162
Re: Imprimir partes diferentes de diferentes páginas

Buenos dia, seria bueno que saliera por pantalla lo que quiero imprimir, por ejemplo, que pagina se va imprimir? y uno le diga la 1-2, o la1,3,4, me explico, y no si si tambien sirve con el nombre del trabajador que esta en determinada celda, y no hay problema puedes dejarme esa version que dices tu,

Lo que pasa que este es un sistema de nomina, y a veces solo hay que imprimir x recibo de x trabajador, de tal forma que si en la nomina hay 60 trabajadores yo seleccione lo que quiero imprimir, puede ser por pagina o no se si se puede hacer por nombre del trabajador, de esta forma en una pagina que hay dos trabajadores yo pueda seleccionar solamente uno de tal forma de no imprimir el otro. Como te dije la nomina tiene 60 trabajadores, la hoja liquidacion estan uno por cada pagina (lo que quiere decir que hay 60 paginas en esa hoja liquidacion), pero en la hoja recibo estan dos por paginas (lo que quiere decir que hay 30 paginas en esa hoja recibo), entonces cada impresion lleva su copia, por eso quiero seleccionar lo que quierom imprimir para no malgastar hojas.

Si quieres me envias el ejemplo que tu tienes

Rafaelmvt

 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 28 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Imprimir partes diferentes de diferentes páginas

-bueno, te dejo la macro, pero no es más que lo que puse en los comentarios anteriores:

 

Sub ImprimeHojasSalteadas()

Dim listaseparadaporcomas, paginasimprimir, i

    listaseparadaporcomas = InputBox("introduce la lista separada por comas de páginas a imprimir")

    paginasimprimir = Split(listaseparadaporcomas, ",")

    

    Totalpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")

    For i = LBound(paginasimprimir) To UBound(paginasimprimir)

        ActiveSheet.PrintOut from:=paginasimprimir(i), to:=paginasimprimir(i), Copies:=1, Collate:=True

    Next

 

End Sub

 

------
Ya sé Excel, pero necesito más.

rafaelmvt
Imagen de rafaelmvt
Offline
última acción: Hace 9 años 6 meses
alta: 15/07/2013 - 12:22
Puntos: 162
Re: Imprimir partes diferentes de diferentes páginas

Buenos dias offiline, para la hoja de liquidacion esta perfecta, trabaja de maravilla, ahora me falta es para la hoja de recibo de pagos, ya que en una pagina hay dos recibos, y la idea es imprimir el recibo del trabajador o los trabajadores que seleccione.

Muchas gracias, por tu ayuda y si consigues algo para lo que me falta; me haces el favor de comunicarmelo

 

Gracias

Rafaelmvt

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 28 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Imprimir partes diferentes de diferentes páginas

¿y cómo podemos saber dónde están los datos de cada uno?

por ejemplo yo quiero imprimir el recibo de Juan Pérez.

¿dónde está su recibo?

 

------
Ya sé Excel, pero necesito más.

rafaelmvt
Imagen de rafaelmvt
Offline
última acción: Hace 9 años 6 meses
alta: 15/07/2013 - 12:22
Puntos: 162
Re: Imprimir partes diferentes de diferentes páginas

Buenas tardes, disculpa, mi torpeza, ya la estoy enviando

esa es la hoja de recibos de pago, porque el libro es demasiado pesado

Rafaelmvt

AdjuntoTamaño
File hoja_recibo_para_prueba.xlsx157.91 KB
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 28 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Imprimir partes diferentes de diferentes páginas

Espero que los datos de las nóminas que has adjuntado sean ficticios...

 

Opción 1: si defines nombres de rango en tu hoja, sería más fácil identificar dónde están las celdas que corresponden a cada uno.

 

como no tenemos nombres...

Opción 2: Buscar el nombre.

Se trataría de localizar el nombre, porque el tamaño del rango que ocupa cada recibo es fijo:

desde 4 filas por encima del nombre, hasta 28 filas por debajo del nombre

y desde 1 columna a la izquierda del nombre, hasta 7 columnas a la izquierda del nombre

(por supuesto, las celdas combinadas suponen un problema y distorsionan todo un poco más, por favor, evita combinar celdas)

 

Si tiramos por este camino, preguntaría el nombre de la persona de quien se quiere imprimir el recibo mediante un InputBox

nombrebuscado = InputBox("Indique el nombre completo de la persona cuyo recibo desea imprimir", Título)

 

luego lo buscaría con el método Find

Cells.Find(nombrebuscado, ActiveCell, xlValues).Activate

 

y a partir de esta celda, seleccionaría el rango deseado con Offset

Range(ActiveCell.Offset(-4, -1), ActiveCell.Offset(28, 4)).Select

 

todo junto podría quedar similar a esto...

Sub ImprimirRecibo()

On Error GoTo TrataError

    Dim nombrebuscado As String

    Const Título = "Ya sé Excel, pero necesito más"

    

    nombrebuscado = InputBox("Indique el nombre completo de la persona cuyo recibo desea imprimir", Título)

    

    Cells.Find(nombrebuscado, ActiveCell, xlValues).Activate

    'rango a imprimir (lo suyo sería definir unas constantes para el tamaño,

    ' por ir más rápido, pongo los números directamente)

    Range(ActiveCell.Offset(-4, -1), ActiveCell.Offset(28, 4)).Select

    ' imprimimos

    Selection.PrintOut

   

Exit Sub

TrataError:

    MsgBox "Se produjo un error al localizar el recibo"

 

End Sub

 

 

 

 

 

------
Ya sé Excel, pero necesito más.

rafaelmvt
Imagen de rafaelmvt
Offline
última acción: Hace 9 años 6 meses
alta: 15/07/2013 - 12:22
Puntos: 162
Re: Imprimir partes diferentes de diferentes páginas

Buenos dias, offline, la macro funciona hasta cierto limite de los recibos, pero analizandola me he dado cuenta que todos los recibos tienen que tener separaciones iguales de tal manera que la macro sombre adecuadamente el recibo que voy a imprimir.

Ahora bien creo que tu macro hace esa funcion cuando le doy el nombre del trabajador el me sombrea el recibo y luego lo imprime, es eso correcto?

Lo que quiere decir que tengo que tener todos los recibos de pagos iguales en el sentido de la cantidad de filas, o sea que la separacion del final del primer recibo sea igual para todos tanto al principio como al final es eso cierto?

Para que funcione bien la macro?

Gracias

Rafaelmvt

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 28 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Imprimir partes diferentes de diferentes páginas

eso es,

la macro localiza la celda que contiene el nombre buscado

luego selecciona el rango que ocupa el recibo para lo que he considerado (porque me pareció de un vistazo rápido que era así) que todos los recibos tenían el mismo tamaño.

Si no lo tienen, habría que detectar el patrón que sigue el tamaño de los recibos para que no se queden filas fuera de la selección.

 

Una vez seleccionado (por eso se sombrea), se imprime la selección

 

------
Ya sé Excel, pero necesito más.

visitante (no verificado)
Imagen de visitante
Re: Imprimir partes diferentes de diferentes páginas

Buenas noches, me lo imagine, porque tengo una macro que hace casi lo mismo, selecciona y si el patron seleccionado no es igual no funciona, de todas formas ya eso es parte mia, tratare de ajustar todos los recibos de tal manera que me queden del mismo tamaño, lo interesante es que funciona. muchas gracias, doy por finalizada la pregunta y cualquier cosa estamos en contacto

Saludos

Rafaelmvt

rafaelmvt
Imagen de rafaelmvt
Offline
última acción: Hace 9 años 6 meses
alta: 15/07/2013 - 12:22
Puntos: 162
Re: Imprimir partes diferentes de diferentes páginas

Buenas noches, tratare de que todos los recibos tengan el mismo patron, lo interesante es que funciona, doy por terminada la pregunta y estamos en contacto

saludos y gacias

Rafaelmvt

rafaelmvt
Imagen de rafaelmvt
Offline
última acción: Hace 9 años 6 meses
alta: 15/07/2013 - 12:22
Puntos: 162
Re: Imprimir partes diferentes de diferentes páginas

Buenos dias, pacomegia, te escribo por aqui, porque no tengo tu correo, mira tu me enviaste una macro para imprimir recibos de pago por nombre del trabajador pero quiero hacerte una consulta y no se como comunicarme contigo, mi correo es rafa1122000@hotmail.com, rafa1122000@gmail.com y bhmasociados@cantv.net, a cualquiera de puedes comunicarte conmigo

 

Rafaelmvt

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 28 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Imprimir partes diferentes de diferentes páginas

Para la próxima puedes utilizar la página de contacto (mejor que poner tus correos a la vista.

 

------
Ya sé Excel, pero necesito más.