Ayuda para mi negocio

Hola expertos, decir que soy novato, por lo que si mi pregunta es complicada, ruego me lo indiquen y tan amigos, gracias de antemano.
¿Se puede crear en excel una hoja de un libro donde pueda vincular datos de otros libros cada vez que yo los necesite?
Es decir yo genero diariamente un libro excel, puedo crear otro libro resumen donde poniendo coordenadas o algo parecido me transporte los datos que necesite.
Por ejemplo, si yo indicase la ruta de los libros a copiar (ej. "libro día 1, hoja 1, celdas desde A1 a A22"), o algo así me copiase la información al libro resumen.
Es porque las hojas diarias que genero son de diferentes clientes y si pudiera hacer lo indicado me agruparía la información por semanas, cada quince días, meses, etc... Que es como facturo.

1 respuesta

Respuesta
1
Si que se puede hacer y no es complicado.
Abre los dos libros de excel el de resumen y el de origen de datos
En el de resumen vas a la celda donde quieres los datos y escribes =
Luego vas al libro de origen de datos que ya tienes abierto y das clic a la celda del dato, luego le das a enter y ya esta
así para todos
Disculpa de nuevo pero igual no formulé bien la pregunta. Lo que quiero conseguir es los siguiente.
Yo tengo carpetas por meses con un archivo excel con diferentes hojas, es decir:
Carpeta enero con libros 1, 2 3, 4 ... 31 (1 por día) cada uno como indico con 10 hojas (1 hoja por cliente)
Necesitaría que cuando yo quiera, sin abrir estos libros 1 a 1 poder recopilar en otro libro general la información por clientes, indicándole a algún comando que día necesito y que cliente.
Ej. Desde el día 1 al 7, cliente de la hoja nº 1
Todos los clientes tienen los valores en las mismas celdas, es decir hojas idénticas pero con diferente nombre de cabecera .
Gracias de antemano y disculpa.
Mi nombre es Juan Antonio.
Para hacer esto yo lo haría con visual Basic, ¿no se si sabes un poquito para introducir código de visual a través de una macro?
Yo lo haría haciendo una macro.
Eso si seria importante que los archivos tengan siempre la misma ruta (no moverlos de carpeta)
No me importaría hacerlo en VB.
No soy un experto en macros, pero con un poco de ayuda podría conseguirlo si me indicarais alguna macro para tal fin.
Decir que efectivamente todos los archivos esta en la misma carpeta.
Un saludo.
Te mando el código de una macro donde te pide día, cliente, fila y columna a buscar los datos y te pone la fórmula
Eso le puedes poner un icono que al hacer clic haga esta macro
Tendrás de modificar la ruta según tu ruta de documentos
ya me dirás como te va o si tenemos que ajustar alguna cosa
Sub BuscarDatos()
    Rutadocumentos = "C:\Documents and Settings\Mis documentos\"
    Comillas = """"
    ValDia = InputBox("Que dia quieres consultar?", "Dia", "Libro2")
    ValCliente = InputBox("Que cliente quieres consultar?", "Cliente", "Hoja1")
    ValCeldaFila = InputBox("Que Fila quieres consultar?", "Fila Celda", "1")
    ValCeldacolumna = InputBox("Que Columna quieres consultar?", "Fila Celda", "1")
    Valor = "='" & Rutadocumentos & "[" & ValDia & ".xls]" & ValCliente & "'!R" & ValCeldaFila & "C" & ValCeldacolumna
    ActiveCell.FormulaR1C1 = Valor
End Sub
La macro parece que es ideal para lo que yo quiero, pero la he ejecutado en un comando y al pulsarle me hace todas las preguntas para llevarme al directorio pero me sale el siguiente error
Se ha producido el error 1004 en tiempo de ejecución
error definido por la aplicación o el objeto
al darle a depurar me sale en amarillo
ActiveCell.FormulaR1C1 = Valor
Fallito mio
Modifica ActiveCell.FormulaR1C1 = Valor por ActiveCell.Formula = Valor
O sea le quitas R1C1
a ver si te va
Cuando le voy metiendo los datos a las preguntas de la macro para llegar a donde quiero ir me sigue dando el mismo error.
Me hace la primera pregunta que día quieres consultar (le pongo nombre del libro "1")
Que cliente (le pongo nombre de la hoja "Florencio")
Que fila (le pongo 5, que es donde esta el primer dato a copiar)
Que columna (le pongo F, que es donde esta el primer dato a copiar)
Los datos a copiar están siempre en el rango F5 al F55 de todas las páginas.
Te indico todo esto por si soy yo quien lo este haciendo mal.
He observado que si en vez de meter los nombres de mis libros y hojas le doy a aceptar tal como viene, me lleva a una ventana donde indica lo siguiente: actualizar valores:
Disculpame si te estoy dando la tabarra.
Disculpa nuevamente.
He adaptado la macro que me mandaste a lo que quiero y la he dejado como sigue:
Sub BuscarDatos()
Rutadocumentos = "C:\Documents and Settings\Juan Antonio\Escritorio\semana prueba"  
Valor = "='" & Rutadocumentos & "[" & ValDia & ".xls]" & ValCliente & "'!F" & ValCeldaFila & "5" & ValCeldacolumna
ActiveCell.Formula = Valor
End Sub
De esta forma me sale la ventana de actualizar valores y puedo indicarle la ruta para que me copie los datos del libro y cliente que quiero.
Pero me copia solo los datos de la celda con rango F5 y yo lo que quiero es que me copie desde F5 a F60. Como te he indicado varias veces todos las hojas que necesito están en el mismo rango.
Esto lo estoy haciendo desde un nuevo libro al que he llamado informe, desde un botón de comando. Me pega los datos en la celda marcada con el cursor. ¿Puedo hacerlo en un rango de celdas especificadas para ello?
Haz una cosa una vez tienes los datos en la F5 clicas en la f5
Sale un cuadradito en la parte inferior derecha de la celda y arrastras hasta la F60 y te rellenara automáticamente.
O si siempre es de F5 a F60 se puede poner al final de la macro esta instrucción
Selection.AutoFill Destination:=Range("F5:F60"), Type:=xlFillDefault
Hola de nuevo, espero no hacerme pesado.
Lo que te indico es el rango "desde donde lo tengo que copiar", es decir de origen no de destino.
Siempre es el mismo rango de origen en todas las páginas (desde F5 a F50).
O que me formule la pregunta desde que celda hasta cual celda.
En la macro que me mandaste esta indicado que me copie siempre la misma celda de origen (F5).
En el destino lo tengo controlado. Gracias.
Entiendo que quieres copiar el contenido que tienes en la celda F5 y hacerlo hasta la F50
La macro lo único que hace es poner la fórmula para buscar los datos y lo pone en una celda, luego solo se tiene que copiar la fórmula a las siguiente celdas y se actualiza automáticamente
Como te digo si siempre copias de la F5 a la F50
pon este código al final de la macro y te lo hará:
Selection.AutoFill Destination:=Range("F5:F50"), Type:=xlFillDefault
A ver si con esto finalizamos este tostón que te estoy dando.
Esta es la macro que tengo en el libro que he creado que he llamado "informe" y me viene perfectamente, hasta lo que te he comentado, que es que me gustaría que me copiase de origen desde la celda F5 a la F50, porque con esta macro solo me copia la celda F5.
Sub Botón1_Haga_clic_en()
   If MsgBox("Desea Importar Archivo", vbYesNo, "Pregunta") = vbYes Then
ChDir "C:\Documents and Settings\Juan Antonio\Escritorio\semana prueba"
   '
nrocel = InputBox("Ingresa celda de destino")
'si se canceló la ventana o no se ingresan datos, se cancela
If nrocel = "" Then Exit Sub
'se controla posible error de rango inexistente
On Error Resume Next
Selection.Copy
ActiveSheet.Range(nrocel).Select
Selection.PasteSpecial Paste:=xlValues
    Valor = "='" & Rutadocumentos & "[" & ValDia & ".xls]" & ValCliente & "'!F" & ValCeldaFila & "5" & ValCeldacolumna
    ActiveCell.Formula = Valor
End If
End Sub
Decirte que esta macro la he modificado cogiendo la que me enviaste y una que tenia yo casi arreglada.
Te rogaría la estudies y me digas donde poner lo que me indicas, para copiar desde el origen las celdas f5 hasta la f50, o sea:
 Selection.AutoFill Destination:=Range("F5:F50"), Type:=xlFillDefault
porque a estas alturas estoy un poco perdido. A ver si así doy por finalizado el tema.
Gracias de antemano.
Lo tienes que poner antes del End Sub
Lo que hace esto es copiar la fórmula del F5 hasta la F50.
Ya me dirás si así te funciona

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas