Complemento

Hola Fernando
Tengo una base de datos de algunos productos, la cual quisiera que estuviera disponible para todas las hojas y todos los libros abiertos.
Normalmente la uso para todas mis archivos, pero tengo el problema que cuando hay nuevo código, actualizo el archivo actual y no los demás, lo que implica que tengo si tengo 10 archivos, también tengo 1 base de datos para cada una, que en si es la misma base de datos.
Normalmente en cada archivo, utilizo la fórmula de Búsqueda BUSCARV, porque son planillas de captura, en la cual simplifico el llenado de datos con la fórmula antes mencionada.
Por lo tanto te pregunto que,
Cual es la forma para utilizar una sola base de datos, para todos los archivos. Y además también como pudiera introducir por medio de VBA, algo similar a la fórmula BUSCARV, en la cual no escribiera la fórmula directamente en la celda, he visto algo similar en una respuesta tuya código y es el siguiente:
Private Sub Worksheet_Change(Byval target as Excel.Range)
Capcol. = " E"
ColHora= "H"
CapCol =Asc(ucase(Capcol)) -64
ColHora= Asc(Ucasae(ColHora)) -64
If target.Column = CapCol then
Target.(Offset(0,colHora.Value = Now
End sub
Al ver este código pensé inmediamente en el proceso de búsqueda de datos en catálogos
O bases de datos,
Que al introducir un código en por columna, ubicara el registro y lo posesionara en la columna deseada, tal como sucede con el funcionamiento de la Fórmula BUSCARV,
En fin, quisiera que funcionara como tu código anterior, con la variante de que busque un código especificado y lo ponga en por columna.
Esto evitaría estar escribiendo la Fórmula BUSCARV sobre la celda y ademas tendría un grado de desarrollo más de programación que de planilla de calculo. Estuve pensando que pudiera manejar como un complememto de Excel .
Se es que es difícil, pero al ver tu código vi una luz que, tal vez pudiera ser posible.
Quisiera por favor me indicaras cual seria el código a escribir, y si fuera mucho pedir un pequeño ejemplo, porque soy medio lento para esto.
Por la atención que prestes a mi correo mil gracias.
Jose Medina

1 Respuesta

Respuesta
1
Es cierto. Reviste alguna complejidad. Sin embargo nota que hay una solución simple si es que te satisface.
Coloca tu base de datos común en el directorio:
C:\Archivos de programa\Microsoft Office\Office\InicioXL
La dirección puede variar dependiendo de tu instalación de MS Office, pero busca en tu equipo dónde está la carpeta InicioXL
Lo cierto es que esto provocará que, al iniciar MS Excel, este archivo se cargue automáticamente y, así, estará disponible para todos los archivos que lo necesiten. Desde luego deberás colocar vínculos o referencias a este archivo común en tus otros 10 archivos.
Esta solución también es útil para resolver la segunda parte de tu pregunta: un buscarv instantáneo.
La macro que hace lo que solicitas está basada en aquella que viste con un par de mejoras.
En lo que disiento es en cargarlo como un complemento, porque supongo que no en todas las hojas y en todos los libros quieres que se introduzca la búsqueda en una celda...
Por ello, es preferible que elijas la hoja donde quieres que esto ocurra y da click derecho sobre la solapa de esta hoja y elegir la opción "Ver Código)
Copia el código siguiente y pégalo en el panel desplegado a la derecha de su Editor de Visual Basic:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
CapCol = "E"
ColBusq = "H"
CapCol = Range(CapCol & "1").Column
ColBusq = Range(ColBusq & "1").Column
If Target.Column = CapCol Then
On Error Resume Next
Target.Offset(0, ColBusq - CapCol).Value = Application.WorksheetFunction.VLookup(Target, Workbooks("BaseProductos").Sheets("Base").Range("BaseProd"), 2, 0)
If Err.Number = 1004 Then MsgBox "Lo ingresado (" & Target.Value & ") no se encuentra en la base común", vbCritical, "NOSTA!"
On Error GoTo 0
End If
End Sub
En este código le deberás indicar en qué columna ingresarás el código y en cuál deberá colocar el resultado de la búsqueda.
Además, debes modificar el nombre del archivo, de la hoja y el rango donde está tal base, adaptándolos a tu caso particular.
Notarás que cambié la forma de determinar el número de columna para que funcione para cualquiera.
En caso de que el código no se encuentre en la base aparecerá un mensaje avisando de tal situación.
Desde luego, es condición fundamental que el archivo de marras esté abierto al momento de ejecuttarse la macro. Pero esto estaría resuelto si sigues mi primera sugerencia.
Espero que esto resuelva tus inquietudes.
Un abrazo!
Fernando
Disculpa la demora pero estuve bastante atareado esta semana.
Hola Fernando!
No cabe dudas que tienes dotes de genio, precisamente esto es lo que buscaba, ya hice las modificaciones a tu sugerencia, y funciona de maravilla. Esto me da una idea de lo que me falta por aprender.
Recibe un fuerte abrazo
José Medina Maciel

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas