インターネットとMSDNドキュメントのさまざまなサンプルからこのコードをまとめて作成することができました。これにより、Outlookの高レベルのフォルダを選択でき、その下にあるすべてのフォルダがバックアップされます。私の場合、私は実際にメールフォルダを必要とせず、除外しました。
Const BACKUP_PST_PATH As String = "C:\backup.pst"
Dim oFolder As Outlook.MAPIFolder = Nothing
Dim oMailbox As Outlook.MAPIFolder = Nothing
Dim app As New Outlook.Application()
Dim ns As Outlook.NameSpace = app.GetNamespace("MAPI")
Try
//if the file doesn not exist, outlook will create it
ns.AddStore(BACKUP_PST_PATH)
oFolder = ns.Session.Folders.GetLast()
oMailbox = ns.PickFolder()
For Each f As Outlook.Folder In oMailbox.Folders
If f.DefaultItemType <> Microsoft.Office.Interop.Outlook.OlItemType.olMailItem And f.FolderPath <> oFolder.FolderPath Then
f.CopyTo(oFolder)
End If
Next
ns.RemoveStore(oFolder)
Catch ex As Exception
ns.RemoveStore(oFolder)
IO.File.Delete(BACKUP_PST_PATH)
Throw ex
End Try
um; "pst"オブジェクトはどこで宣言され、初期化されていますか? – akavel
ns.AddStore(BACKUP_PST_PATH) - これは、その場所に存在しない場合はPSTを作成します - ns.Session.Folders.GetLast()は、PST/Folderのハンドルを取得します – brendan
あなたのコードの "pst"変数(2か所で)「oFolder」を意味するタイプミスですか? – akavel