VSTO Excel セルの結合方法

Excel
スポンサーリンク

C#のコードでExcelのセルを以下に結合するかというものです。簡単なので、ボタンを追加しながらコードを書きます。(開発環境 Visual Studio 2019ですが、2017とさほど変わっていません。)

まずはボタンを追加します。

 

次に、良さそうなボタンアイコンがあったので、OfficeImageIdを「MergeCells」に設定。その他は以下の画像のように設定します。そのほか主な所では、ControlSizeを「RibbonControlSizeLarge」に設定。 垂直と水平の二つのボタンを作成(Namge)は、buttonMerge, buttonHorizontalMerge に設定しました。前者はVertical省略。

ボタンを追加して、項目設定

 

デフォルトだと、Ribbon.cs[デザイン]と書かれたタブの作成したボタンをクリックして、buttonMerge_Click()関数を生成してください。

private void buttonMerge_Click(object sender, RibbonControlEventArgs e)
{
   // 現在のワークシート取得
   Microsoft.Office.Interop.Excel.Worksheet activeSheet 
      = Globals.ThisAddIn.Application.ActiveSheet;

   // セルC2-C8選択
   Microsoft.Office.Interop.Excel.Range range 
      = activeSheet.Range["C2:C8"];

   // 選択セルの結合
   range.Merge();
}

同じく水平側も作成。

private void buttonHorizontalMerge_Click(object sender, RibbonControlEventArgs e)
{
   // 現在のワークシート取得
   Microsoft.Office.Interop.Excel.Worksheet activeSheet 
       = Globals.ThisAddIn.Application.ActiveSheet;

   // セルD2-H8選択
   Microsoft.Office.Interop.Excel.Range range 
       = activeSheet.Range["D2:H2"];
 
   // 選択セルの結合 
   range.Merge();

}

あとは、F5のデバッグモードでエクセルを起動して、以下のように「アドイン」タブにボタンが出ているかと思います。

ボタンが「アドイン」タブに表示される

 

それぞれのボタンを押して、コードで選択した範囲が結合されていればOKです。(分かりやすいように罫線を入れておきました。)

縦にC2~C8 /横にD2~H8が各々結合

 

その他、ブロックで結合したい場合は、activeSheet.Range[“F6:H8”]のようにすると以下の黄色の部分のように結合できます。

ブロックで指定して結合

かなり簡単に結合ができました。

コードで以下のようなものを参考にしてもらいながら、数値⇔アルファベットを適宜変換しながら行列で指定して結合してください。

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