本記事は、Excel C# Script入門講座の1記事です。
セルのクリア
Rangeオブジェクトには「セルに含まれる情報をクリアするための」メソッドが目的に応じ各種用意されています。
メソッド名 | 概要 |
---|---|
Clear | 全ての情報(数式と書式設定、コメント)を削除します。なお、グループ化は解除されません。 |
ClearComments | コメントを削除します。 |
ClearContents | 数式を削除します。書式設定は残ります。 |
ClearFormats | 書式設定を削除します。数式は残ります。 |
ClearHyperlinks | ハイパーリンクだけを削除します。セルのその他の内容 (テキストなど) や書式設定には影響しません。 |
ClearNotes | コメントを削除します。ClearCommentsメソッドと同じ振る舞いをします。 |
ClearOutline | 指定範囲にかかるアウトラインを削除(グループ化を解除)します。 |
サンプルコード
var activeSheet = Excel.ActiveWorkbook.ActiveSheet; //アクティブなシートのセルB1~D3の範囲の全てを削除 activeSheet.Range(Cells(1,2),Cells(3,4)).Clear(); //アクティブなシートのセルB1~D3の範囲の数式、文字列をクリア activeSheet.Range("B1:D3").ClearContents(); var sheet1 = Excel.Worksheets("Sheet1"); //Sheet1のセルB1~D3の範囲の書式を削除 sheet1.Range("B1:D3").ClearFormats(); //Sheet1のセルC3のコメント文を削除 sheet1.Range("C3").ClearComments(); //Sheet1のセルA1~B2に含まれるコメント文を削除 sheet1.Range("A1:B2").ClearNotes(); //Sheet1のセルA1~B2に含まれるハイパーリンクを削除 sheet1.Range("A1:B2").ClearHyperlinks();
Cellsプロパティに引数を何も指定しない場合、シートのセル全範囲を示すRangeオブジェクトが返されます。
下記例では、引数なしのCellsプロパティを用いることでシート内の全ての情報を削除しています。
//アクティブなシートのセル全範囲をクリア
var activeSheet = Excel.ActiveWorkbook.ActiveSheet;
activeSheet.Cells().Clear();
ClearOutlineメソッドの怪
ClearOutlineメソッドは、グループ化を解除します。指定したセル範囲にかかるグループ化がある場合は、そのグループ化が解除されます。
var activeSheet = Excel.ActiveWorkbook.ActiveSheet;
activeSheet.Range("C1:E1").ClearOutline();
なお、手元の環境では、グループ化されていない行・列のセルが指定されている場合には、シート内のグループ化が全て解除されました。しかしながら、この挙動は公式に明示されたものではありません。
ClearOutlineメソッドの詳細な挙動はMSDNにも記載されておらず、よくわからないところがあります。
アクティブシート内のアウトラインを全て解除する場合には、下記のように引数なしのCellsプロパティを利用すると確実です。
var activeSheet = Excel.ActiveWorkbook.ActiveSheet; activeSheet.Cells().ClearOutline();