-Buenas a todos,
intento explicar lo que quiero hacer y no se.
Tengo una lista desplegable la cual listo de una carpeta una vez conozco su ruta ( son archivos excel ). estos archivos pdf o cualquier otro formato pero en su mayoría pdf tienen una parte común a mis hojas de excel y lo que quisiera hacer es que al abrir la lista desplegable y seleccionar un objeto de esa lista, me buscque la coincidencia de los primeros 9 dígios de mis hojas excel y habra la hoja. ( intento poner un ejemplo )
Supongamos que tengo una lista desplegable con los siguientes nombres de archivos.
PC19-2015 maleta roja
PC19-2016 maleta verde
PC19-0025 maleta azul
PC19-2541-1 maleta azul
Y en mis hojas de excel lo que tengo sería;
PC19-2015
PC19-2016
PC19-0025
PC19-2541-1 ertc.....
Pues lo que tendría que hacer es que al seleccionar en la lista desplegable PC19-2016 maleta verde, el libro ecel se vaya a la hoja PC19-2016
Si selecciono en la lista PC19-2541-1 maleta azul, se abriría la hoja, PC19-2541-1
O sea es una busqueda en una lista desplegable pero con una coincidencia no de todo el título, sino de los primeros 9 dígitos que es la parte común.
Gracias.-
Así que parece qeu tienes que extraer texto desde el principio hasta el primer espacio que encuentre
lo de los 9 caracteres ya en tu ejemplo no se cumple, porque PC19-2541-1 tiene 11 caracteres
para tomar x caracteres por la izquierda, tienes la función LEFT
para encontrar el primer espacio en la cadena tienes la función InStr
así que el texto que te interesa podría ser algo así
elnombrequemeinteresa = Left(nombredelarchivo, InStr(nombredelarchivo, " ") - 1)
------
Ya sé Excel, pero necesito más.
Buenas Pacomegia,
Aunque PC19-2541-1 tiene 11 dígitos, solo me interesan los 8 primeros PC19-2541.
No he podido aplicar la fórmula que me adjuntas en tu comentario, no se como hacer que funcione.
Te adjunto el archivo en cuestión donde puedes ver lo que tengo.
Com ves en C3 tengo una lissta desplegable, lo que me gustaría hacer es que al buscar un valr en esa lista( por ejemplo PC18-3039 Tubo PEAD Conducción Eléctrica - Tubos Perfilados.pdf ) se me habra la hoja PC18-3039 ( coincidencia con los primeros 8 dígitos ) es eso posible ¿¿¿
gracias de antemano.
viendo tu ejemplo, veo que en la lista tienes por ejemplo "MBT19-0144 Placas Fotovoltaicas - TrinaSolar.pdf" y la hoja se llama "MBT19-0144-2" con lo que el nombre de la hoja no es exactamente igual a los primeros caracteres, porque puede ser más largo. También tienes nombres de archivos con espacios al principio, así que añado la función Trim para quitar los espacios al principio y al final
por ejemplo para MBT19-0293-1 los 8 primeros caracteres serían MBT19-02, y para este caso cumple la hoja MBT19-0293-1 ¿es así?
En este caso, deberás recorrer todas las hojas comprobando los nombres hasta que encuentres la hoja que te interesa.
Esta comprobación la deberías realizar cada vez que cambie el valor de tu celda C3, para lo que puedes emplear el evento Change de la hoja, y comprobar si la celda que cambia, que tendrás en el argumento Target, coincide con la C3
Por cierto, si sólo quieres 8 caracteres, entonces
elnombrequemeinteresa = Left(nombredelarchivo, 8)
Resumiendo:
en el código de la hoja, en el evento Change compruebas si la celda que cambia es donde tienes tu desplegable, en este caso la celda C3. en caso de ser la celda que te interesa, puedes llamar a un procedimiento que busque la hoja y la active
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then
ActivarHojaSegunNombreArchivo Target.Value
End If
End Sub
Ese procedimiento que busca la hoja recorrerá todas las hojas del libro e irá comparando el nombre con los 8 primeros caracteres del nombre de tu archivo. cuando encuentre una coincidencia, activará esa hoja:
Sub ActivarHojaSegunNombreArchivo(nombredearchivo As String)
'activamos la hoja que se corresponde con el nombre del archivo seleccionado
Dim nombrequemeinteresa
Dim miHoja As Worksheet
nombrequemeinteresa = Left(Trim(nombredearchivo), 8)
For Each miHoja In ThisWorkbook.Worksheets
If Trim(miHoja.Name) Like nombrequemeinteresa & "*" Then
miHoja.Activate
Exit Sub
End If
Next
End Sub
------
Ya sé Excel, pero necesito más.
Buenas de nuevo,
Pues tienes razón pacomejia, no me había dado cuenta que en los nombres " MBT19-0144 " o sea todos los que empiezan por MBT19 sería la coincidencia de los 10 primeros dígidos y que en los nombres " PC18-3036 " todos los que empiezan por PC serían los primeros 9 dígitos ( Contabilizando siempre tambien el guión - )
He intentado hacer funcionar la hoja con el VB que me has dejado y no consigo que me busque y abra las hojas de la lista desplegable entiendo que algo hago mal y ni idea de lo que puede ser.
Alguien que me pueda ayidr con esto por favor. No consiguo que funcione mi hoja.
gracias.-