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です。(分かりやすいように罫線を入れておきました。)
その他、ブロックで結合したい場合は、activeSheet.Range[“F6:H8”]のようにすると以下の黄色の部分のように結合できます。
かなり簡単に結合ができました。
コードで以下のようなものを参考にしてもらいながら、数値⇔アルファベットを適宜変換しながら行列で指定して結合してください。