2017-05-24 46 views
1

Lotus Notes文書のフィールドからデータを読み取るVBAコードを作成しようとしています。現在、FieldGetTextメソッドを使用してデータを読み取ることができますが、これはドキュメントを開いている場合にのみ機能します。私は、数百もあるので、それらを開くことなく文書をループすることができる必要があります。私は多くのドキュメントからこれらの同じフィールドを読むことができる必要がありますが、それらをループする方法を理解することはできません。私のコードは現在:VBAでLotus Notes文書のフィールドを読み取る

Set LotusNotes = CreateObject("Notes.NotesUiWorkspace") 
    Set CurrentDoc = LotusNotes.CurrentDocument 
    While Not (CurrentDoc Is Nothing) 

    ' Affectation of data 
    DueDate = CurrentDoc.FieldGetText("RevDueDate") 
    DueTime = CurrentDoc.FieldGetText("RevDueTime") 
    DateClosed = CurrentDoc.FieldGetText("DateClosed") 

    Wend 

私はフロントエンドオブジェクトを使用することを理解しています。文書をループすることができるバックエンドオブジェクトを使用することはできましたが(日付は特に)、文書のフィールドテキストと一致しませんでした。 、私はちょうどそれは私が最初に試した、またはそれを何とか代わりにNotesWorkspaceクラスでFieldGetTextを使用することが可能かどうNotesUIWorkspaceクラスを使用して複数のファイルをループすることができます場合は思ったんだけど、基本的に

Set LotusNotes = CreateObject("Notes.NotesSession") 
Set db = LotusNotes.GetDatabase("") 
Set view = db.GetView(view_name) 
view.AutoUpdate = False 
Set columnview = view.AllEntries 

Set doc = view.GetFirstDocument 
While Not (doc Is Nothing) 
    revDate = doc.GetItemValueDateTimeArray("RevDueDate") 
    revDate = doc.RevDueDate 
Set doc = view.GetNextDocument(doc) 
Wend 

:このコードは、このように見えました。

ご協力いただきありがとうございます。

答えて

0

「バックエンド」オブジェクトNotes.NotesSessionを使用することもできます。だから、これは試してみてください。

Set doc = view.GetFirstDocument 
While Not (doc Is Nothing) 
    'Check if you have the field in the document 
    if doc.HasItem("RevDueDate") Then 
     revDate = doc.getFirstItem("RevDueDate").Text 
    End If 
Set doc = view.GetNextDocument(doc) 
Wend 

クライアント内のすべての文書を開くフィールドデータを取得し、文書を閉じてNotes.NotesUiWorkspaceオブジェクトを使用することも可能であるが、私は非常にとして存在し、このようにそれをしないようにをお勧めしますより多くの文書をループする必要がある場合は、Notesクライアントをクラッシュさせる可能性が高くなります。

1

Notes.NotesUIWorkspaceをルートとするNotes「フロントエンド」クラスを使用しています。これらはOLEクラスです。つまり、Notesクライアントを実行する必要があり、開いているドキュメントで作業する必要があります。 Notes.NotesSessionをルートとするバックエンドクラスもあります。これらはOLEクラスでもあるため、Notesクライアントを実行する必要がありますが、他のドキュメント(および他のデータベース、サーバーなど)にアクセスできます。 Lotus.NotesSessionを基盤とする一連のバックエンドクラスもあります。異なるプレフィックスに注意してください。これらはCOMクラスであるため、Notesクライアントを実行する必要はありません。インストールして構成する必要がありますが、クライアントがプロンプトを表示しないため、コードでユーザーのパスワードを提供する必要があります。

NotesSessionクラスのドキュメントと例は、ereです。ページの下部には、OLEまたはCOM経由での使用に関する情報へのリンクがあります。 COMクラスhereを使用することに基づいて、データベース内のビュー内のドキュメントを横断するものを含む、一連の例を見つけることができます。セッションの初期設定とは別に、OLEを使用する場合も同じです。

関連する問題