VSTO C# Excelアドインで行や列をグループ化・グループ化解除する方法

C#

VSTOはVisual Studio Tools for Office の略で、officeのアドインやマクロ付きドキュメントを、VB.netやc#などで記述できるフレームワークです。Visual Studioで開発することができ、VBAとオサラバできるMS公式フレームワークです。

この記事では、c#で、行や列をグループ化したりグループ化を解除する方法を紹介します。

グループ化って?

グループ化とは行や列を非表示にすることができる機能です。セル幅や高さを小さくする非表示とは違い、グループ化すると行や列に表示と非表示を切り替えるボタンが追加されます。

アウトラインとも言われていますね。

選択した列をグループ化・グループ化解除するコード

まずは選択したセル範囲をselectedRangeオブジェクトに格納します。選択したセル範囲はGlobals.ThisAddIn.Application.Selectionで取得できます。

このselectedRangeからGroup()メソッドを呼ぶとグループ化されます。UnGroup()メソッドを呼ぶとグループ化が解除されます。

以下の関数GroupColumnは引数にbool型のgroupModeを持ちます。groupModeがTrueの場合はグループ化、Falseの場合はグループ化解除になります。

        public static void GroupColumn(bool groupMode)
        {
            Excel.Range selectedRange = Globals.ThisAddIn.Application.Selection;
            if (groupMode) selectedRange.Group();
            else selectedRange.Ungroup();
        }

選択した行をグループ化・グループ化解除するコード

行をグループ化するときも、列の時と基本的には一緒です。セル範囲オブジェクトのGroup()Ungroup()メソッドを呼び出します。

ただし、列の時より行の方がちょっと面倒です。何が面倒かというと、行全体指定のセル範囲表現にする必要があります。例えば、4:10と記述するとこれは4行目から10行目の行全体を範囲指定する表現です。このように、現在のセル範囲から行全体の範囲選択に変換するロジックが含まれています。

        public static void GroupRow(bool groupMode)
        {
            Excel.Range selectedRange = Globals.ThisAddIn.Application.Selection;

            int startRowIndex = selectedRange.Row;
            int endRowIndex = selectedRange.Row + selectedRange.Rows.Count - 1;

            Excel.Range groupRange = Globals.ThisAddIn.Application.ActiveSheet.Rows[startRowIndex + ":" + endRowIndex];

            if(groupMode) groupRange.Group();
            else groupRange.Ungroup();

        }

ソースコード全文

ソースコード全文は以下のgithubリポジトリに格納しています。

コンパイルすれば動作しますので、Visual Studioをお持ちの方は遊んでみてください。

GitHub - harus0313/cliesx
Contribute to harus0313/cliesx development by creating an account on GitHub.


【VSTO】c#でExcelアドインやマクロ付きドキュメントを開発するためのサンプルコードをまとめました!ぜひ活用ください!

  1. VSTO c# Excelブックを読み取り専用/書き込みモードにする方法

  2. VSTO C# Excelアドインでシートを追加する方法

  3. VSTO C# Excelアドインでアクティブシートを削除する方法

  4. VSTO C# Excelアドインでアクティブシートをコピーする方法

  5. VSTO C# Excelアドインでセルの左詰め・右詰め・中央寄せ・選択範囲で中央にする方法

  6. VSTO C# Excelアドインでセルの上詰め・下詰め・上下中央にする方法

  7. VSTO C# Excelアドインでクリップボードパネルを表示・非表示する方法

  8. VSTO C# Excelアドインで数式バーを表示・非表示する方法

  9. VSTO C# Excelアドインでフルスクリーンモードをオン・オフする方法

  10. VSTO C# Excelアドインで目盛り線の表示・非表示を切り替える方法

  11. VSTO C# Excelアドインでカラーパレットを使って文字色を変える方法

  12. VSTO C# Excelアドインでアクティブブックのファイルパス・フォルダパスを取得する方法

  13. VSTO C# Excelアドインでアクティブワークシートのシート名を取得する方法

  14. VSTO C# Excelアドインで行や列をグループ化・グループ化解除する方法

  15. VSTO C# Excelアドインで選択したセルをマージ(結合)したり元に戻す方法

  16. VSTO C# Excelアドインで各種ダイアログを表示する方法

コメント

タイトルとURLをコピーしました