como hago para generar un código

Upload: luis-gomez

Post on 14-Oct-2015

10 views

Category:

Documents


0 download

TRANSCRIPT

Como hago para generar un cdigode barras con los campos que tengo " nombre" "dni" "telfono", todos seguidos .IIIIIIIIII IIIIIIIIIIIIIIIIIII IIIIIIIIIY luego leerlos con un lector pero que me los separe por campos diferentes?nombrednitelfonoLa idea es extraer los datos de una base transformarlos en cdigo de barras, y despus transcribirlos en otra base.ExpertoPuedes utilizar la formula de concatenar as:=CONCATENAR(A2;"I";B2;"I";C2)al utilizar esta formula, el resultado que veras es:nombreIdniItelfonosLa 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.UsuarioLa 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 . MartinExpertoSi la informacin se encuentra en una columna, puedes utilizar la siguiente macroSub 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 SubLa 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 macroSub 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 trabajandoen un libro Excel en el cual ingreso determinados datos, por ejemplo:(celdas A1:C1)Cdigo dearticulo deposito cantidad(celdasA2:C2)10202030 1 1120La consultaes la siguiente: En la celda A3 junto todos los datos (1020203011120) y los transformoa cdigo de barras, hasta aqu todo bien, el tema es que quiero que al leer el cdigocon la pistola, esta reconozca cuando separar los valores con un enter, o sea,los acomode nuevamente en celdas separadas, la cuestin quedara algo as10202030 (ENTER) 1 (ENTER) 1120 (ENTER).Antes quepregunten, se que en Excel para cambiar a la celda contigua se usa el TAB, YONECESITO QUE SEA ENTER ya que los datos sern volcados en el sistema de gestinde la empresa y el usa ENTER para moverse entre reas de texto.seentiende mi problema o es muy complicado?.Desde yaespero que alguien pueda ayudarme con mi problema. Gracias

concatena la cadena insertando chr(32) retorno carro10202030 & chr(32) 1 & chr(32) 1120 & chr(32)eso mediante macroperdona, 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?claroejemploSub concatena()[d1] = [A1] & Chr(10) & Chr(13) & [b1] & Chr(10) & Chr(13) & [c1] & Chr(10) & Chr(13)End Subesto toma los valores de celdas a1 b1 c1 y los concatena en d1 incluyendo saltos de paginaperdona 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 molestomira 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 SelectionChangedel 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 SubDespus 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 deEXCELpara el clculo del dgito de control de los cdigos de barraEAN-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 smisma 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(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)))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(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)-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)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 losdgitos que ocupan posicin par, y por tres los dgitos que ocupan posicinimpar.*Se suman los valores de los productos obtenidos.*Se busca la decena superior al resultado de la suma anterior y se restanestos dos valores. El resultado obtenido es el dgito de control.Ejemplo prctico:(12) (11) (10) (9) (8) (7) (6) (5) (4) (3) (2) (1) Numeracin8 4 1 2 3 4 5 6 7 8 9 1 Cdigo EAN-13 sin dgito de Control1 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 . 110Valor del resultado obtenido . 108Diferencia = 2Resultado de la Resta : 2 DGITO DE CONTROLEL 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..