今回からビューの中身(データ)を出力する部分を作成します。
利用するのは NotesViewNavigator クラスです。このクラスの特徴はビューに表示された文書だけでなく、カテゴリ列やカテゴリ列に表示されている合計値、最終行に表示される総合計にもアクセスできます。
ビューのエントリを出力
NotesViewNavigator クラスでは、GetFirst メソッドで最初の行、GetNext メソッドで次の行を取得できます。NotesView クラスの GetFirstDocument メソッドなどと同じですね。
戻り値は NotesViewEntry オブジェクトで、ColumnValues プロパティから列の値を取得できます。ColumnValues は列の数だけの配列となっており、最初の要素が 1 列目の値となります(要素番号は 0 から)。
これらの機能を利用して、まずはビューのエントリを順に取得して Excel シートに出力してみます。xPrintAllData 関数は、ビューの全データを順に取得して、出力関数に渡しています。
|
%REM ビューの全データを Excel シートに出力 ◆ 引数 voSheet Variant Excel シート vnvExport NotesView 出力するビュー vvCtgColNo Variant カテゴリ列番号のリスト(ない場合最初の要素が0) vvCtgColor Variant カテゴリ列の文字色のリスト(要素数はrvCtgColNoと同じ) ◆ データ型(戻り値) Integer 次の出力行番号(最終出力行 + 1) %END REM Function xPrintAllData(voSheet As Variant, vnvExport As NotesView, vvCtgColNo As Variant, vvCtgColor As Variant) As Integer Dim nvnav As NotesViewNavigator Dim nve As NotesViewEntry 'カテゴリを含むビューの情報を取得 Set nvnav = vnvExport.CreateViewNav() Dim iRow As Integer Dim vLine As Variant 'ビューの出力開始 iRow = 2 'シートの 2 行目から出力 'ビューの 1 行目を取得 Set nve = nvnav.GetFirst() 'ビューのデータがなくなるまでループ Do Until (nve Is Nothing) '現在のビュー行の全カラム値を取得 vLine = nve.ColumnValues '明細行として出力 iRow = xPrintLine(voSheet, iRow, vLine) 'ビューの次の行を取得 Set nve = nvnav.GetNext(nve) Loop xPrintAllData = iRow End Function |
1 行分のデータを Excel シートに出力する関数 xPrintLine は次の通りです。
|
%REM 1 行分の全カラムデータを Excel シートに出力 ◆ 引数 voSheet Variant Excel シート viRow Integer 出力行(シートの行番号) vvLine Variant 出力データ(配列) ◆ データ型(戻り値) Integer 次の出力行番号 %END REM Function xPrintLine(voSheet As Variant, ByVal viRow As Integer, vvLine As Variant) As Integer Dim i As Integer '全カラムデータを 1 列目から順に出力 For i = 0 To UBound(vvLine) voSheet.Cells(viRow, i + 1).Value = vvLine(i) Next '戻り値 xPrintLine = viRow + 1 End Function |
実行結果
ここまでのプログラムを実行すると次のようになります。ビューの各行、各列の値がそのまま表示されていることがわかります。
前回作成した関数 xSetHeader で列の色をセットしているので、ビューと同じ色でデータが出力されていますね。
次回の予定
今回はビュー並び順のまま素直にデータを出力してみました。このままだとカテゴリの行が見づらいですね。ということで、次回はカテゴリ行の調整を行います。
| 前回 | Notes - Excel 連携 |


0 件のコメント:
コメントを投稿