Je suis en train de copier une structure de dossiers et sous-dossiers d'un Outlook PST à un autre et ont des difficultés avec la déclaration Folders.Add()
:Créer MAPIFolder en PST en utilisant VBA
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
Tant que dans la I déclaration Folders.Add()
ne spécifiez pas le paramètre Type
, un dossier avec DefaultType olMailItem est créé (parce que mon dossier racine se trouve être un dossier de courrier). Cependant, je veux créer un dossier du même type que le dossier source.
1ère observation particulière:
- VBA Aide, MSN et d'autres disent que pour Folders.Add (Nom, Type) Type est en option longue.
- VBA Editor dit (en infobulle lors de la frappe) Type est MAPIFolder
2ème observation: Cependant, je tente de définir l'argument de type, je reçois une erreur
Erreur -2147024809 (80070057
Impossible de terminer l'opération. Une ou plusieurs valeurs de paramètres ne sont pas valides
J'ai essayé les suivantes
' 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))
Erreur - Erreur - Erreur
Que faire pour créer un dossier du même type que le dossier source F
aide .... Tout le monde s'il vous plaît
Sincères salutations MikeD