これまで、ノーツデータを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 件のコメント:
コメントを投稿