Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Macro para imprimir rangos

1,135 views
Skip to first unread message

Jorge

unread,
Sep 1, 2009, 1:13:01 PM9/1/09
to
¿Como puedo hacer una macro para imprimir, pero que me discrimine celdas
ocupadas o vacias y asi determinar el rango a imprimir. Por ejemplo, si
C52="" (o si C10<>""), imprimir el rango A1:G41; si ademas esta ocupada la
celda c52, entonces el rango a imprimir será A1:G83, etc. En resumen, que
imprima solo las hojas en que existan datos en la columna C y dentro de los
rangos especificados. Ademas, esta macro, me gustaria que fuera "dentro y
antes" que otra
de forma que junto con ordenar la impresión, se ejecute esta segunda macro,
la que se asignaria a un botón de control, que podria denominarse "Imprimir y
Guardar". Gracias.-

H�ctor Miguel

unread,
Sep 1, 2009, 6:04:10 PM9/1/09
to
hola, Jorge !

> Como puedo hacer una macro para imprimir, pero que me discrimine celdas ocupadas o vacias y asi determinar el rango a imprimir.
> Por ejemplo, si C52="" (o si C10<>""), imprimir el rango A1:G41; si ademas esta ocupada la celda c52

> entonces el rango a imprimir sera A1:G83, etc.


> En resumen, que imprima solo las hojas en que existan datos en la columna C y dentro de los rangos especificados.

> Ademas, esta macro, me gustaria que fuera "dentro y antes" que otra de forma que junto con ordenar la impresion
> se ejecute esta segunda macro, la que se asignaria a un boton de control que podria denominarse "Imprimir y Guardar"...

a) cuando estableces un rango como el area de impresion (cualquiera)...
excel genera un nombre (p.e. �rea_de_impresion o... Print_area -si en ingles-)

b) dicho nombre (que en realidad es una referencia al rango que se imprime) es tambien factible de personalizar
(p.e. podrias definir un rango dinamico)

c) ve a (menu) insertar / nombre / definir...
selecciona el nombre apropiado y... CAMBIA sus referencias a la siguiente formula...
bueno... aqui solo falta saber cuales son (TODAS) las condiciones/caracteristicas/o similares...
(que de momento solo conoces tu...) para poder decirle cual seria el area de impresion automatica

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.


Jorge

unread,
Sep 3, 2009, 10:21:01 AM9/3/09
to
Hola Hector Miguel: Disculpa pero no encuentro en (menu) Insertar, ...Nombre,
ya que solo aparece Tablas, Ilustraciones, Graficos, Vinculos y Texto (Excel
2007). ¿O es en el cuadro de nombres, antes de la linea de formulas? Gracias.-

"Héctor Miguel" escribió:

> hola, Jorge !
>
> > Como puedo hacer una macro para imprimir, pero que me discrimine celdas ocupadas o vacias y asi determinar el rango a imprimir.
> > Por ejemplo, si C52="" (o si C10<>""), imprimir el rango A1:G41; si ademas esta ocupada la celda c52
> > entonces el rango a imprimir sera A1:G83, etc.
> > En resumen, que imprima solo las hojas en que existan datos en la columna C y dentro de los rangos especificados.
> > Ademas, esta macro, me gustaria que fuera "dentro y antes" que otra de forma que junto con ordenar la impresion
> > se ejecute esta segunda macro, la que se asignaria a un boton de control que podria denominarse "Imprimir y Guardar"...
>
> a) cuando estableces un rango como el area de impresion (cualquiera)...

> excel genera un nombre (p.e. Área_de_impresion o... Print_area -si en ingles-)

H�ctor Miguel

unread,
Sep 3, 2009, 12:40:01 PM9/3/09
to
hola, Jorge !

> ... no encuentro en (menu) Insertar, ...Nombre


> ya que solo aparece Tablas, Ilustraciones, Graficos, Vinculos y Texto (Excel 2007).

> O es en el cuadro de nombres, antes de la linea de formulas? ...

xl-2007, desde la cinta de opciones: (ficha) formulas / (grupo) nombres definidos / (boton) asignar nombre a un rango

saludos,
hector.

__ OP __

Jorge

unread,
Sep 3, 2009, 7:25:01 PM9/3/09
to
Hola Hector Miguel: Defini los siguientes nombres Hoja_1 hasta Hoja_8, con
los siguientes rangos:
a1:g42;a43:g84;a85:g126;a127:g168;a169:g210:a211:g252;a253:g294 y a295:g336
(cada 42 filas).
La(s) condicion(es) serían: si c10<>"", entonces imprimir Hoja_1; si c10 y
c52<>"", entonces imprimir Hoja_1 y Hoja_2; si c10, c52 y c94 <>"", entonces
imprimir Hoja_1, Hoja_2 y Hoja_3, etc (es decir, c+42, a partir de c10, es la
que determina el rango aimprimir).-
Me gustaria saber algo mas de los rangos dinamicos, que supongo son los que
se modifican o varian. La ayuda de Excel se refiere a tablas y graficos
dinamicos, ¿algún lugar en la red donde aprender lo basico de ese tema?. Como
siempre, muchas gracias por tu colaboración. Atte. Jorge

"Héctor Miguel" escribió:

> hola, Jorge !
>
> > ... no encuentro en (menu) Insertar, ...Nombre
> > ya que solo aparece Tablas, Ilustraciones, Graficos, Vinculos y Texto (Excel 2007).
> > O es en el cuadro de nombres, antes de la linea de formulas? ...
>
> xl-2007, desde la cinta de opciones: (ficha) formulas / (grupo) nombres definidos / (boton) asignar nombre a un rango
>
> saludos,
> hector.
>
> __ OP __
> >>> Como puedo hacer una macro para imprimir, pero que me discrimine celdas ocupadas o vacias y asi determinar el rango a imprimir.
> >>> Por ejemplo, si C52="" (o si C10<>""), imprimir el rango A1:G41; si ademas esta ocupada la celda c52
> >>> entonces el rango a imprimir sera A1:G83, etc.
> >>> En resumen, que imprima solo las hojas en que existan datos en la columna C y dentro de los rangos especificados.
> >>> Ademas, esta macro, me gustaria que fuera "dentro y antes" que otra de forma que junto con ordenar la impresion
> >>> se ejecute esta segunda macro, la que se asignaria a un boton de control que podria denominarse "Imprimir y Guardar"...
> >>
> >> a) cuando estableces un rango como el area de impresion (cualquiera)...

> >> excel genera un nombre (p.e. Ã rea_de_impresion o... Print_area -si en ingles-)

H�ctor Miguel

unread,
Sep 3, 2009, 10:45:29 PM9/3/09
to
hola, Jorge !

__ 1 __


> Defini los siguientes nombres Hoja_1 hasta Hoja_8, con los siguientes rangos:
> a1:g42;a43:g84;a85:g126;a127:g168;a169:g210:a211:g252;a253:g294 y a295:g336 (cada 42 filas).

> La(s) condicion(es) serian


> si c10<>"", entonces imprimir Hoja_1
> si c10 y c52<>"", entonces imprimir Hoja_1 y Hoja_2
> si c10, c52 y c94 <>"", entonces imprimir Hoja_1, Hoja_2 y Hoja_3, etc
> (es decir, c+42, a partir de c10, es la que determina el rango aimprimir).-

1) que una celda sea <>"" podria significar muchas cosas (p.e.)
- es una celda vacia ? <= efectivamente vacia ???
- tiene alguna formula del tipo: =si(a=b,c,"") ???
- si <>"" que contiene (numeros, textos, ...) ???
- hay algun "patron" en el contenido (si <>"") de esas celdas (p.e. capitulo x, ...) ???

=> podrias dar respuesta a las (re)preguntas anteriores ?

__ 2 __


> Me gustaria saber algo mas de los rangos dinamicos, que supongo son los que se modifican o varian.
> La ayuda de Excel se refiere a tablas y graficos dinamicos,

> algun lugar en la red donde aprender lo basico de ese tema?...

2) prueba consultando las siguientes conversaciones: -> http://tinyurl.com/klatwb
y/o visitando la siguiente pagina: -> http://www.contextures.com/xlPivot01.html#Dynamic
luego consulta la ayuda en linea {F1} por funciones como: desref(..., indice(..., coincidir(..., etc.

saludos,
hector.


Jorge

unread,
Sep 4, 2009, 12:40:01 PM9/4/09
to
Hola Hector Miguel: Efectivamente, las celdas no estan <>, ya que contienen
reglas de validación del tipo =Y(C10<>"";E11<>"#N/A"), y en ellas el formato
esta definido como número, porque ingresare, en su momento, números. En
cuanto a algún patrón, que yo sepa no contiene ninguno, salvo el patrón de
validación. Gracias por los datos para aprender sobre rangos dinamicos. Los
leere para aprender algo mas. Gracias.-

"Héctor Miguel" escribió:

H�ctor Miguel

unread,
Sep 4, 2009, 4:50:24 PM9/4/09
to
hola, Jorge !

> ... las celdas no estan <>, ya que contienen reglas de validacion del tipo =Y(C10<>"";E11<>"#N/A")
> y en ellas el formato esta definido como numero, porque ingresare, en su momento, numeros.

1) una cosa es el formato condicional, y otra (muy distinta) es EL CONTENIDO de las celdas

2) en cuanto al contenido de las celdas (C10 + cada 42 filas mas...)
a) estaran EFECTIVAMENTE vacias ? (hasta que ingreses algun numero ?)
b) o tienen formulas del tipo =si(a=b;c;"") ?????

saludos,
hector.

__ previos __

Jorge

unread,
Sep 4, 2009, 6:01:02 PM9/4/09
to
Hola Hector Miguel: Si, entiendo que es distinto el tema del formato, pero
preferi asumir que no lo era, para, si no era un tema distinto, no inducir a
error. Las celdas estaran efectivamente vacias hasta que ingrese un texto (ya
que lo ingreso sin separador de miles, pero siempre seran digitos y no
letras) y lo defini como formato de número. Por tanto, no existe ninguna
formula en dichas celdas. Saludos y buen fin de semana. Jorge

"Héctor Miguel" escribió:

H�ctor Miguel

unread,
Sep 4, 2009, 7:07:52 PM9/4/09
to
hola, Jorge !

> Las celdas estaran efectivamente vacias hasta que ingrese un texto

> (ya que lo ingreso sin separador de miles, pero siempre seran digitos y no letras) ...

prueba con el siguiente procedimiento:
OJO: estoy asumiendo que puedes utilizar las celdas del rango [A1:A10]
si no es asi, utiliza otro rango y la ultima celda sera la referencia para (re)definir el area de impresion

1) utiliza las siguientes formulas en las celdas indicadas:
[A1] =desref(c$10,(fila()-1)*42,)
=> copiar hasta [A9]
[A10] =(coincidir(0,a1:a9,0)-1)*42

2) crea/define/... un area de impresion (cualquiera, no importa en este momento)

3) (re)define ese nombre (�rea_de_impresion o como quede)
aplicando la siguiente formula en el cuadro de edicion: "se refiere a:"
=desref($a$1:$g$1,,,$a$10,)

solo cambia el separador de argumentos (mi sistema usa a la coma ',' NO al punto y coma ';' :D)

saludos,
hector.


Jorge

unread,
Sep 14, 2009, 10:19:01 AM9/14/09
to
Hola Hector Miguel: Redefini el nombre Area_de_Impresión copiando
=desref($a$1:$g$1;;;$a$10;); modifique las tres comas (,) por puntos y comas
(;) y la última coma idem. Cambió el nombre a esnúmero (lo que imagino no
tiene ninguna importancia, ya que le puedo dar otro), pero el problema es que
me arroja una referencia circular. ¿Como lo soluciono? Gracias. Saludos
Jorge.-


"Héctor Miguel" escribió:

> hola, Jorge !
>
> > Las celdas estaran efectivamente vacias hasta que ingrese un texto
> > (ya que lo ingreso sin separador de miles, pero siempre seran digitos y no letras) ...
>
> prueba con el siguiente procedimiento:
> OJO: estoy asumiendo que puedes utilizar las celdas del rango [A1:A10]
> si no es asi, utiliza otro rango y la ultima celda sera la referencia para (re)definir el area de impresion
>
> 1) utiliza las siguientes formulas en las celdas indicadas:
> [A1] =desref(c$10,(fila()-1)*42,)
> => copiar hasta [A9]
> [A10] =(coincidir(0,a1:a9,0)-1)*42
>
> 2) crea/define/... un area de impresion (cualquiera, no importa en este momento)
>

> 3) (re)define ese nombre (Área_de_impresion o como quede)

H�ctor Miguel

unread,
Sep 14, 2009, 7:40:00 PM9/14/09
to
hola, Jorge !

> ... Redefini el nombre Area_de_Impresion copiando =desref($a$1:$g$1;;;$a$10;)
> modifique las tres comas (,) por puntos y comas (;) y la ultima coma idem.
> Cambio el nombre a esnumero (lo que imagino no tiene ninguna importancia, ya que le puedo dar otro)
> pero el problema es que me arroja una referencia circular. Como lo soluciono? ...

- como esta eso de "cambio el nombre a es numero"... (???)
a) te refieres a que "agregaste" el nombre (nuevo) "esnumero" a los nombre existentes en el libro ?
b) o realmente REdefiniste el nombre "area_de_impresion" (???)

la referencia circuar es cuando aplicas formulas/funciones/... con referencias circulares EN las celdas de la hojo
(no cuando se trata de nombres, al menos, no que me haya tocado "sufrir")

saludos,
hector.

__ OP __

Jorge

unread,
Sep 15, 2009, 11:28:02 AM9/15/09
to
Hola hector Miguel: Lo que hice fue lo siguiente: en A1
DESREF(C$10;(FILA()-1)*42;), la que copie exactamente igual hasta A9; en A10
puse =(COINCIDIR(0;A1:A9;0)-1*42) (Excel corrigio el parentesis de cierre);
luego cree un bloque o rango cualquiera (a1:g42), luego fui a Diseño de
Pagina, Area de Impresión, Establecer Area de Impresión y en el cuadro de
Nombre aparece Area_de_Impresión y a la derecha de dicho cuadro, barra de
formulas (fx) copie =DESREF($A$1:$G$1;$A$10;). Nota que el programa no me
dejo poner tres puntos y comas despues del rango $A$1:$g$1. Si hago click en
A1 en el cuadro de nombres aparece A1 y en el cuadro de formulas, aparece
=DESREF($A$1:$G$1;$A$10;) y si hago doble click sobre el mismo, me cambia en
el cuadro de nombre a ESNUMERO, aunque me mantiene la formula. ¿Cual paso me
salte o hice mal. Te cuento que a1:a9 muestra 0 y A10 -41.- Saludos


"Héctor Miguel" escribió:

> hola, Jorge !
>
> > ... Redefini el nombre Area_de_Impresion copiando =desref($a$1:$g$1;;;$a$10;)
> > modifique las tres comas (,) por puntos y comas (;) y la ultima coma idem.
> > Cambio el nombre a esnumero (lo que imagino no tiene ninguna importancia, ya que le puedo dar otro)
> > pero el problema es que me arroja una referencia circular. Como lo soluciono? ...
>
> - como esta eso de "cambio el nombre a es numero"... (???)
> a) te refieres a que "agregaste" el nombre (nuevo) "esnumero" a los nombre existentes en el libro ?
> b) o realmente REdefiniste el nombre "area_de_impresion" (???)
>
> la referencia circuar es cuando aplicas formulas/funciones/... con referencias circulares EN las celdas de la hojo
> (no cuando se trata de nombres, al menos, no que me haya tocado "sufrir")
>
> saludos,
> hector.
>
> __ OP __
> >>> Las celdas estaran efectivamente vacias hasta que ingrese un texto
> >>> (ya que lo ingreso sin separador de miles, pero siempre seran digitos y no letras) ...
> >>
> >> prueba con el siguiente procedimiento:
> >> OJO: estoy asumiendo que puedes utilizar las celdas del rango [A1:A10]
> >> si no es asi, utiliza otro rango y la ultima celda sera la referencia para (re)definir el area de impresion
> >>
> >> 1) utiliza las siguientes formulas en las celdas indicadas:
> >> [A1] =desref(c$10,(fila()-1)*42,)
> >> => copiar hasta [A9]
> >> [A10] =(coincidir(0,a1:a9,0)-1)*42
> >>
> >> 2) crea/define/... un area de impresion (cualquiera, no importa en este momento)
> >>

> >> 3) (re)define ese nombre (Ã rea_de_impresion o como quede)

H�ctor Miguel

unread,
Sep 15, 2009, 6:51:35 PM9/15/09
to
hola, Jorge !

> Lo que hice fue lo siguiente: en A1 DESREF(C$10;(FILA()-1)*42;), la que copie exactamente igual hasta A9
> en A10 puse =(COINCIDIR(0;A1:A9;0)-1*42) (Excel corrigio el parentesis de cierre)

=> esta formula no esta bien, compara con la formula de la propuesta original:
=> la que corrigio: =(COINCIDIR(0;A1:A9;0)-1*42)
=> la que funciona: =(COINCIDIR(0;A1:A9;0)-1)*42

nota: excel "corrigio" el parentesis de cierre (probablemente) por que NO lo pusiste tu (?) y no podia adivinar con exactitud (?)

> luego cree un bloque o rango cualquiera (a1:g42)

> luego fui a Diseno de Pagina, Area de Impresion, Establecer Area de Impresion
> y en el cuadro de Nombre aparece Area_de_Impresion y a la derecha de dicho cuadro


> barra de formulas (fx) copie =DESREF($A$1:$G$1;$A$10;).

=> este procedimiento tampoco es el sugerido (re-definir el nombre) en la propuesta original...
=> donde debes "entrar" la formula, NO es en la "barra de formulas" si no...
=> en el cuadro de referencias desde (menu:) insertar / nombre / definir...
-> seleccionas el nombre (area_de_impresion)
-> la formula es en: "se refiere a:"

si cualquier duda... comentas ?
saludos,
hector.

>> __ OP __
>>>>> Las celdas estaran efectivamente vacias hasta que ingrese un texto
>>>>> (ya que lo ingreso sin separador de miles, pero siempre seran digitos y no letras) ...
>>>>
>>>> prueba con el siguiente procedimiento:
>>>> OJO: estoy asumiendo que puedes utilizar las celdas del rango [A1:A10]
>>>> si no es asi, utiliza otro rango y la ultima celda sera la referencia para (re)definir el area de impresion
>>>>
>>>> 1) utiliza las siguientes formulas en las celdas indicadas:
>>>> [A1] =desref(c$10,(fila()-1)*42,)
>>>> => copiar hasta [A9]
>>>> [A10] =(coincidir(0,a1:a9,0)-1)*42
>>>>
>>>> 2) crea/define/... un area de impresion (cualquiera, no importa en este momento)
>>>>

>>>> 3) (re)define ese nombre (�rea_de_impresion o como quede)

0 new messages