2009-11-12 23 views
7

私はOutlookデータを操作するアプリケーションを作成しています。私はまずそのデータのバックアップを作成したいと思います。連絡先やカレンダーアイテムなどをループしてPSTファイルに書き出すことができたらと思います。.Netを使用してOutlook PSTファイルを作成するにはどうすればよいですか?

.Netを使用して1つまたは複数のOutlookフォルダの内容をPSTに書き込むにはどうすればよいですか。 [VBまたはC#問題なし]

答えて

10

インターネットと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 
+0

um; "pst"オブジェクトはどこで宣言され、初期化されていますか? – akavel

+0

ns.AddStore(BACKUP_PST_PATH) - これは、その場所に存在しない場合はPSTを作成します - ns.Session.Folders.GetLast()は、PST/Folderのハンドルを取得します – brendan

+0

あなたのコードの "pst"変数(2か所で)「oFolder」を意味するタイプミスですか? – akavel

関連する問題