C# Excel 2007 추가기능(AddIn) 만들기

 

엑셀 리본 컨트롤에 새로운 탭을 만들어서, 사용자가 선택한 셀들의 합과 평균을 메시지 창에 보여주는 작업을 진행하겠습니다.

 

 

 

우선 프로젝트를 하나 생성하겠습니다. 설치된 테블릿에서 Office를 선택후 Excel 2007 추가 기능을 선택 후 솔루션 이름을 “AboutExcelAddIn”으로 생성합니다.

 

 

 

생성 후 프로젝트에서 오른쪽 마우스를 클릭하여 새 항목 추가를 클릭합니다. 리본(비주얼 디자이너)를 선택하여 생성합니다.

 

 

 

리본을 생성 후에 솔루션 탐색기를 확인해보시면 아래와 같습니다.

 

 

 

 

먼저 Ribbon1.cs를 클릭합니다. 아래의 이미지와 같이 ButtonGroup Sum, Avg Button을 생성합니다.

 

 

Sum Name btnSum, Avg Name btnAvg로 지정합니다. 더블 클릭하여 버튼이 클릭이 되었을 때 이벤트들을 등록합니다.

 

ThisAddIn 코드를 보시면 기본적으로 아래와 같은 코드가 자동으로 추가되어 있는 것을 확인하실수 있습니다.

 

namespace AbooutExcelAddIn
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            
        }
 
        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
           
        }
 
        #region VSTO generated code
 
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }
        
        #endregion
    }
}

 

 

Ribbon 개체를 생성 후 Sum Avg 버튼에 대한 Click 이벤트를 등록하였습니다. Application 개체를 통해서 Excel에 액세스 할 수 있습니다. 아래의 코드에서는 사용자가 선택한 Cell들을 가져오는 작업을 진행하였습니다. dynamic이기 때문에 Intelligence를 확인 하실 수 없습니다. 구글링을 통해 API를 검색하시거나 디버깅해서 어떤 값들이 있는지 확인하셔야 합니다.

 

 

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Office.Tools.Ribbon; using Excel = Microsoft.Office.Interop.Excel; using Microsoft.Office.Interop.Excel; namespace AbooutExcelAddIn {     public partial class Ribbon1     {         void btnAvg_Click(object sender, RibbonControlEventArgs e)         {             double sum = 0;             int count = 0;             Application app = Globals.ThisAddIn.Application;             foreach (var item in app.Selection.Cells)             {                 string text = item.FormulaLocal;                 double value = 0;                 if (double.TryParse(text, out value))                 {                     sum += value;                     count++;                 }             }             double avg = sum / count;             System.Windows.Forms.MessageBox.Show(avg.ToString());         }         void btnSum_Click(object sender, RibbonControlEventArgs e)         {             double sum = 0;             Application app = Globals.ThisAddIn.Application;             foreach (var item in app.Selection.Cells)             {                 string text = item.FormulaLocal;                 double value = 0;                 if (double.TryParse(text, out value))                     sum += value;             }             System.Windows.Forms.MessageBox.Show(sum.ToString());         }     } } 

Ribbon을 추가하는 작업을 하지 않았는데, 어떻게 추가되었는지 궁금하신분들은, Ribbon Designer Class를 확인해보시면 답이나옵니다.

 

 

완료되었습니다. 컴파일을 진행 하신후 실행하게 되면 아래와 같이 동작하는 Excel 추가기능을 작성하신겁니다.

 

 

 

Excel 옵션->추가 기능에 가보시면 작성한 추가 기능이 등록된 것을 확인 할 수 있습니다.

 

 

 

프로젝트 파일 :

AbooutExcelAddIn.zip

 

+ Recent posts