C#
Excel
VSTO
Autofilter

C#でエクセルにオートフィルターを設定しようとするとエラーになる

More than 1 year has passed since last update.


課題

エクセルの列数が変動するため、C# + VSTO で動的にオートフィルターの適用範囲を変更しようとしてはまりました。

Excel.Range A1 = Cells[1, 1];

if (AutoFilterMode)
A1.AutoFilter();

A1.AutoFilter();

というコードを実行すると、

RangeクラスのAutoFilterメソッドが失敗しました。

という例外が発生します。


環境

アセンブリ
Version

C#
4.0.0.0

Microsoft.Office.Tools
10.0.0.0


解決

型を Excel.Range ではなく dynamic でとるとうまくいきました。

dynamic A1 = Cells[1, 1];

if (AutoFilterMode)
A1.AutoFilter();

A1.AutoFilter();


参考

C# と VB.NET の質問掲示板 / Excelにフィルターを設定する方法


余談

解決はしましたが、原因というか、なぜこれでうまくいくのかの理屈がわからない。

MSDNみる限り、Rangeのメソッドだと思うんですが…?