Jump to content

Macros/Calc/ba030

From The Document Foundation Wiki
This page is a translated version of the page Macros/Calc/ba030 and the translation is 100% complete.


概要

このページでは、高度なフィルタ結果を別の場所にコピーする LibreOffice Basic マクロを提供します。これは、7.0 Calc ガイドの第13章 ("Calc as a Database"(データベースとしてのCalc))から抜粋した例です。

説明

高度なフィルタの結果は、OutputPosition プロパティを使用して別の位置に抽出できます。この方法で結果をコピーすると、検索条件に一致しない行を Calc で非表示にする必要がなくなります。これは、通常、その場でフィルタを適用する場合に行われます。

次のマクロ・コード・スニペットは、フィルタ結果を別の場所にコピーする方法を示しています。これらのフィルタ設定を適用する前に、まずフィルタ記述子を変更する必要があることに注意してください。

このコードの操作例を示すには、 Create Advanced Filter ページの AdvancedRangeFilter マクロのコードを使用し、filter メソッドが完了する直前に次のコードを挿入します。リンクされた Calcファイルには、AdvancedRangeFilter マクロの変更バージョンが含まれており、セル範囲 $Sheet1.A1:H11 のクラスの成績表のシートをデータ範囲として使用し、セル範囲 $Sheet2.A1:H3 を条件範囲として使用しています。フィルタされた結果は、セル範囲 $Sheet1.B13:I19 に配置されます。

Note:
OutputPosition プロパティは、構造体のコピーを返します。そのため、このプロパティを使用して、行や列などの個々の値を直接設定することはできません。たとえば、oFilterDesc.OutputPosition.Row を 2 に設定しても、変更されるのはコピーの Row プロパティであって、元のプロパティではないため、機能しません。

Code

REM フィルタではなく、出力データをコピーします
  oFiltDesc.CopyOutputData = True

  REM CellAddress を作成し、「Sheet1」に設定します
  REM 列B、行13 (0 から数え始めることに注意してください)
  Dim outputCell As New com.sun.star.table.CellAddress
  outputCell.Sheet = 0
  outputCell.Column = 1
  outputCell.Row = 12
  oFiltDesc.OutputPosition = outputCell

この Calc ファイル には、上記のLibreOffice Basic コードが含まれています。