You are on page 1of 6

Como hago para generar un código de barras con los campos que tengo " nombre" "dni

"
"teléfono", todos seguidos .IIIIIIIIII IIIIIIIII IIIIIIIIII IIIIIIIII
Y luego leerlos con un lector pero que me los separe por campos diferentes?
nombre
dni
teléfono
La idea es extraer los datos de una base transformarlos en código de barras, y después
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:
nombreIdniIteléfonos

La otra persona que abra el archivo debe seleccionar toda la información y seleccionar la
opción de datos, texto en columnas, delimitados, otro. En otro ingresa I y con eso se
separa.
Usuario
La idea es cuando lea el código de barras el lector lo separe en campos diferentes, no
quiero usar la función de texto en columna.
Entonce tengo un código 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 código de
barras y cuando les pasamos el lector nos los separa en diferentes campos .
Muchas gracias por las repuesta . Martin

Experto
Si la información 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 información 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 información 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 días,
mi pregunta es la siguiente:
Estoy trabajando
en un libro Excel en el cual ingreso determinados datos, por ejemplo:
(celdas A1:C1)
Código 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 código de barras, hasta aquí todo bien, el tema es que quiero que al leer el código
con la pistola, esta reconozca cuando separar los valores con un “enter”, o sea,
los acomode nuevamente en celdas separadas, la cuestión quedaría 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 serán volcados en el sistema de gestión
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...¿podrías 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 función es algo de lo que necesito, también me genera un error:
al convertir los datos a código de barra, genera en los lugares del Chr(10) o Chr(13) un
rectángulo 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 básicamente 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
Después de un buen rato buscando información por internet, de ver los tres pasos para la realización de
este cálculo y ver como alguno ofrece alguna solución para Excel que no es correcta, a continuación
pongo mi fórmula de EXCEL para el cálculo del dígito de control de los códigos de barra EAN-13. Se
supondrá que el número de 12 dígitos estará en la casilla B8 y en la C8 o D8 pondremos la fórmula que
ella, en sí misma nos ofrecerá el código 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 dígito 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 teoría.
El proceso de cálculo es muy sencillo, basta con seguir tres puntos:
*Numerando el código de Derecha a Izquierda, se multiplican por 1 los
dígitos que ocupan posición par, y por tres los dígitos que ocupan posición
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 dígito de control.
Ejemplo práctico:
(12) (11) (10) (9) (8) (7) (6) (5) (4) (3) (2) (1) Numeración
8 4 1 2 3 4 5 6 7 8 9 1 Código EAN-13 sin dígito de Control
1 3 1 3 1 3 1 3 1 3 1 3 Primer Paso (el multiplicador para cada posición)
8 12 1 6 3 12 5 18 7 24 9 3 Resultados (de la multiplicación)
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 DÍGITO DE CONTROL
EL CÓDIGO COMPLETO ES: 84 12345 67891 2


Hola Men, agradezco esta solucion, me salvaste la vida solo hay que hacerle una pequeña 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..