1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-03-28

課題

エクセルの列数が変動するため、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のメソッドだと思うんですが…?

1
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?