В существующей иерархии папок почтового ящика есть папка, содержащая подпапки с именами «01», «05», «06» и т. Д. c. Обратите внимание, что числа не идут подряд: «02», «03», «04» в этом примере отсутствуют. В моем коде VBA мне нужно проверить, существует ли папка с именем, скажем, «02», а если нет, создать ее.
У меня сейчас есть (сокращено до минимума):
Dim NameStr as String
NameStr="02"
On Error Resume Next
Set NewSubFolder = ContainerFolder.folders(NameStr)
On Error GoTo 0
If NewSubFolder Is Nothing Then
Set NewSubFolder = ContainerFolder.folders.Add(NameStr)
End If
Пока NameStr содержит буквенно-цифровую c строку или строку, состоящую только из чисел, со значением больше, чем количество элементов, если ContainerFolder (например, «2020»), все работает. Однако, если NameStr имеет значение «02» (или другое значение, достаточно низкое, чтобы его можно было интерпретировать как порядковый номер существующей подпапки), первый оператор набора вместо сбоя и возврата Nothing возвращает указатель на третью папку (считая от ноль, 02 соответствует 3-му пункту) в папке контейнера. В приведенном выше примере это будет «06». Папка с именем «02» не будет создана.
Очевидно, интерпретатор VBA «любезно» преобразует строку «02» в целое число 2, а затем возвращает указатель на третью папку. Как мне предотвратить такое поведение? Как заставить Outlook проверять наличие папки, в имени которой есть только цифры?