Rellenar tabla automáticamente en excel con datos procedentes de otra hoja de excel.

Necesito que una tabla de excel se me rellene automáticamente con datos que proceden de otra tabla de excel que se alimenta de los datos que le genera una maquina de medición por coordenadas. No se si es mejor crear una hoja en el primer archivo de excel o crear un archivo nuevo con la tabla que deseo que me rellene. Lo que hace la maquina es mido una pieza(pieza1) y me da todas las medidas que necesito, luego mido pieza2 y lo mismo y así sucesivamente, pero los datos los quiero conservar en una tabla con todas las mediciones que hago. He conseguido que me rellene una fila pero siempre me sobreescribe la misma y necesito que vaya rellenado filas a medida que mido piezas. Los datos proceden de una mauina de medición por coordenadas mitutoyo con software Mcosmos v3.2

Gracias de antemano

1 Respuesta

Respuesta
1

¿Estos son todos los datos o has reducido para hacer el ejemplo?

Si estos son, con un buscarv ya podrías caer la tabla

Los datos que me da la primera foto son lo que proporciona el software de medición, lo deja un poco desordenado todo, luego los meto en la tabla de la segunda foto. Los datos de la primera foto se modifican cada ve que mido una pieza y se actualizan en la segunda tabla, pero lo que quiero es que esta segunda tabla los datos se queden fijos, ejemplo pieza1 y todas sus medidas, mido otra pieza y la primera fila me deje los datos que están y en una segunda fila, pieza2 y todas sus medidas, y así con toda la serie de piezas. Que pueden ser hasta 100 piezas y filas. No se si me explico.

El código que necesitas es este:

Sub copiar_pegar()
Set h1 = Workbooks("MMampo.xls").Sheets("MMampo.xls")
Set h2 = Workbooks("datos mm.xlsm").Sheets("Hoja1")
h2.Activate
u = Range("A" & Rows.Count).End(xlUp).Row + 1
h2.Cells(u, "A") = h1.[A1]
h2.Cells(u, "B") = h1.[C4]
h2.Cells(u, "C") = h1.[C6]
h2.Cells(u, "D") = h1.[C9]
h2.Cells(u, "E") = h1.[C11]
h2.Cells(u, "F") = h1.[C12]
h2.Cells(u, "G") = h1.[C13]
End Sub

Eso es lo que me pone, estoy muy verde en el tema de macros, no se si va ahí, hoy que ponerla en otro lado, si la tabla debe estar abierta cuando hago las mediciones o debe esta cerrada, la macro se ejecuta automáticamente o hay que activarla, perdona las molestias

Tienes que tener los dos libros abiertos y uno se tiene que llamar MMampo.xls y la hoja el mismo nombre y el otro datos mm.xlsm y el nombre de la hoja tiene que ser Hoja1

Estos nombres los he cogido de las imágenes que adjuntastes. Si los nombre no coinciden te saldrá ese error. Si los nombres van a ser otros tendrás que modificar el nombre en las líneas de código

Cualquier duda aquí estoy

El problema puede ser porque la tabla o archivo MMampo.xls no puede estar abierto ya que el programa de medición actúa sobre y me impide tenerlo abierto ya que si esta abierto no sobreescribe los datos anteriores. ¿Si estaría todo en la misma hoja seria más fácil de hacer, pero la hoja debe permanacer cerrada?

Entonces lo que deberías hacer es pegar los dos códigos en uno. Pon el código que te he proporcionado antes de la línea del código del programa de medición que cierra MMampo.xls

Si no puedes ya vemos otra forma

MMampo.xls debe esta siempre cerrado, ahí va metiendo los datos el programa de medición,

Cuando hablas del programa de medición, ¿qué tipo de programa es?

Es una maquina de medición por coordenadas (tridimensional), guarda los datos en un excel, el software es mcosmos de Mitutoyo

Entonces vamos a hacer una copia y trabajar sobre esta

Sub copiar_pegar()
FileCopy Source:="C:\MMampo.xls", Destination:="C:\MMampo2.xls"
Set h1 = Workbooks("MMampo2.xls").Sheets("MMampo.xls")
Set h2 = Workbooks("datos mm.xlsm").Sheets("Hoja1")
h2.Activate
u = Range("A" & Rows.Count).End(xlUp).Row + 1
h2.Cells(u, "A") = h1.[A1]
h2.Cells(u, "B") = h1.[C4]
h2.Cells(u, "C") = h1.[C6]
h2.Cells(u, "D") = h1.[C9]
h2.Cells(u, "E") = h1.[C11]
h2.Cells(u, "F") = h1.[C12]
h2.Cells(u, "G") = h1.[C13]
Workbooks("MMampo2.xls").Close SaveChanges:=False 
Kill "C:\MMampo2.xls"
End Sub

Deberás modificar la ruta donde esté el archivo MMampo.xls

Son estas dos líneas

FileCopy Source:="C:\MMampo.xls", Destination:="C:\MMampo2.xls"

Kill "C:\MMampo2.xls"


Sub copiar_pegar()
FileCopy Source:="C:\Documents and Settings\CRYSTAM443\Escritorio\MMAMPO\MMampo.xls", Destination:="C:\Documents and Settings\CRYSTAM443\Escritorio\MMAMPO\MMampo2.xls"
Set h1 = Workbooks("MMampo2.xls").Sheets("MMampo.xls")
Set h2 = Workbooks("datos mm.xlsm").Sheets("Hoja1")
h2.Activate
u = Range("A" & Rows.Count).End(xlUp).Row + 1
h2.Cells(u, "A") = h1.[A1]
h2.Cells(u, "B") = h1.[C4]
h2.Cells(u, "C") = h1.[C6]
h2.Cells(u, "D") = h1.[C9]
h2.Cells(u, "E") = h1.[C11]
h2.Cells(u, "F") = h1.[C12]
h2.Cells(u, "G") = h1.[C13]
Workbooks("MMampo2.xls").Close SaveChanges:=False
Kill "C:\Documents and Settings\CRYSTAM443\Escritorio\MMAMPO\MMampo2.xls"
End Sub

pero no consigo que haga nada creo que se me va un poco de las manos el tema para mis conocimientos sobre excel. te estoy haciendo perder mucho tiempo,



  1. Sub copiar_pegar()
    FileCopy Source:="C:\Documents and Settings\CRYSTAM443\Escritorio\MMAMPO\MMampo.xls", Destination:="C:\Documents and Settings\CRYSTAM443\Escritorio\MMAMPO\MMampo2.xls"
    Set h1 = Workbooks("MMampo2.xls").Sheets("MMampo.xls")
    Set h2 = Workbooks("datos mm.xlsm").Sheets("Hoja1")
    h2.Activate
    u = Range("A" & Rows.Count).End(xlUp).Row + 1
    h2.Cells(u, "A") = h1.[A1]
    h2.Cells(u, "B") = h1.[C4]
    h2.Cells(u, "C") = h1.[C6]
    h2.Cells(u, "D") = h1.[C9]
    h2.Cells(u, "E") = h1.[C11]
    h2.Cells(u, "F") = h1.[C12]
    h2.Cells(u, "G") = h1.[C13]
    Workbooks("MMampo2.xls").Close SaveChanges:=False
    Kill "C:\Documents and Settings\CRYSTAM443\Escritorio\MMAMPO\MMampo2.xls"
    End Sub

Se me olvidó una línea:

Sub copiar_pegar()
FileCopy Source:="C:\Documents and Settings\CRYSTAM443\Escritorio\MMAMPO\MMampo.xls", Destination:="C:\Documents and Settings\CRYSTAM443\Escritorio\MMAMPO\MMampo2.xls"
Workbooks.Open Filename:="C:\Documents and Settings\CRYSTAM443\Escritorio\MMAMPO\MMampo2.xls"
Set h1 = Workbooks("MMampo2.xls").Sheets("MMampo.xls")
Set h2 = Workbooks("datos mm.xlsm").Sheets("Hoja1")
h2.Activate
u = Range("A" & Rows.Count).End(xlUp).Row + 1
h2.Cells(u, "A") = h1.[A1]
h2.Cells(u, "B") = h1.[C4]
h2.Cells(u, "C") = h1.[C6]
h2.Cells(u, "D") = h1.[C9]
h2.Cells(u, "E") = h1.[C11]
h2.Cells(u, "F") = h1.[C12]
h2.Cells(u, "G") = h1.[C13]
Workbooks("MMampo2.xls").Close SaveChanges:=False
Kill "C:\Documents and Settings\CRYSTAM443\Escritorio\MMAMPO\MMampo2.xls"
End Sub

Ahora debería funcionar

Muchas gracias así funciona, pero tengo que estar dándole a botón ejecutar macro cada vez que mido, hay alguna forma de que sea automático

Entiendo que cuando mides lo haces desde el mcosmos, con lo cual se tendría que ver que hace exactamente este programa, cosa que está fuera de mis manos. Lo ideal sería poder incluir el código después del código de medición

Puedes configurar un atajo de teclado para la macro, por ejemplo CTRL+MAYUSC+B que te ayudará a ser más ágil

¡Gracias! Un trabajo excelente y una gran ayuda que me ha servido de mucho, te debo un par de cervezas por tu paciencia y por tu aporte de conocimientos, con este excel me has quitado mucha carga de trabajo, para lo que necesites aquí estoy

Si algun dia necesitais una mejora global de vuestros procedimientos, me dedico a eso

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas