none
Excel2010ピボットテーブルでスライサーメニューが使用できない RRS feed

  • 質問

  • お世話になります。

    C#でExcel2010のピボットテーブルアプリを開発しています。
    C#プログラム(下記ソースコード参照)でCSVファイルからExcelシートにピボットテーブルを作成し、Excelの手操作でピボットテーブル、ピボットグラフ、スライサーを表示させると言うものです。
    ピボットテーブル、ピボットグラフは問題なく表示できるのですが、スライサーメニューが灰色のままでアクティブにならず使用できません。
    イロイロ調査・試行しましたが原因が分かりません。どこに問題があるのか、ご教示お願いします。

    環境は以下の通りです。
    Windows 8.1 .NET 4.5
    Visual Studio 2010
    Excel 2010

    Microsoft.Office.Interop.Excelは下記のものを使っています、
    バージョン:14.0.0.0
    ランタイムバージョン:v2.0.50727

    ====================================================
    private void CreateReport(Excel.Workbook workbook, Excel.Worksheet worksheet, string csvPath, string csvFile)
    {
        Excel.PivotTables xlPivotTables = null;
        Excel.PivotTable  xlPivotTable  = null;
        Excel.PivotCache  xlPivotCache  = null;
        try
        {
            xlPivotCache = workbook.PivotCaches().Add(Excel.XlPivotTableSourceType.xlExternal, Type.Missing);
            xlPivotCache.Connection  = @"OLEDB;Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + csvPath + @";Extensions=asc,csv,tab,txt;";
            xlPivotCache.CommandText = "SELECT * FROM [" + csvFile + "]";
            xlPivotCache.CommandType = Excel.XlCmdType.xlCmdSql;

            xlPivotTables = (Excel.PivotTables)worksheet.PivotTables(Type.Missing);
            xlPivotTable = xlPivotTables.Add(xlPivotCache, worksheet.get_Range("A2", Type.Missing), "PivotTable1", Type.Missing, Type.Missing);

            xlPivotTable.SmallGrid = false;
            xlPivotTable.ShowTableStyleRowStripes = true;
            xlPivotTable.TableStyle2 = "PivotStyleLight2";
            xlPivotTable.RefreshTable();
        }
        catch (Exception)
        {
            // 省略
        }
        finally
        {
            // 省略
        }
    }
    =====================================================

    以上


    • 編集済み ike560 2014年1月29日 10:09
    2014年1月29日 10:07

回答

  • ike560さん、こんばんは。

    PivotCacheとPivotTableにバージョンが指定されていないためだと思います。

    PivotCacheとPivotTableのAddメソッドを、Create/CreatePivotTableメソッドに変えてみてください。

    具体的には、以下の様なコードです。

    xlPivotCache = workbook.PivotCaches().Create(Excel.XlPivotTableSourceType.xlExternal, "ここに実データの範囲をRange型で", Excel.XlPivotTableVersionList.xlPivotTableVersion12);

    xlPivotTable = xlPivotCache.CreatePivotTable(worksheet.get_Range("A2", Type.Missing), "PivotTable1", true, Excel.XlPivotTableVersionList.xlPivotTableVersion12);

    スライサーはExcel2010からの機能なので、PivotテーブルのバージョンもExcel2010のものにしてあげます。







    2014年1月29日 14:56

すべての返信

  • ike560さん、こんばんは。

    PivotCacheとPivotTableにバージョンが指定されていないためだと思います。

    PivotCacheとPivotTableのAddメソッドを、Create/CreatePivotTableメソッドに変えてみてください。

    具体的には、以下の様なコードです。

    xlPivotCache = workbook.PivotCaches().Create(Excel.XlPivotTableSourceType.xlExternal, "ここに実データの範囲をRange型で", Excel.XlPivotTableVersionList.xlPivotTableVersion12);

    xlPivotTable = xlPivotCache.CreatePivotTable(worksheet.get_Range("A2", Type.Missing), "PivotTable1", true, Excel.XlPivotTableVersionList.xlPivotTableVersion12);

    スライサーはExcel2010からの機能なので、PivotテーブルのバージョンもExcel2010のものにしてあげます。







    2014年1月29日 14:56
  • にゃにゃおさん ありがとうございます。

    Pivotテーブルにバージョンがあることに気が付きませんでした。

    PivotテーブルのデフォルトバージョンがExcel2010より前のものになっていました。

    xlPivotTableVersion14を指定して実行したらスライサーは有効になりました。

    2014年1月30日 8:46
  • こんばんは。

    新たな問題が出てきました。たいした問題でないのですが・・・
    Excelが起動しシート上のA2:C19に「PivotTable1 ピボットテーブルレポートを操作するには、この領域をクリックしてください」と言うメッセージが表示されます。
    この領域をクリックすると、以前のバージョンではピボットテーブルのフィールドリストが自動的に表示されましたが、今バージョンではリボンメニュー上の[ピボットテーブルツール]-[オプション]-[フィールドリスト]をクリックしないとフィールドリストが表示されません。メニューの[フィールドリスト]がディフォルトでオンになっていない様です。

    どこかにオプションがあるのでしょうか?


    2014年1月30日 9:30
  • 自己レスです。

    ピボットテーブルのフィールドリストが自動的に表示されました。
    Excelを終了する時、メニューの状態が保持されて、次の起動時に引き継がれる?ようです。

    2014年1月30日 9:48