Excel-VBA Teilstring
Schreibe ich ein makro, die eine Liste der Namen, die in einem LDAP-format konvertiert Sie zum Ersten, Letzten (region). Für diejenigen von Euch, die nicht wissen, was LDAP aussieht, ist es unten:
CN=John Smith (region),OU=Legal,DC=example,DC=comand
In Excel VBA, ich scheinen nicht in der Lage sein, die Verwendung von string.substring(start, Ende). Eine Google-Suche scheint zu zeigen, dass Mid(string, start, Ende) ist die beste option. Das problem ist Folgendes: in der Mitte, die ganze Zahl zum Schluss ist die Entfernung vom start und nicht die eigentlichen index-Position des Zeichens. Dies bedeutet, dass die verschiedenen Namen werden die Größen der unterschiedlichen Endung Orten und ich kann nicht verwenden den index ")" finden Sie am Ende der region. Da alle Namen beginnen mit CN=, ich finde das Ende der ersten Teilzeichenfolge richtig, aber ich kann nicht finden ")" richtig, da die Namen unterschiedlich lang sind.
Einige habe ich folgenden code:
mgrSub1 = Mid(mgrVal, InStr(1, mgrVal, "=") + 1, InStr(1, mgrVal, "\") - 4)
mgrSub2 = Mid(mgrVal, InStr(1, mgrVal, ","), InStr(1, mgrVal, ")") - 10)
manager = mgrSub1 & mgrSub2
Kennt jemand einen Weg, um tatsächlich einen Satz-Ende-Punkt anstelle von einem Endpunkt, der so viele Werte Weg von der start?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist vba.. kein string.substring 😉
dies ist mehr wie VB 6 (oder irgendeine unten).. so sind Sie stecken mit mid, instr, len (um die gesamte Länge von einem string).. ich glaube, du verpasst len, um die Gesamtzahl der Zeichen in einem string? Wenn Sie zusätzliche Auskünfte benötigen nur einen Kommentar posten.
edit:
Anderen quick hack..
Klar dein problem ist, dass seit Sie benötigen einen Unterschied gibt es für den zweiten parameter sollten Sie immer tun, einige mathematische für Sie...
Ich bin mir nicht sicher, ob ich deine Frage richtig, aber hier ist meine Umsetzung von (hoffentlich), was Sie wollen:
Es veranschaulicht die Verwendung von
Split
undMid
Funktionen.Es ist eine quick-and-dirty-Implementierung dienen nur der Veranschaulichung. Verwenden Sie es im real-code, den Sie hinzufügen müssen mehrere Prüfungen (z.B. dass der
kv
undparts
Sammlungen enthalten mindestens zwei Elemente).UPD: Auf zwei mögliche Formate der CN-Feld, nämlich
"last\, first (region)"
und"first last (region)"
und die Dinge etwas weniger chaotisch, ich würde die regulären Ausdrücke Ansatz.Ich würde Befehle zu finden, die position der drei Zeichen, trennen Sie die Werte und dann verwenden Sie Links/Rechts auf Sie.
Dies ist, was ich gehackt zusammen ganz schnell:
Dann zu verketten, um die string-Ausgabe, die Sie wollen.
Den ersten/letzten Namen bit ist einfach, wenn Sie mit diesem zu starten: