Я пытаюсь скопировать структуру папок и подпапок из одного Outlook PST в другой, и у меня возникают трудности с оператором Folders.Add()
:
Private Sub Process(S As MAPIFolder, T As MAPIFolder, RootLevel As Boolean, BeforeDate As Date)
Dim N As NameSpace, F As MAPIFolder, G As MAPIFolder
' S is source folder (parameter)
' T is target folder (parameter)
' F is current source subfolder for recursion (private)
' G is target folder for recursion (private)
Set N = Application.GetNamespace("MAPI")
' recurse through subfolders
For Each F In S.Folders
If F.Items.Count <> 0 Or F.Folders.Count <> 0 Then ' process only if items or subfolders found
If FoundFolder(T, F) Then ' this function works fine
Set G = T.Folders(F.Name) ' found - just assign
Else
Set G = T.Folders.Add(F.Name, N.GetDefaultFolder(F.DefaultItemType)) ' not found - create
End If
'
' more code (working well)
'
' process next level without Root flag
Process F, G, False, BeforeDate
End If
Next F
Set F = Nothing
Set G = Nothing
End Sub
До тех пор, пока в операторе Folders.Add()
явообще не указывайте параметр Type
, создается папка с DefaultType olMailItem (поскольку моя корневая папка является почтовой папкой).Однако я хочу создать папку того же типа, что и исходная папка.
1-е своеобразное наблюдение:
- Справка VBA, MSN и другие говорят, что для Folders.Add (Name,Тип) Тип является необязательным Long.
- Редактор VBA говорит (во всплывающей подсказке при наборе текста) Тип - это MAPIFolder
2-е наблюдение: Однако при попытке установить аргумент Тип я получаю сообщение об ошибке
Ошибка -2147024809 (80070057)
Не удалось завершить операцию.Одно или несколько значений параметров недопустимы
Я попробовал следующее
' Type as Long
Set G = T.Folders.Add(F.Name, 0)
Set G = T.Folders.Add(F.Name, olMailItem)
Set G = T.Folders.Add(F.Name, OlItemType.olMailItem)
Set G = T.Folders.Add(F.Name, F.DefaultItemType) ' this is what I actually want
' Type as MAPIFolder
Set G = T.Folders.Add(F.Name, F)
Set G = T.Folders.Add(F.Name, N.GetDefaultFolder(F.DefaultItemType))
Ошибка - Ошибка - Ошибка
Что нужно сделать, чтобы создать папку изтого же типа, что и исходная папка F
Кто-нибудь поможет .... пожалуйста
С уважением, MikeD