Cuando digo “etiquetas” me refiero a pequeñas fichas, cortoncitos,
tarjetitas que se pegan a los productos para la venta para identificarlos y
que contienen información básica del producto como descripción, color,
precio, código, referencia, etc. En mi caso de una hoja o cartulina tamaño
carta, obtengo 25 etiquetas de igual tamaño (5 hileras de 5 etiquetas cada
una)
Actualmente imprimo las etiquetas de 25 en 25 a medida que se van comprando
los productos.
Normalmente cuando los productos van a ser etiquetados, los productos se
organizan físicamente en el almacén en el mismo orden que se muestran en la
hoja “compras” por lo que las etiquetas deben imprimirse en forma secuencial,
es decir que deben imprimirse en el mismo orden que aparecen los productos
comprados en la hoja “compras”
Actualmente las hago así:
Tengo la hoja “compras” con los títulos de columnas desde las celdas a1
hasta m1:
Idcompra
Código del producto,
Feha de compra,
Número de factura de compra,
Cantidad comprada,
Costo unitario,
Precio de venta,
Total compra,
Proveedor,
Descripción,
Color,
Marca,
Talla;
Donde:
Id Compra es un código único e irrepetible por cada producto comprado;
Código del producto es un código que se repite tantas veces como se compra
un producto;
Total compra es una fórmula;
Descripción, Color, Marca, Talla vienen de la hoja “productos” con la
fórmula “VBuscar”
y Tengo la hoja “etiquetas” con 26 filas con los títulos de columna desde
las celdas b1 hasta h1 que muestran las 25 etiquetas que se van a imprimir:
Id compra
Precio de venta,
Código del producto,
Descripción,
Color,
Marca,
Proveedor
Donde:
Id Compra lo copio y pego manualmente tantas veces como cantidad comprada
muestre la hoja “compras”; el resto de las columnas vienen de la hoja
“compras” con la fórmula “VBuscar”
En la fila 28 comienzan las etiquetas las cuales están vinculadas con cada
una de las 25 filas.
El problema es que cuando voy a imprimir cada hoja o cartulina de 25
etiquetas, debo indicar manualmente en las primeras 25 filas las productos
que deseo que tengan etiqueta y como esto depende del orden de los productos
en la hoja “compras” y de la cantidad de productos comprados que muestra la
columna “cantidad comprada” de la hoja “compras” me equivoco mucho y siempre
imprimo más o menos etiquetas que productos comprados y si me distraigo un
poco, a veces me salto algún producto o repito algún producto y esto me trae
problemas para etiquetar : (
No sé, pienso que podría haber una forma de indicarle a Excel que tome
directamente la información de la hoja “compras” escribiendo el “Id Compras”
desde donde Excel debe comenzar a imprimir las etiquetas y que Excel imprima
una etiqueta por cada producto comprado o por ejemplo decirle a Excel que
imprima todas las etiquetas de los productos comprados en alguna fecha
determinada tal vez es más fácil.
Otro problema es que cuando deseo cambiar el tamaño de las etiquetas y por
consiguiente la cantidad de etiquetas por hoja, debo cuadrar manualmente y
hacer varias pruebas hasta que se ajusten al tamaño del papel. Me preguntaba
si Excel tiene algo previsto para esto.
Gracias por la ayuda.
Griego59
Saludos
"GRIEGO59" <GRIE...@discussions.microsoft.com> escribió en el mensaje de
noticias news:E852AF0D-6669-4D8C...@microsoft.com...
> ... como se pueden hacer etiquetas en Excel? (...)
1) para esta parte (al final) de tu consulta...
"> ... cuando deseo cambiar el tamano de las etiquetas y por consiguiente la cantidad de etiquetas por hoja"
"> debo cuadrar manualmente y hacer varias pruebas hasta que se ajusten al tamano del papel."
"> Me preguntaba si Excel tiene algo previsto para esto."
-> (me temo que) no podras escapar de la necesidad de hacer ajustes "a prueba y error" :-((
2) en cuento al resto de tu consulta (perdon si la omito, pero creo que tome y) los detalles importantes son:
a) imprimes en papel de etiquetas (engomadas) de 25 x 25
b) en la hoja "etiquetas" tienes:
-> a partir de la fila 28 tienes el formado que "encuadra" los datos a las etiquetas
-> en [B1:H1] los titulos de los datos que se van a cada etiqueta
(Id compra, Precio de venta, Codigo del producto, Descripcion, Color, Marca, Proveedor)
-> en [B2:B26] necesitas poner la "IdCompra" de cada producto tantas veces como su cantidad comprada
con la consiguiente necesidad de ajustar a las 25 etiquetas del papel engomado y las que falten... "a la siguiente"
c) en la hoja "compras" tienes:
-> en [A1:M1] los diversos titulos de los articulos comprados (de donde)...
-> la "IdCompra" esta en la columna A (y es la que se debe pasar a etiquetas tantas veces como)...
-> la columna E contiene el dato de la cantidad comprada de cada producto
si "voy bien" (hasta aqui)... prueba con una macro (que deberas ejecutar desde la hoja "etiquetas) +/- como la siguiente:
haz unas pruebas "cortas" (asi va preparada) y cuando estes satisfecho (si fuera el caso)...
-> sustituyes los MsgBox (lineas 12 y 28) por tus instrucciones de impresion
(asumiendo que el area de impresion es a partir de la fila 28) -?-
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Sub Etiquetas_en_25()
Dim Fila_Id As Integer, Cant_Id As Integer, Actual As Byte, _
Libres As Byte, Fila_Etiq As Byte, Id_Falta As Integer
Range("b2:b26").ClearContents
With Worksheets("compras")
For Fila_Id = 2 To 3 ' .Range("a65536").End(xlUp).Row
Cant_Id = .Range("e" & Fila_Id)
Actual = 0
Do
Libres = 25 - Evaluate("counta(b2:b26)")
If Libres = 0 Then
MsgBox "Etiquetas completas !!!"
Range("b2:b26").ClearContents
End If
Libres = 25 - Evaluate("counta(b2:b26)")
Fila_Etiq = 2 + 25 - Libres
Id_Falta = Cant_Id - Actual
Select Case Id_Falta
Case Is <= Libres
Range("b" & Fila_Etiq).Resize(Id_Falta) = .Range("a" & Fila_Id)
Actual = Actual + Id_Falta
Case Else
Range("b" & Fila_Etiq).Resize(Libres) = .Range("a" & Fila_Id)
Actual = Actual + Libres
End Select
Loop Until Actual = Cant_Id
Next
If Evaluate("counta(b2:b26)") Then MsgBox "Ultimo bloque de etiquetas !!!"
End With
End Sub
"Héctor Miguel" escribió:
> Sin duda el metodo de combinar correspondencia es el mas adecuado aunque si
> nada sencillo de hacer, pero no imposible, y una vez configurado la primera vez
> las siguientes son pan comido, si te interesa contactame a ...
1) creo que te perdiste la interpretacion de esta parte de la consulta original...
"El problema es que cuando voy a imprimir cada hoja o cartulina de 25 etiquetas"
"debo indicar manualmente en las primeras 25 filas las productos que deseo que tengan etiqueta"
"y como esto depende del orden de los productos en la hoja compras"
"y de la cantidad de productos comprados que muestra la columna cantidad comprada de la hoja compras ..."
2) despues de lo anterior...
me gustaria si comentas el "como" hacer una combinacion de correspondencia (en word)
que repita n_etiquetas de un mismo campo combinado
cuidando que el formato no exceda de las 25 etiquetas disponibles en el papel (engomado ?)
y continue hasta agotar los registros (IdCompra) del origen de la combinacion de correspondencia -???-
(repito): creo que solo te hace falta analizar con mas detenimiento el objetivo final de quien consulta -?-
saludos,
hector.
disculpad que me meta, pero el tema me interesa bastante, aunque he de reconocer que no he llegado a meterle mano nunca
realmente la consulta es principalmente para Hector, a raíz de algunos de sus comentarios [y de cara a descartar
volverme loco en el intento]
> 2) después de lo anterior... me gustaría si comentas el "como" hacer una combinación de correspondencia (en Word) que
> repita n_etiquetas de un mismo campo combinado cuidando que el formato no exceda de las 25 etiquetas disponibles en el
> papel (engomado ?) y continue hasta agotar los registros (IdCompra) del origen de la combinación de
> rrespondencia -??
hola Hector, a la espera de desguazar tu codigo para entenderlo, permíteme que te haga algunas consultas sobre lo
puntualizado por ti en este ultimo mensaje. Sobre todo para, si no es posible, olvidarme de ello.
el tema de la impresión de etiquetas de productos en base al stock/pedido/etc reflejado en un campo de una tabla fue
(junto a los formateos y gestión de inventarios [lo mismo hasta te acuerdas de mi 1er. mensaje por estos pagos]) uno de
los motivos iniciales de mi actual adicción a vba.
pero me temo que mi incapacidad de centrarme en algo hasta el final y/o por mucho tiempo me ha hecho tenerlo +/-
olvidado, a pesar de que posiblemente seria de las pocas cosas que actualmente me serian de utilidad [materialmente
hablando] en lo que a VBA se refiere (aunque he de confesar que también ha influido en mi 'relajacion' la adquisición de
una etiquetadota con software propio, aunque horrible y limitado/limitante hasta la exasperación)
bueno todo este rollo es porque este hilo me ha hecho pensar en retomar el tema, pero la vía por la que siempre había
pensado que quizás podría haber alguna posibilidad (aparte de algo parecido <remotamente pero en la misma tónica> a tu
propuesta ), era precisamente la 'combinacion' de tablas y 'combinar correspondencia'.
al ver tu respuesta empiezo a pensar que no debe de ser tan fácil. Antes de tener la etiquetadora solía hacer las
etiquetas por dos vías (tres con la del boli.je, je..),
(NOTA: en mi caso suelo trabajar con etiquetas de 4 o 5 cm x 2 cm como mucho, e incluso bastante mas
pequeñas (en los casos que comento se trata de etiquetas autoadhesivas que vienen en DINA 4, y dependiendo del tamaño de
la etiq. agrupadas en x columnas por y filas))
1ª) mediante el ajuste vía prueba error que comentabas y rellenando los registros con una macro que llenaba
tantas celdas como etiq. hubiera que imprimir por registro, pero las ultimas filas acababan siempre descuadradas, con el
consiguiente desperdicio de etiquetas
2ª) usando sobres y etiquetas en Word, creando un nuevo documento de etiquetas bien sobre un modelo/marca ya
integrado (pej. aply 1284) o personalizándolo. En este caso el desperdicio de etiquetas es mínimo, pero tenia que
rellenar (como Darío) a base de copiar/pegar registro a registro tantas veces como fuese necesario
en fin, que siempre había puesto mis esperanzas en que fuese posible una especie de combinación de ambos métodos, es
decir, rellenar las etiquetas de Word mediante un macro.
hoy he estado por 1ª vez echándole un ojo a algunos objetos/propiedades/métodos de VBaWord y aunque tras leer tu mensaje
me han entrado las dudas, hubiera pensado que quizás seria posible [curiosamente lo que me ha parecido que quizás
tendría(/¿podría?) que usarse son el objeto, propiedad y método Range, <y quizás también cell/s y Row y Column>. pero de
Word]
bueno, resumiendo, todo este rollo para estas dudas (no tengo ni idea de Word, así que si digo alguna burrada, lo
siento):
1º ¿Seria posible rellenar las etiquetas de un documento de Word con el contenido de una tabla?
2º de no ser así, ¿lo seria con los ítems de una lista de Word con párrafos numerados? y de ser esto posible ¿Cómo se
podría rellenar dicha lista desde una tabla de excel, haciendo corresponder la numeración de los párrafos con cada
registro x su nº de veces?
3º ¿crees que existe alguna forma +/- accesible para realizar algo parecido?
bueno, si puedes/podéis aclararme un poco el tema y por donde ir mirando (o si simplemente saldrá mas caro el caldo que
las albóndigas ... ), seguramente me ahorrare algún que otro coscorrón
un saludo
y gracias en cualquier caso
Ivan
> el tema de la impresion de etiquetas... en base al stock/pedido/etc reflejado en un campo de una tabla
> fue junto a los formateos y gestion de inventarios... uno de los motivos iniciales de mi actual adiccion a vba.
=> concatenar con formato (consulta de mayo 2006) ?
> ... ha influido en mi 'relajacion'... una etiquetadota con software propio aunque horrible y limitado/limitante ...
> ... este hilo me ha hecho pensar en retomar el tema... via... la 'combinacion' de tablas y 'combinar correspondencia'.
> ... empiezo a pensar que no debe de ser tan facil. Antes... solia hacer las etiquetas por dos vias (tres con la del boli.je, je..)
> 1) mediante el ajuste via prueba error... y... una macro que llenaba tantas celdas como etiq. hubiera que imprimir por registro
> pero las ultimas filas acababan siempre descuadradas, con el consiguiente desperdicio de etiquetas
> 2) usando sobres y etiquetas en Word, creando un nuevo documento de etiquetas bien sobre un modelo/marca ya integrado (pej. aply 1284)
> o personalizandolo. En este caso el desperdicio de etiquetas es minimo, pero tenia que rellenar (como Dario)
> a base de copiar/pegar registro a registro tantas veces como fuese necesario
=> la intencion/idea/... de la macro propuesta es precisamente (tratar de) evitar el desperdicio y/o impresiones "en blanco"
lo importante/necesario/entendido/... es tener un formato "imprimible" (en excel) que se ajuste a las dimensiones del papel/etiquetas
> ... siempre habia puesto mis esperanzas en que fuese posible una especie de combinacion de ambos metodos
> ... rellenar las etiquetas de Word mediante un macro... echandole un ojo a algunos objetos/propiedades/metodos de VBaWord
> y aunque tras leer tu mensaje me han entrado las dudas, hubiera pensado que quizas seria posible
> [curiosamente lo que me ha parecido que quizas tendria(/podria?) que usarse son el objeto, propiedad y metodo Range
> <y quizas tambien cell/s y Row y Column>. pero de Word]
=> (honestamente) me resulta mas facil administrar n_etiquetas de cada producto para llenar un listado "imprimible"...
en excel... que en word :-(( (con mis disculpas para quien tenga mas experiencia en word y pudiera estar en desacuerdo) :D
> 1 Seria posible rellenar las etiquetas de un documento de Word con el contenido de una tabla?
> 2 de no ser asi, lo seria con los ítems de una lista de Word con parrafos numerados?
=> (hasta donde se) los campos en combinacion de correspondencia en word se actualizan (p.e. al imprimir el documento)
un registro (fila en la tabla) por combinacion/impresion segun n_campos (columnas en excel) en el documento -?-
> y de ser esto posible Como se podria rellenar dicha lista desde una tabla de excel
> haciendo corresponder la numeracion de los parrafos con cada registro x su no. de veces?
=> "esto es" (precisamente) lo que le pregunte a Davo:
"me gustaria si comentas el "como" hacer una combinacion de correspondencia (en word)"
"que repita n_etiquetas de un mismo campo combinado"
"cuidando que el formato no exceda de las 25 etiquetas disponibles en el papel (engomado ?)"
"y continue hasta agotar los registros (IdCompra) del origen de la combinacion de correspondencia -???-"
> 3 crees que existe alguna forma +/- accesible para realizar algo parecido?
=> prueba con la propuesta a Darío (obviamente con los supuestos y el rango de impresion "ajustado" al papel/etiquetas)
(insisto) este caso es (para mi) mas facil de administrar en directo desde excel... que en word
si alguien nos regala de su experiencia en word con la respuesta a la pregunta que hice a Davo...
(yo sere el primero en "sacarle provecho") ;)
saludos,
hector.
hola Hector,
gracias por la respuesta.
en realidad el principal motivo de 'tirar' de word, era el ajuste
[casi] perfecto de los rangos de impresion de las etiquetas, gracias
sobre todo a la gran cantidad de marcas/modelos reconocidos por este,
y a la relativa facilidad y precision a la hora de personalizar
nuevos documentos de etiquetas.
de todas formas cuando usaba las 'tecnicas' descritas mis concimientos
de excel y/o vba eran casi nulos, y no conseguia ajustar los margenes
para conseguir un documento [casi] perfectamente ajustado a las hojas
de etiquetas correspondientes, con lo que las filas inferiores
acababan acumulando el descuadre que te comentaba
supongo que ahora ya si sere capaz de ajustar bastante las hojas para
que el descuadre sea minimo.
mañana mismo me liare a probar [y estudiar] tu macro a ver que tal. La
verdad es que me puede venir muy bien y creo que al menos una persona
por este lado tambien te lo va a agradecer.
un saludo y gracias de nuevo
Ivan
PD: de todas formas me sumo a tu comentario:=>
por cierto=>
>>=> concatenar con formato (consulta de mayo 2006) ?
por que sera que no me sorprende??
un saludo de nuevo y hasta pronto
Ivan
Mil gracias!
Tu código funciona espectacular!!! : )
Repite las etiquetas tantas veces como "cantidad comprada"
Si el último grupo de etiquetas de cada página no se completa, lo continúa
en la siguiente página (esta partecita hacerla manualmente es lento)
Hace una pausa en cada página para imprimir.
Es genial !!!
Lo que no entendí fué:
"sustituyes los MsgBox (lineas 12 y 28) por tus instrucciones de impresion"
Yo entendí que cuando aparece(n) el/los mensaje(s) "Etiquetas Completas !!!"
y/o "Último bloque de etiquetas !!!", al presionar "Aceptar" el código debe
imprimir el "rango de impresión" configurado y que debo agregarle a tu código
instrucciones de impresión por lo que yo agregué:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
después de la línea 12 y la 28 de tu código, por lo que se imprimen las
etiquetas página por página a medida se va presionando "Aceptar" con cada uno
de los mensajes.
Ojo!!! No es que yo sepa de código, sino que yo grabé en una macro la acción
de presionar el botón de impresión, luego abrí el código y lo copié y pegué
en tu código.
Luego cambié en tu código:
With Worksheets("compras")
For Fila_Id = 2 To 3 ' .Range("a65536").End(xlUp).Row
Cant_Id = .Range("e" & Fila_Id)
El "2 to 3" por el rango de filas que deseo imprimir etiquetas de la hoja
compras.
Supongo que tu sabes como modificar tu código para que me pregunte el rango
de etiquetas que deseo imprimir a través de un cuadro de diálogo en lugar de
entrar al código y modificarlo.
Por favor, podrías decirme como se hace?
Por cierto, el rango de impresión si es a partir de la línea 28 y no uso
etiquetas engomadas o autoadesivas, sino fichas de cartulina, fichas de papel
grueso que se fijan a las prendas de vestir con una pistolita que dispara
grapas plásticas. Estas fichas las obtengo recortando las hojas de papel
grueso o cartulina tamaño carta con una guillotina.
Saludos,
Griego59
"Héctor Miguel" escribió:
__ 1 __
> Lo que no entendi fue:
> "sustituyes los MsgBox (lineas 12 y 28) por tus instrucciones de impresion"
1) la intencion de los mensajes era solo para comprobar si te satisfacia el llenado de las 25 lineas en la hoja "etiquetas"
una vez cumplida la comprobacion, y si no quieres "perder el tiempo contestando" a cada MsgBox (agilizas la impresion)
solo necesitas hacer los siguientes cambios (o dejarlo como lo tienes ya adaptado):
a) cambia esta parte:
If Libres = 0 Then
MsgBox "Etiquetas completas !!!"
Range("b2:b26").ClearContents
End If
-> por esta otra:
If Libres = 0 Then
ActiveSheet.PrintOut
Range("b2:b26").ClearContents
End If
b) y cambias esta parte:
If Evaluate("counta(b2:b26)") Then MsgBox "Ultimo bloque de etiquetas !!!"
-> por esta otra:
If Evaluate("counta(b2:b26)") Then ActiveSheet.PrintOut
__ 2 __
> Luego cambie en tu codigo:
> With Worksheets("compras")
> For Fila_Id = 2 To 3 ' .Range("a65536").End(xlUp).Row
> Cant_Id = .Range("e" & Fila_Id)
> El "2 to 3" por el rango de filas que deseo imprimir etiquetas de la hoja compras.
> ... para que me pregunte el rango de etiquetas que deseo imprimir a traves de un cuadro de dialogo
> en lugar de entrar al codigo y modificarlo... podrias decirme como se hace?
2) una forma +/- interactiva/amigable/dinamica/... es si pones en dos celdas las filas inicial y final a imprimir (de la hoja "compras")
-> en dos celdas de la misma hoja "etiquetas" (p.e. [J1] la fila inicial [J2] la fila ultima a imprimir
-> solo asegurate de que estas dos celdas siempre esten "ocupadas" y con la siguiente convencion:
[J1] a partir de 2 (Y MENOR QUE LA SIGUIENTE):
[J2] mayor o igual que 2 PERO menor o igual a la ultima fila ocupada en la hoja "compras"
una vez ajustado este tema, podrias modificar la instruccion "For ... 2 To 3" de la siguiente forma:
-> cambia esta parte:
For Fila_Id = 2 To 3 ' .Range("a65536").End(xlUp).Row
-> por esta otra:
For Fila_Id = [J1] To [J2]
Mil gracias!!!
Quedó espectacular tu propuesta!!! : )
La verdad no hace mucha falta una pausa al terminar de imprimir cada hoja,
así como lo propones, todo de una vez es mejor.
Indicar al sistema "desde y hasta" desde dos celdas es muy cómodo y
conveniente!!!
Saludos,
Darío
"Héctor Miguel" escribió:
> => .... (obviamente con los supuestos y el rango de impresion "ajustado" al papel/etiquetas)
disculpa que vuelva a molestarte, pero me estoy volviendo loco
intentando ajustar el rango a un modelo concreto de etiquetas
(Apli-1282)
el problema [creo] viene de los dichosos saltos de 0,75 puntos en el
alto de fila. Te explico las caracteristicas de la hoja, a ver si se
te ocurre algo=>
.->Hoja de dina4 con 68 etiquetas (4 col. X 17 filas)
.->margen superior de 0,5 cm (aprox) , el inferior +/-
.->margen izquierdo 0,8 cm (aprox) el dcho +/-
.->no tiene margenes internos (van juntas/pegadas unas a las otras)
.->alto de etiquetas = 1,69 cm (47,91 puntos aprox)
.->ancho 4,85 cm (137,48 puntos) aunque el ancho no es problema
bueno, por un lado creo que debido a [los margenes de] la impresora
(HP de las baratas) me va a ser imposible usar la ultima fila, asi que
consideremos que tiene 16 filas
el problema viene de que los dos multiplos de 0,75 mas cercanos me
descuadran la etiqueta (0,66 ptos si le doy el inferior <47,25> y/o
0,09 si le aplico el superior <48,00>), y aunque en las primeras filas
no se nota al final el acumulado hace que no cuadre el texto con la
etiqueta
de momento estoy probando a ir descuadrando algunas filas con el
superior y cada x filas intentar 'cuadrar un poco con el inferior,
pero debo estar muy torpe y no doy con la combinacion que me permita
mantener el texto (2 o 3 lineas) dentro de la etiqueta
tambien habia pensado en usar el inferior e insertar una fila no
imprimible de 0,75 cada x filas. Pero aunque supongo que adptar la
macro no seria demasiado problema, sigo sin verlo claro en cuanto al
ajuste de las etiquetas.
en fin, la consulta es, por un lado, y aunque creo que no es posible:
¿hay alguna manera de ajustar las filas a medidas que esten fuera del
intervalo de 0,75?
por otro lado, y aunque es casi OT, no conoceeras (o conocereis) algun
fabricante +/- comercilizado a nivel internacional (o al menos en
españa ) que trabaje etiquetas de este tipo pero con medidas ajustadas
a los requisitos de Excel en cuanto a lo comentado se refiere. O algun
modelo en concreto de etiquetas +/- pequeñas que cumplan esta
condicion (al menos que el alto sea un multiplo de 0,75)
bueno, aparte si se te/os ocurre alguna combinacion de alturas para
ajustar +/- las etiquetas comentadas, tambien se agradeceria
en cualquier caso de nuevo muchas gracias
un saludo
Ivan
(hasta donde se) el detalle de necesitar/querer ajustar "al milimetro" las medidas de celdas (excel)
para (tratar de) "encajar" sus textos en lugares "especificos" de (p.e.) formatos pre-impresos...
"ya trae lo suyo" :D
1) no te aseguro que obtendras medidas EXACTAS (de cierto que)... habra alguna variacion -supongo que-... aceptable ? :))
2) al final del presente te propongo dos alternativas (que son perfectamente modificables/adaptables/...)
para ajustar a medidas (centimetros, milimetros, ...) el alto y ancho de una celda (p.e. la celda activa)
3) de todas formas (y solo por si las...) transcribo las consideraciones (que considero) relevantes para tomar en cuenta :))
si cualquier duda (o informacion adicional)... comentas?
saludos,
hector.
a) toma muy en cuenta que...
los ajustes posibles del ancho de una columna SOLO se pueden dar en 6 intervalos entre un entero y el siguiente...
0.17, 0.33, 0.50, 0.67, 0.83 y 1.00 (1 seria el siguiente entero) y son medidas =>en puntos<= (p.e.)
si tratas de establecer (aun por codigo) el ancho de una columna en 12.25 (finalmente) quedara en 12.33 :(
intervalos que se deberan tener en cuenta si se pretende ajustar a medidas en centimetros, pulgadas, -???-
b) con respecto de las propiedades de medidas de los objetos...
- ColumnWidth devuelve el ancho de la columna (basado en la fuente normal... en uso)
- Width y RowHeight devuelven una medida en puntos (1/72 de pulgada... 72 pixeles por pulgada)
- la propiedad RowHeight (la altura de una fila) NO puede exceder de 409.5 puntos
- Zoom (aplicable a un objeto Window) afecta la proporcionalidad entre ambos tipos de medida
- la resolucion de salida (impresora) puede mostrar proporcionalidades diferentes (vs. pantalla)
- en las propiedades de la pantalla (windows) cada usuario puede personalizar los puntos por pulgada
- se necesita factorizar las diferentes unidades de medida (etc. etc. etc.)
c) el ejemplo que te expongo en seguida, ajusta las dimensiones de la celda activa a un cuadrado de +/- 12 cms
puedes adaptarlo para trabajar con grupos/bloques de celdas y/o por medio de bucles/ciclos
NO te aseguro que las medidas sean exactas (por los factores) pero... de que la celda se cuadra... se cuadra !!! :))
=== en un modulo de codigo normal ===
Sub CuadrarCeldaActiva()
Dim Cms As Double, Fx As Double
Cms = 12
With ActiveCell
.ColumnWidth = Cms
Fx = .Width / .ColumnWidth
.ColumnWidth = Application.CentimetersToPoints(Cms) / Fx
Fx = .Width / .ColumnWidth
.RowHeight = .ColumnWidth * Fx
End With
End Sub
d) otra forma de dimensionar alto de fila y ancho de columna...
=== en un modulo de codigo normal ===
Sub CeldaActivaEnMilimetros()
Dim Ancho As Single, Alto As Single, Fx As Single, Fy As Single
Ancho = 80 <= indica al ancho en milimetros
Alto = 80 <= indica al alto en milimetros
Ancho = Ancho / 10
Alto = Alto / 10
Fy = Alto / Ancho
With ActiveCell
.ColumnWidth = Ancho
Fx = .Width / .ColumnWidth
.ColumnWidth = Application.CentimetersToPoints(Ancho) / Fx
Fx = .Width / .ColumnWidth
.RowHeight = .ColumnWidth * Fx * Fy
End With
End Sub
__ la consulta original __
> ... me estoy volviendo loco intentando ajustar el rango a un modelo concreto de etiquetas (Apli-1282)
> el problema [creo] viene de los dichosos saltos de 0,75 puntos en el alto de fila.
> Te explico las caracteristicas de la hoja, a ver si se te ocurre algo=>
.->Hoja de dina4 con 68 etiquetas (4 col. X 17 filas)
.->margen superior de 0,5 cm (aprox) , el inferior +/-
.->margen izquierdo 0,8 cm (aprox) el dcho +/-
.->no tiene margenes internos (van juntas/pegadas unas a las otras)
.->alto de etiquetas = 1,69 cm (47,91 puntos aprox)
.->ancho 4,85 cm (137,48 puntos) aunque el ancho no es problema
> bueno, por un lado creo que debido a [los margenes de] la impresora (HP de las baratas)
> me va a ser imposible usar la ultima fila, asi que consideremos que tiene 16 filas
> el problema viene de que los dos multiplos de 0,75 mas cercanos me descuadran la etiqueta
> (0,66 ptos si le doy el inferior <47,25> y/o 0,09 si le aplico el superior <48,00>)
> y aunque en las primeras filas no se nota al final el acumulado hace que no cuadre el texto con la etiqueta
> de momento estoy probando a ir descuadrando algunas filas con el superior y cada x filas intentar 'cuadrar un poco con el inferior
> pero... no doy con la combinacion que me permita mantener el texto (2 o 3 lineas) dentro de la etiqueta
> tambien habia pensado en usar el inferior e insertar una fila no imprimible de 0,75 cada x filas.
> Pero aunque supongo que adptar la macro no seria demasiado problema, sigo sin verlo claro en cuanto al ajuste de las etiquetas.
> en fin, la consulta es, por un lado, y aunque creo que no es posible:
> hay alguna manera de ajustar las filas a medidas que esten fuera del intervalo de 0,75?
> por otro lado, y aunque es casi OT, no conoceeras (o conocereis) algun fabricante +/- comercilizado a nivel internacional
> (o al menos en espana ) que trabaje etiquetas de este tipo pero con medidas ajustadas a los requisitos de Excel...
solo darte las gracias una vez mas
(estaba esperando a lograr una adaptacion de tus propuestas que
automatizara la tarea para [casi] cualquier etiqueta, pero no he
tenido oportunidad [o cabeza] para meterle a fondo y sigo con algunos
descuadres en cuanto al tamaño final y posicion (me temo que la
impresora tiene mucho que ver)
asi que, como no se lo que tardare, no queria dejar de agradecerte tu
ayuda, que por otro lado creo que da bastantes posibilidades/ideas
para encarar el tema, aparte de algunos datos que nunca acabo de
recordar
por cierto los intervalos que das para columnwidth son en puntos y
supongo que los que se muestran cuando aplicamos el cursor a la linea
de columna son en ¿twips?, de ahi la diferencia. Lo curioso es que en
twips tiene un intervalo mas, haciendolos dificilmente relacionables.
Solo es un comentario pues en cualquier caso es cuestion de usar el
que interese en cada caso. Pero me ha llamado la atencion
lo dicho, un saludo y muchas gracias
Ivan
PD: si encuentro como ajustarlos mas en base a lo que me hace falta en
un plazo razonable, te/lo comento