Como imprimir mediante una macro solo celdas escritas?

11/09/2005 - 05:47 por jaraya | Informe spam
Deseo que mediante una macro asignada a un boton, inicie proceso de impresion
solo a columnas y filas con escrituras.Es decir como puedo hacer para que
automaticamente reconosca las filas y columnas y se establesca sola la area
de impresion.

Preguntas similare

Leer las respuestas

#21 KL
14/09/2005 - 21:06 | Informe spam
Bueno, acabo mi monologo diciendo que las ultimas dos opciones quedan
descartadas porque:

1) (no se por que no se me habia ocurrido antes) la funcion
INDICAR.DOCUMENTO() devuelve la ultima celda que no necesariamente esta
escrita, sino que tambien tiene formatos, comentarios, etc (exactamente
igual que SpecialCells(xlCellTypeLastCell). Eso mismo lo hace Excel si
imprimimos sin crear un area de impresion.

2) partiendo del primer punto, para que una UDF devuelva la ultima celda,
harian falta demasiadas operaciones por lo que el uso de VBA no estaria
justificado dada la existencia de otras soluciones mediante funciones
nativas.

Saludos,
KL


"KL" wrote in message
news:%
...obviamente se podria usar una UDF que resetearia el rango usado y
devolveria la fila de la ultima celda sin grandes perdidas de velocidad.
Solo que los macros tienen el inconviniente de estar siempre
habilitados/habilitables por razones diversas.

Saludos,
KL


"KL" wrote in message
news:%
Hola HM,

Cambiando (solo un poco) del tema, tu que manejas varias versiones de
Office, ?sabes si en las versiones posteriores a la 2000 se sigue dando
el problema de LastCell/UsedRange que no se actualiza automaticamente? Se
me ocurre que una formula denominada como =GET.DOCUMENT(10)+(0*RAND())
podria ser una opcion. La he probado en XL2000 y funciona bien salvo que
hay que resetear el rango usado si se reduce el numero de filas usadas
:-(. Si todo estuviera bien, acabariamos con algo tan simple y rapido
como:

FILA=INDICAR.DOCUMENTO(10)+(0*ALEATORIO())
Print_Area¡:INDICE(1:65536;FILA;255)

Entiendo que el riesgo del famoso derrumbe de Excel en caso de copiar
nombres con funciones XML de una hoja a otra no es relevante ya que el
nombre no se usaria en ninguna hoja del libro.

?Comentas?

Saludos,
KL


"KL" wrote in message
news:
Hola HM,

http://www.xldynamic.com/source/xld.LastValue.html
http://www.xldynamic.com/source/xld...benchmarks



Conozco estas paginas, lo que no hacen estas formulas es encontrar la
ultima fila en varias columnas a la vez. Y lo de benchmarks, casi que
no hacen falta para decir que formula es mas rapida.

Saludos,
KL









Respuesta Responder a este mensaje
#22 Héctor Miguel
15/09/2005 - 06:34 | Informe spam
hola, KL !

Bueno, acabo mi monologo diciendo que las ultimas dos opciones quedan descartadas porque [...]



[creo que]... mas que... 'monologo'... [todavia]... 'disparas' mas rapido de lo que 'afinas y apuntas' :))
reza un viejo proverbio por estos lugares... -> rapido... y bien?... no ha habido quien <- ;)

no se si yo me habre 'metido mas alla'... de lo necesario en cuanto al requerimitneo de OP...
ya que [segun mi interpretacion] buscaba una forma 'sencilla y poco elaborada' de auto-ajustar el area de impresion -?-
de ahi que propongo la re/definicion del nombre que asigna excel al rango que se habra de imprimir ;)
de repente [y no veo el 'porque']... unas 'decimas de segundo', de 'no importar'... pasan a ser 'de vida o muerte' -?-
[si recuerdas la consulta de 'potenciacion' en la que finalizaste tu la participacion bajo la anterior 'premisa'] -?-

te concedo [porque efectivamente tienes razon en cuanto a la 'velocidad' en el re/calculo entre formulas y rangos matriz]...
que tu propuesta 'recupera' esas 'vitales decimas de segundo' [aunque no la has podido 'determinar en definitiva'] ;)
SOLO QUE... [y mientras no dispongas diferente]... es necesario 'sacrificar' [o perder] beneficios colaterales, como...
1) el procedimiento definitivamente deja de ser 'poco'... y pasa a ser... 'muy elaborado'
2) se pierde [y mucho] la facilidad/docilidad/amigabilidad/... para modificar la variable o mantenerla 'dinamica'
3) se necesita 'sacrificar' una columna por cada columna a monitorear [para el rango-matriz de x_columnas por 2 filas]
[es decir]... de las 256 columnas de excel... deberas 'separar' la mitad para poder establecer el rango_matriz :-(
4) la alternativa para sacrificar -solamente- 2 columnas es... 'invertir' el rango_matriz a 2 columnas por x_filas ;)
5) aun asi [tengo que insistir en que]... el manejo de las variables deja de ser 'sencillo/docil/amigable/dinamico/etc.' :-(

de cualquier forma... OP [y el lector] gana en alternativas para seleccionar de entre las que mejor acomoden a su necesidad ;)

saludos,
hector.
Respuesta Responder a este mensaje
#23 KL
15/09/2005 - 08:08 | Informe spam
Hola HM,

[creo que]... mas que... 'monologo'... [todavia]... 'disparas' mas rapido
de lo que 'afinas y apuntas' :))
reza un viejo proverbio por estos lugares... -> rapido... y bien?... no ha
habido quien <- ;)



Esto tambien hay quienes lo llaman conversacion espontanea en la que se
comparten las ideas en el momento de surgir y se analizan los pros y contras
conjuntamente como alternativa a hacerlo todo uno mismo y ofrecer una
solucion descafeinada y sin grasas saturadas. Ya se que no eres nada
partidario de este tipo de interaccion ;-)

no se si yo me habre 'metido mas alla'... de lo necesario en cuanto al
requerimitneo de OP...
ya que [segun mi interpretacion] buscaba una forma 'sencilla y poco
elaborada' de auto-ajustar el area de impresion -?-
de ahi que propongo la re/definicion del nombre que asigna excel al rango
que se habra de imprimir ;)



Creo que hiciste muy bien, y me parecio un tema muy interesante. Por eso
empece a buscar las posibilidades para mejorar las formulas, pero no hubo
suerte. Luego publique mis ideas para compartir los resultados de mi
experimento y en parte mi frustracion por no conseguir el resultado. Esto
porque creo que aun siendo un fracaso al menos podia ser interesante el
flujo de mi pensamiento al intentar hacerlo.

de repente [y no veo el 'porque']... unas 'decimas de segundo', de 'no
importar'... pasan a ser 'de vida o muerte' -?-



Bulex! Sencillamente, mientras yo esperaba (ingenuamente) una critica
constructiva de la formula y algunas ideas sobre el por que de no funcionar
la formula o como hacer que funcionara, Hector Miguel suelta frases del tipo
global basicamente tachando de innecesario este intento de encontrar una
mejora a la solucion, que fueron la causa de la discusion y no el hecho de
ganar unas decimas de segundos ya que probablemente no sabremos nunca
cuantos segundos se habrian ganado (la primera formula no llego a nacer). Y
como ya te habia comentado, los mensajes tuyos que siguieron ya llevaban un
caracter claro de sermones y constatacion de cosas obvias, y en estos casos
tiendo a llevar la contraria casi siempre - me gusta el rol del abogado del
diablo (ya conoces una mas de mi debilidades)

[si recuerdas la consulta de 'potenciacion' en la que finalizaste tu la
participacion bajo la anterior 'premisa'] -?-



Aparte de que creo que estos dos casos son totalmente distintos y el ahorro
de tiempo seria bastante mas significativo, creo que "you have totally
missed the point": la idea no era hacer una formula mas rapida porque si,
sino conseguir la flexibilidad para no estar limitado dentro de 1500 x 4 o
tal vez 10000 x 50 filas de datos que es cuando tu formula creo que
empezaria a ser un peso notable para la aplicacion.

SOLO QUE... 1) el procedimiento definitivamente deja de ser 'poco'... y
pasa a ser... 'muy elaborado'



No se este es una caso claro de disparar sin apuntar por tu parte. Por mi el
procedimiento es exactamente el mismo: dos formulas denominadas donde una
lleva (habria llevado) el nombre de Print_Area, la diferencia radica en una
de las formulas.

2) se pierde [y mucho] la facilidad/docilidad/amigabilidad/... para
modificar la variable o mantenerla 'dinamica'



Las formulas matriciales en general son dificiles de entender y son
desconocidas por la mayoria absoluta de los usuarios. En esto de
amigabilidad no veo mucha diferencia entre las dos formulas. En el resto de
los factores te concedo la razon, pero la palabra 'mucho' me parece un
exageracion o mas bien una subjetividad total.

3) se necesita 'sacrificar' una columna por cada columna a monitorear
[para el rango-matriz de x_columnas por 2 filas]
[es decir]... de las 256 columnas de excel... deberas 'separar' la
mitad para poder establecer el rango_matriz :-(
4) la alternativa para sacrificar -solamente- 2 columnas es... 'invertir'
el rango_matriz a 2 columnas por x_filas ;)



Estos dos puntos te agradeceria que me los expliques (se que lo has
mencionado antes) porque no acabo de verles la razon. Espero que no sea el
hecho de que mi formula en realidad devuelve la ultima fila de la primera
columna del rango elegido y no la mayor de las ultimas filas de todas ellas
[en todo momento he estado basandome en la suposicion de que la formula
funciona tal como yo esperaba que funcionara] :-)

5) aun asi [tengo que insistir en que]... el manejo de las variables deja
de ser 'sencillo/docil/amigable/dinamico/etc.' :-(



...sin comentarios

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