You are on page 1of 6

Como hago para generar un cdigo de barras con los campos que tengo " nombre" "dni"

"telfono", todos seguidos .IIIIIIIIII IIIIIIIII IIIIIIIIII IIIIIIIII


Y luego leerlos con un lector pero que me los separe por campos diferentes?
nombre
dni
telfono
La idea es extraer los datos de una base transformarlos en cdigo de barras, y despus
transcribirlos en otra base.
Experto
Puedes utilizar la formula de concatenar as:
=CONCATENAR(A2;"I";B2;"I";C2)
al utilizar esta formula, el resultado que veras es:
nombreIdniItelfonos

La otra persona que abra el archivo debe seleccionar toda la informacin y seleccionar la
opcin de datos, texto en columnas, delimitados, otro. En otro ingresa I y con eso se
separa.
Usuario
La idea es cuando lea el cdigo de barras el lector lo separe en campos diferentes, no
quiero usar la funcin de texto en columna.
Entonce tengo un cdigo de barras IIIIIIIIIi que contiene nombre apellido dni y cuando lo
leeo con el lector de barras los separe en los tres campos.
No se si soy claro, les comento que mi trabajo tenemos hojas que vienen con cdigo de
barras y cuando les pasamos el lector nos los separa en diferentes campos .
Muchas gracias por las repuesta . Martin

Experto
Si la informacin se encuentra en una columna, puedes utilizar la siguiente macro


Sub separar()

MsgBox ("Ejecutar Macro")

Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited,
_
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _
TrailingMinusNumbers:=True

MsgBox ("Listo!!!!")

End Sub

La macro se ejecuta, siempre y cuando la informacin se encuentre en la columna A.
(puedes variarlo segun donde se encuentre la info)

Cualquier duda, me puedes enviar el archivo para mirarlo,

Si la informacin se encuentra en una columna, puedes utilizar la siguiente macro


Sub separar()

MsgBox ("Ejecutar Macro")

Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited,
_
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _
TrailingMinusNumbers:=True

MsgBox ("Listo!!!!")

End Sub


Buenos das,
mi pregunta es la siguiente:
Estoy trabajando
en un libro Excel en el cual ingreso determinados datos, por ejemplo:
(celdas A1:C1)
Cdigo de
articulo deposito cantidad
(celdas
A2:C2)
10202030
1 1120
La consulta
es la siguiente: En la celda A3 junto todos los datos (1020203011120) y los transformo
a cdigo de barras, hasta aqu todo bien, el tema es que quiero que al leer el cdigo
con la pistola, esta reconozca cuando separar los valores con un enter, o sea,
los acomode nuevamente en celdas separadas, la cuestin quedara algo as
10202030 (ENTER) 1 (ENTER) 1120 (ENTER).
Antes que
pregunten, se que en Excel para cambiar a la celda contigua se usa el TAB, YO
NECESITO QUE SEA ENTER ya que los datos sern volcados en el sistema de gestin
de la empresa y el usa ENTER para moverse entre reas de texto.
se
entiende mi problema o es muy complicado?.
Desde ya
espero que alguien pueda ayudarme con mi problema. Gracias

concatena la cadena insertando chr(32) retorno carro

10202030 & chr(32) 1 & chr(32) 1120 & chr(32)

eso mediante macro

perdona, pero estoy medio complicado con las macros y no se como crear una, solo he
aprendido a grabar alguna que otra sencilla...podras darme una mano?
claro

ejemplo
Sub concatena()
[d1] = [A1] & Chr(10) & Chr(13) & [b1] & Chr(10) & Chr(13) & [c1] & Chr(10) & Chr(13)
End Sub

esto toma los valores de celdas a1 b1 c1 y los concatena en d1 incluyendo saltos de pagina
perdona nuevamente, pero debo de estar haciendo algo mal.
si bien la funcin es algo de lo que necesito, tambin me genera un error:
al convertir los datos a cdigo de barra, genera en los lugares del Chr(10) o Chr(13) un
rectngulo que la pistola no reconoce... estoy haciendo algo mal?.
otra pregunta, como hago para que la macro se active al salir de la celda en la que estoy
cargando los datos? disculpa que sea tan molesto
mira bsicamente un enter es insercion de linea y retorno de carro. que en el fondo es el
"recuadro" que te aparece, no es un error, solo que el enter es un "carater no imprimible", en
ascii todos los caracteres no imprimibles aparecen con ese cuadrado. tu querias un enter y eso
puse.

respecto a activar un macro al salir de una celda debes utilizar el evento SelectionChange
del objeto hoja... desde el editor de vbasic alt+f11 das doble click sobre la "hoja" en que deseas
realizar el macro y luego haces la llamada al macro: ejemplo:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
call tu_macro

End Sub
Despus de un buen rato buscando informacin por internet, de ver los tres pasos para la realizacin de
este clculo y ver como alguno ofrece alguna solucin para Excel que no es correcta, a continuacin
pongo mi frmula de EXCEL para el clculo del dgito de control de los cdigos de barra EAN-13. Se
supondr que el nmero de 12 dgitos estar en la casilla B8 y en la C8 o D8 pondremos la frmula que
ella, en s misma nos ofrecer el cdigo de barras completo:






=CONCATENAR(B8;MULTIPLO.SUPERIOR((VALOR(EXTRAE(TEXTO(B8;0);1;1))*1)+(VALOR(EXTRAE
(TEXTO(B8;0);2;1))*3)+(VALOR(EXTRAE(TEXTO(B8;0);3;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);4;1))*3
)+(VALOR(EXTRAE(TEXTO(B8;0);5;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);6;1))*3)+(VALOR(EXTRAE(T
EXTO(B8;0);7;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);8;1))*3)+(VALOR(EXTRAE(TEXTO(B8;0);9;1))*1)+
(VALOR(EXTRAE(TEXTO(B8;0);10;1))*3)+(VALOR(EXTRAE(TEXTO(B8;0);11;1))*1)+(VALOR(EXTRAE(
TEXTO(B8;0);12;1))*3);10)-
((VALOR(EXTRAE(TEXTO(B8;0);1;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);2;1))*3)+(VALOR(EXTRAE(T
EXTO(B8;0);3;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);4;1))*3)+(VALOR(EXTRAE(TEXTO(B8;0);5;1))*1)+
(VALOR(EXTRAE(TEXTO(B8;0);6;1))*3)+(VALOR(EXTRAE(TEXTO(B8;0);7;1))*1)+(VALOR(EXTRAE(TE
XTO(B8;0);8;1))*3)+(VALOR(EXTRAE(TEXTO(B8;0);9;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);10;1))*3)+(
VALOR(EXTRAE(TEXTO(B8;0);11;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);12;1))*3)))
En caso de querer el dgito de control aislado:
=(VALOR(EXTRAE(TEXTO(B8;0);1;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);2;1))*3)+(VALOR(EXTRAE(T
EXTO(B8;0);3;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);4;1))*3)+(VALOR(EXTRAE(TEXTO(B8;0);5;1))*1)+
(VALOR(EXTRAE(TEXTO(B8;0);6;1))*3)+(VALOR(EXTRAE(TEXTO(B8;0);7;1))*1)+(VALOR(EXTRAE(TE
XTO(B8;0);8;1))*3)+(VALOR(EXTRAE(TEXTO(B8;0);9;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);10;1))*3)+(
VALOR(EXTRAE(TEXTO(B8;0);11;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);12;1))*3)-
MULTIPLO.SUPERIOR((VALOR(EXTRAE(TEXTO(B8;0);1;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);2;1))*3
)+(VALOR(EXTRAE(TEXTO(B8;0);3;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);4;1))*3)+(VALOR(EXTRAE(T
EXTO(B8;0);5;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);6;1))*3)+(VALOR(EXTRAE(TEXTO(B8;0);7;1))*1)+
(VALOR(EXTRAE(TEXTO(B8;0);8;1))*3)+(VALOR(EXTRAE(TEXTO(B8;0);9;1))*1)+(VALOR(EXTRAE(TE
XTO(B8;0);10;1))*3)+(VALOR(EXTRAE(TEXTO(B8;0);11;1))*1)+(VALOR(EXTRAE(TEXTO(B8;0);12;1))*3
);10)
Ah queda eso y ahora un poco de teora.
El proceso de clculo es muy sencillo, basta con seguir tres puntos:
*Numerando el cdigo de Derecha a Izquierda, se multiplican por 1 los
dgitos que ocupan posicin par, y por tres los dgitos que ocupan posicin
impar.
*Se suman los valores de los productos obtenidos.
*Se busca la decena superior al resultado de la suma anterior y se restan
estos dos valores. El resultado obtenido es el dgito de control.
Ejemplo prctico:
(12) (11) (10) (9) (8) (7) (6) (5) (4) (3) (2) (1) Numeracin
8 4 1 2 3 4 5 6 7 8 9 1 Cdigo EAN-13 sin dgito de Control
1 3 1 3 1 3 1 3 1 3 1 3 Primer Paso (el multiplicador para cada posicin)
8 12 1 6 3 12 5 18 7 24 9 3 Resultados (de la multiplicacin)
8+12+1+6+3+12+5+18+7+24+9+3 = 108 Segundo Paso (suma de todas las multiplicaciones)
Valor de la decena Superior . 110
Valor del resultado obtenido . 108
Diferencia = 2
Resultado de la Resta : 2 DGITO DE CONTROL
EL CDIGO COMPLETO ES: 84 12345 67891 2


Hola Men, agradezco esta solucion, me salvaste la vida solo hay que hacerle una pequea modificacion a
la formula para que jale perfecto, en lugar de ocupar ;, ocupamos ,, de lo contrario marca error excel al
intentar ejecutar la funcion. Por lo que queda asi:
=CONCATENAR(B8,MULTIPLO.SUPERIOR((VALOR(EXTRAE(TEXTO(B8,0),1,1))*1)+
(VALOR(EXTRAE(TEXTO(B8,0),2,1))*3)+(VALOR(EXTRAE(TEXTO(B8,0),3,1))*1)+
(VALOR(EXTRAE(TEXTO(B8,0),4,1))*3)+(VALOR(EXTRAE(TEXTO(B8,0),5,1))*1)+
(VALOR(EXTRAE(TEXTO(B8,0),6,1))*3)+(VALOR(EXTRAE(TEXTO(B8,0),7,1))*1)+
(VALOR(EXTRAE(TEXTO(B8,0),8,1))*3)+(VALOR(EXTRAE(TEXTO(B8,0),9,1))*1)+
(VALOR(EXTRAE(TEXTO(B8,0),10,1))*3)+(VALOR(EXTRAE(TEXTO(B8,0),11,1))*1)+
(VALOR(EXTRAE(TEXTO(B8,0),12,1))*3),10)-((VALOR(EXTRAE(TEXTO(B8,0),1,1))*1)+
(VALOR(EXTRAE(TEXTO(B8,0),2,1))*3)+(VALOR(EXTRAE(TEXTO(B8,0),3,1))*1)+
(VALOR(EXTRAE(TEXTO(B8,0),4,1))*3)+(VALOR(EXTRAE(TEXTO(B8,0),5,1))*1)+
(VALOR(EXTRAE(TEXTO(B8,0),6,1))*3)+(VALOR(EXTRAE(TEXTO(B8,0),7,1))*1)+
(VALOR(EXTRAE(TEXTO(B8,0),8,1))*3)+(VALOR(EXTRAE(TEXTO(B8,0),9,1))*1)+
(VALOR(EXTRAE(TEXTO(B8,0),10,1))*3)+(VALOR(EXTRAE(TEXTO(B8,0),11,1))*1)+
(VALOR(EXTRAE(TEXTO(B8,0),12,1))*3)))..Saludos Marco..