Notesマイグレーションでは、Notes文書だけではなく、文書に添付されたファイルも移行する必要があります。Notes文書から添付ファイルを抽出する方法はヘルプに記載がありますが、こちらの記事にあるように正常に動作しません。(doc.EmbeddedObjectsの値がNullとなる)
文書の添付ファイルを取得する処理は、文書に単一のリッチテキストフィールドが存在する場合と文書に複数のリッチテキストフィールドが存在する場合を考慮する必要があります。(それぞれのリッチテキストフィールドに、添付ファイルがある場合、ない場合、複数ある場合の組み合わせも考慮する必要があります。)
上記を踏まえて以下の関数を記載しました。
Sub Initialize
Dim ss As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
'Set db = New NotesDatabase("Server","FilePath")
Set db = ss.CurrentDatabase
'--データベースの全てのNotes文書を取得
Set dc = db.AllDocuments
'--Notes文書を順次に取得
Set doc = dc.GetFirstDocument
While Not ( doc Is Nothing )
'--Notes文書の全フィールド(Item)を順次に取得
ForAll item In doc.Items
'--フィールドがリッチテキストであれば
If (item.Type = RICHTEXT ) Then
'--リッチテキスト内の全てのオブジェクトを参照
ForAll object In item.EmbeddedObjects
If (object.Type = EMBED_ATTACHMENT) Then
'c:¥Temp以下にオブジェクトを書き出す
Call object.ExtractFile("c:¥Temp" & object.Source)
End If
End ForAll
End If
End ForAll
Set doc = dc.GetNextDocument(doc)
Wend
End Sub
※ 添付ファイルの出力先フォルダにはアクセス権限の付与が必要。
※ 同名のファイルが作成済の場合は、無条件で上書きされる。
(ここから、さらに添付ファイルの種類を判定することもあったりするのですが、それは別途で記載をする予定です。)