Estoy escribiendo una macro que toma una lista de nombres que están en formato LDAP y los convierte en Primero, Último (región). Para aquellos de ustedes que no saben lo que se ve como LDAP, es a continuación:Subcadena de Excel VBA
CN=John Smith (region),OU=Legal,DC=example,DC=comand
En Excel VBA, que no parecen ser capaces de utilizar String.substring (inicio, final). Una búsqueda en Google parece revelar que Mid (cadena, inicio, fin) es la mejor opción. El problema es este: en Mid, el entero para end es la distancia desde el inicio, no la ubicación del índice real del personaje. Esto significa que diferentes tamaños de nombre tendrán diferentes ubicaciones finales y no puedo usar el índice de ")" para encontrar el final de la región. Como todos los nombres comienzan con CN =, puedo encontrar el final de la primera subcadena correctamente, pero no puedo encontrar ")" correctamente porque los nombres son de diferentes longitudes.
que tienen algún código de abajo:
mgrSub1 = Mid(mgrVal, InStr(1, mgrVal, "=") + 1, InStr(1, mgrVal, "\") - 4)
mgrSub2 = Mid(mgrVal, InStr(1, mgrVal, ","), InStr(1, mgrVal, ")") - 10)
manager = mgrSub1 & mgrSub2
¿Alguien sabe de una manera de utilizar en realidad un conjunto de punto final en lugar de un punto final que es tan muchos valores de distancia desde el principio?
El número total de caracteres de la cadena no me ayudará. La longitud puede variar en cualquier lado del ")", por lo que no puedo encontrar la ubicación del índice para detener en función de eso. – spassen
puede publicar un ejemplo de la salida que necesita? generalmente tiene que codificar un bucle for para lograr esto – gbianchi
CN = Smith, John (región), OU = Legal, DC = ejemplo, DC = comand debe convertirse en Smith, John (región) – spassen