Macros/Calc/ba030
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
概要
このページでは、高度なフィルタ結果を別の場所にコピーする 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 に配置されます。
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 コードが含まれています。