目次へ 前に 次に

データパイロット更新マクロ付例題

■例題ファイル
例題(サンプル)ファイルをアップロードしました。
データパイロットを使ったもので、複数のデータパイロットテーブルをマクロボタン一つですべて更新できます。

できるかぎり ダウンロード して参考にしてください。
ZIP形式で圧縮していますので+LHACA などで解凍して使ってください。

注:マクロを含みますので、セキュリティの関連のメッセージがでるかもしれません。
マクロを使用するときは実行のボタンなどをクリックしてください。

  • ○サンプルファイルの構成

    1、データ入力シート

    2、VLOOKUP関数のための複数のシート

    3、データパイロットで作成した複数のシート

    4、複数のデータパイロットテーブルをボタンで更新するためのOpenOffice用のBASICマクロ

    ■説明
    1、データ入力用のシートを一つとすることで入力が容易になります。

    2、VLOOKUP関数を利用すると、入力が簡単になります。

    商品名や単価などに変更があってもすべてのデータに修正が可能です。
    VLOOK関数で使用する範囲には、「範囲名」を使っています。
    範囲選択後→メニュー→挿入→名前→指定
    または Ctrl+F3 を使います。



    範囲名を使うと、 シート名、絶対マーク「$」を省略することができます。

    3、データパイロットを利用すると複数の条件をつけたテーブルが簡単に作成できます。
    作成は一度ですみます。しかも関数をまったく使いませんからむつかしくありません。
    フィルタには3つも条件をつけることが出来ます。
    集計項目の変更も簡単です。

    4、データパイロットの欠点は「自動的に作成や更新ができない」ことです。
    関数を使えばリアルタイムの更新ができますが、複数の条件をつけることがむつかしく、また単独条件でもとても沢山の式を作らなければなりません。その点では圧倒的にデータパイロットが便利なのですが、データパイロットテーブルが複数ある場合、すべてに手動で更新処理を行う必要があります。
    したがって、BASICマクロやJAVAスクリプトを使用して、1操作で更新できるような仕組みが必要となります。

    データパイロット更新用のBASICマクロの例です。
    オリジナルは http://www.oooforum.org/forum/posting.php?mode=reply&t=733 
    をそのまま利用させていただいています。

    コードは

    Sub Dpmcrsample

    Rem データパイロット更新マクロ
    Rem オリジナルは http://www.oooforum.org/forum/posting.php?mode=reply&t=733

    oDoc=thiscomponent
    oSheetEnum=odoc.sheets.createEnumeration
    While oSheetEnum.hasMoreElements()
    osheet=oSheetEnum.nextElement()
    opivots=osheet.getDataPilotTables()
    oPivotEnum = opivots.createEnumeration
    While oPivotEnum.hasMoreElements()
    oPivotElement = oPivotEnum.nextElement()
    oPivotElement.refresh
    Wend
    Wend

    End Sub

    です。
    マクロは Module1 に マクロ名 Dpmcrsample として記述しています。
    Module1 を作成しこのまま貼り付けても利用できます。


目次へ 前に 次に