Tôi đang viết macro có danh sách tên có định dạng LDAP chuyển đổi chúng thành Thứ nhất, Cuối cùng (vùng). Đối với những người bạn không biết LDAP trông như thế nào, dưới đây là:Chuỗi VBA Excel VBA
CN=John Smith (region),OU=Legal,DC=example,DC=comand
Trong Excel VBA, tôi có vẻ như không thể sử dụng string.substring (bắt đầu, kết thúc). Một tìm kiếm trên Google dường như tiết lộ rằng Mid (chuỗi, bắt đầu, kết thúc) là lựa chọn tốt nhất. Vấn đề là: ở giữa, số nguyên cho kết thúc là khoảng cách từ đầu, không phải là vị trí chỉ mục thực tế của ký tự. Điều này có nghĩa là các kích thước tên khác nhau sẽ có các vị trí kết thúc khác nhau và tôi không thể sử dụng chỉ mục ")" để tìm phần cuối của khu vực. Vì tất cả các tên bắt đầu bằng CN =, tôi có thể tìm thấy kết thúc của chuỗi con đầu tiên đúng cách, nhưng tôi không thể tìm thấy ")" đúng bởi vì tên có độ dài khác nhau.
Tôi có một số mã dưới đây:
mgrSub1 = Mid(mgrVal, InStr(1, mgrVal, "=") + 1, InStr(1, mgrVal, "\") - 4)
mgrSub2 = Mid(mgrVal, InStr(1, mgrVal, ","), InStr(1, mgrVal, ")") - 10)
manager = mgrSub1 & mgrSub2
Có ai biết một cách thực sự sử dụng một điểm kết thúc đã thay vì một điểm kết thúc mà là rất nhiều giá trị đi từ đầu?
Tổng số ký tự trong chuỗi sẽ không giúp tôi. Tôi chiều dài có thể khác nhau ở hai bên của ")" vì vậy tôi không thể tìm thấy vị trí chỉ mục để dừng dựa trên đó. – spassen
bạn có thể đăng một ví dụ về đầu ra bạn cần không? thông thường, bạn phải mã hóa vòng lặp for để hoàn thành – gbianchi
CN = Smith, John (vùng), OU = Legal, DC = example, DC = comand phải trở thành Smith, John (vùng) – spassen