これまで、ノーツデータをExcel シートに一覧出力する方法を記載してきました。今回は、フィルターを設定する方法です。以前記載した Notes - Excel 連携:#7 ウィンドウ枠の固定と組み合わせると使いやすいシートになりますね。
フィルターの設定
フィルターを設定するには、Range オブジェクトの AutoFilter メソッドを使用します。
Microsoft Learn によると、多数の引数が定義されていますが、どれも省略可能となっています。すべて省略すると、Range の範囲でフィルターがセットされるようです。
私はずぼらなんで、以下のように記述し、1行目全体にセットしています。
| Call oXls.Rows("1:1").AutoFilter() |
ちなみに、Rows は、行を表すプロパティです。#5 で列にアクセスするプロパティの Colmuns を紹介しましたが、その”行”版ですね。
ノーツデータをExcel シートに一覧出力
これまでの内容をまとめてコードにすると以下のようになります。
|
Sub Initialize Dim ns As New NotesSession Dim ndb As NotesDatabase Dim ndc As NotesDocumentCollection Dim nd As NotesDocument Dim oXls As Variant Dim oSheet As Variant Dim i As Integer '選択文書取得 Set ndb = ns.CurrentDatabase Set ndc = ndb.UnprocessedDocuments 'Excel の準備 Set oXls = CreateObject("Excel.Application") Call oXls.Workbooks.Add Set oSheet = oXls.Workbooks(1).WorkSheets(1) '#5)列フォーマットを設定 oSheet.Columns(1).NumberFormatLocal = "yyyy/m/d hh:mm" oSheet.Columns(2).NumberFormatLocal = "#,##0.0_ " oSheet.Columns(3).NumberFormatLocal = "@" 'ヘッダ行の準備 oSheet.Cells(1, 1).Value = "日付" oSheet.Cells(1, 2).Value = "数値" oSheet.Cells(1, 3).Value = "テキスト" '行フォーマットをテキストに指定 oSheet.Rows(1).NumberFormatLocal = "@" '#4)ノーツ文書をワークシートに出力 For i = 1 To ndc.Count Set nd = ndc.GetNthDocument(i) oSheet.Cells(i+1, 1).Value = nd.Fld_DT(0) oSheet.Cells(i+1, 2).Value = nd.Fld_Num(0) oSheet.Cells(i+1, 3).Value = nd.Fld_Text(0) Next '#7)ウィンドウ枠の固定 oXls.ActiveWindow.SplitRow = 1 oXls.ActiveWindow.FreezePanes = True '#10)フィルターの設定 Call oXls.Rows("1:1").AutoFilter() oXls.Visible = True End Sub |
実行すると選択文書の内容を Excel に一覧出力し、1行目はスクロールが固定され、フィルター機能が有効となります。
実際に利用される際には、ヘッダ行やフォーマット、フィールド名は適宜変更し、調整ください。
| 前回 | Notes - Excel 連携 | 次回 |

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