AddStore
を使用してOutlookに新しいpstを追加しようとしていて、新しく追加されたpstにデフォルトのpstそうでない場合は、フォルダを作成してから他のコマンドを実行します。最初のpstのフォルダとサブフォルダを確認する際にエラーが発生し、2番目のpstに存在しない場合は作成する
ここで私はループと作成が行われるべきコードの一部が含まれていますが、私はnewDestFolder = destFolderRoot.Folders.Add(sourceFolder.Name)
どのようにフォルダが新しいPSTに存在していないかどうかを確認して作成するのですラインでエラー"Cannot Create Folder"
を取得していますしたがって、これはサブフォルダにも適用する必要があります。
# ($例外).StackTrace
at Microsoft.Office.Interop.Outlook._Folders.Add(String Name, Object Type)
at AutoBackup.ThisAddIn.SetSrcAndDst(String Src, String Dst)
in E:\projects\ThisAddIn.vb:line 76
# コード部分
sFolders = oNspace.Folders.Item(src_pst).Folders
destFolderRoot = oNameSpace.Folders.Item(dst_pst)
destFolders = oNameSpace.Folders.Item(dst_pst).Folders
For Each sourceFolder In sourceFolders
For Each destFolder In destFolders
If sourceFolder.Name = destFolder.Name Then
'do something
Else
newDestFolder = destFolderRoot.Folders.Add(sourceFolder.Name)
End If
Next
Next
更新
私はFor Loop
を使って別の方法を試しています(以下のコード)。この時間は2番目のpstの非終了フォルダが正常に作成されましたが、別の問題があります。 初めてループすると、 2番目のpstの既存のフォルダですが、新しいフォルダが作成された後、ループの残りの部分はsFolders.Item(i).Name = dFolders.Item(i).Name
の代わりにDeleted Items, Inbox, Sent
のElse
にデフォルトのフォルダを返します。そのフォルダは既に存在するため、"Cannot Create Folder"
という戻りエラーになります。 2番目のpst、これは私がFor Each
ループで初めてエラーが発生した理由を知る方法です。条件が正しく動作せず、新しいフォルダとして作成するために既存のフォルダをElse
に戻すためです。エキスパートからの解決策があるかもしれませんが、私はグーグルで何のヒントも得られないようですが、私はあまり専門家ではありません。
For i = 1 To sFolders.Count
If sFolders.Item(i).Name = dFolders.Item(i).Name Then
Call CopyMail(sFolders.Item(i), dFolders.Item(i))
ElseIf sFolders.Item(i).Name IsNot dFolders.Item(i).Name Then
dFolderN = dFolderR.Folders.Add(sFolders.Item(i).Name)
End If
Next
[ディレクトリとサブディレクトリの作成](https://stackoverflow.com/questions/1680836/create-directory-sub-directories) –
の重複している可能性があります。その可能性の高い解決策はありません。私のポストは、VBで書かれたOutlookのアドインについてです。 – Hayan
C#ソリューションは(ほぼ)常にVBで動作しますが、確認していただきありがとうございます。 [Microsoftのドキュメント](https://msdn.microsoft.com/en-us/library/54a0at6s(v = vs.110).aspx)へのリンクです。これにはC#とVBの例が含まれています。 –