Copiar celdas a otro libro

Hola, necesito un poquito de ayuda, encontré casi lo que necesitaba en una pregunta anterior( http://www.todoexpertos.com/categorias/tecnologia-e-internet/software-y-aplicaciones/microsoft-excel/respuestas/2221287/copiar-celdas-a-otra-hoja-en-la-primera-fila-libre ) Pero lo que yo quiero hacer es que la hoja "Base de datos" este en otro libro, es decir la hoja de ingreso y la base de datos en 2 libros diferentes. Ojala me puedan ayudar a hacer funcionar este macro. Muchas gracias de antemano.

1 Respuesta

Respuesta
1
Se me ocurre lo siguiente, te explico como lo tengo yo hecho en mi programa de gestión:
Vamos a empezar por partes:
Por ejemplo.
- Tienes un archivo de excel llamado base.xls, y en este libro tienes una hoja llamada datos en la cual nos encontramos con tres campos:
En la celda A1: NOMBRE
En la celda B2: EDAD
En la celda C1: ESTADO CIVIL
Bien, este libro lo vamos a guardar en el disco local c:\
Cerramos el libro.
Ahora una vez guardado vamos a coger y abrir un archivo nuevo de excel, y lo vamos a llamar por ejemplo, "programa.xls" (sin las comillas), y aquí vamos a nombrar la hoja como "programa".
Bien ahora vamos a entrar en el editor de VBA y vamos a insertar un formulario, iNSERTAR > USERFORM
Bien suponemos que la base de datos contiene tres campos: Nombre, edad y estado civil.
Entonces al USERFORM1 vamos a añadirle tres label que serán Nombre, edad y E. Civil
Añadimos tres textbox que serán textbox1, textbox2 y textbox3
Añadimos también un botón de comando que será CommandButton1
Al commandButton1 le cambiamos el Caption y le ponemos Añadir.
Bien una vez que ya hicimos todo eso vamos a empezar a programar:
Aclaración: la comilla (') indicara lo que haremos en cada paso, son comentarios y son opcionales. Empezamos a programar el Botón CommandButton1
Sub CommandButton1_Click
'Abrimos el libro donde queremos copiar los datos:
Workbooks.Open filename:="c:\base.xls"
'Nos situamos en la celda A1 de la hoja donde queremos copiar los datos:
Workbooks("base.xls").Sheets("datos").Range("a1").Activate
'Ahora mientras la celda activa no este vacía baja una fila:
Do While not IsEmpty (Activecell)
Activecell.offset(0,1).Activate
Loop
'Con la celda activa empieza a insertar datos:
With Activecell
.value=Textbox1
.offset(0,1)=textbox2
.offset(0,2)=textbox3
End with
Activecell.Offset(0,1).Activate
'Ahora guardamos el libro activo.
Activeworkbook.Save
'Ahora cerramos el libro:
Activeworkbook.Close 
End sub
Prueba esté código y me cuentas.
Un saludo no olvides finalizar la pregunta si te sirvió. Si tienes alguna duda avisame.
Hola muchas gracias, probé el macro y funciono, solo un par de puntos con los que quisiera que me ayudes.
1. Cuando guarda los datos en la el libro base, los guarda de forma consecutiva pero horizontalmente, podrías ayudarme para hacerlo de forma vertical, es decir una debajo del otro.
2. Como puedo hacer para que el programita se vea cuando habrá el libro programa, porque solamente se activa cuando entro con alt + f11
muchas gracias
Anda! Claro, vaya fallito más tonto je je a ver el error esta en la siguiente parte del código, te lo pongo en negrita:
Private Sub CommandButton1_Click
'Abrimos el libro donde queremos copiar los datos:
Workbooks.Open filename:="c:\base.xls"
'Nos situamos en la celda A1 de la hoja donde queremos copiar los datos:
Workbooks("base.xls").Sheets("datos").Range("a1").Activate
'Ahora mientras la celda activa no este vacía baja una fila:
Do While not IsEmpty (Activecell)
Activecell.offset(0,1).Activate
Loop
'Con la celda activa empieza a insertar datos:
With Activecell
.value=Textbox1
.offset(0,1)=textbox2
.offset(0,2)=textbox3
End with
Activecell.Offset(1,0 ).Activate
'Ahora guardamos el libro activo.
Activeworkbook.Save
'Ahora cerramos el libro:
Activeworkbook.Close 
End sub
Ahí está hay que cambiar el offset en lugar que poner 0,1 como estaba sería; 1,0
Ya que queremos que baje una fila hacia abajo.
Respecto a la pregunta dos.
En respecto a la pregunta número dos:
En la hoja1 del libro programa.xls insertamos un botón de comando,
Puedes encontrarlo en Ver>Barras de Herramientas> Cuadro de Controles si tienes Excel 2003 o en la pestaña programador de excel 2007.
Una vez insertado, damos con el botón derecho en el lboton, nos vamos a propiedades y cambiamos el Caption, donde pone commmandButton1 lo cambiamos por Iniciar Programa.
Una vez hecho eso damos doble click en el botón y programamos la siguiente linea:
Private Sub CommandButton1_Click()
Userform1.Show
End sub
Espero que te sirva y te sea útil, ¿si tienes alguna duda comentame ok? No olvides finalizar la pregunta. Hasta pronto amigo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas