MS 추가기능 및 앱 개발

[엑셀 추가기능 배포] 워크시트별로 분할 저장하기

루아흐뉴마 2019. 7. 15. 23:17
반응형








추가기능 사용방법


  • VSTO를 통해 개발한 엑셀 추가기능이다.
  • 많은 워크시트를 별도 엑셀파일로 저장하고 싶을 때 사용하면 좋은 기능이다.
  • 현재는 엑셀파일 내의 모든 워크시트를 xlsx 포맷으로 저장한다.
  • 매크로사용 통합문서(.xlsm)파일을 저장하는 경우에도 xlsx 포맷으로 저장한다.
  • 추후 저장형식을 사용자가 임의로 지정할 수 있도록 보완할 계획이다.
  • ※ 참고로 특별한 일이 있지 않는 한 C#으로 개발한 코드를 제공할 예정이다.
  • ※ VBA로 추가기능을 개발하면서 혼란스러운 부분이 있어 코딩 언어를 C#으로 변경했다.

  • 설치 방법
  • 1) 첨부파일의 압축 파일을 압축 해제한다. (아무 곳이듯 상관 없음)
  • 2) setup.exe 파일을 (반드시)관리자 권한으로 실행한다. (마우스 오른쪽 클릭 -> 관리자 권한으로 실행)
  • 3) 다음, 설치를 클릭하면 설치가 완료된다.

  • 사용 방법
  • 1) 엑셀 파일을 연다.
  • 2) 루아흐뉴마 추가기능 탭의 SaveSheets 단추를 클릭한다.
  • 3) 폴더선택 대화창이 열리면 시트가 저장될 폴더를 지정한다.

  • 삭제하는 방법
  • 1) 시작 -> 제어판 -> 프로그램 및 기능
  • 2) 설치 날짜를 기준으로 내림차순 정렬
  • 3) 설치된 프로그램을 선택하여 제거


추가기능 실행 동영상




메인 코드(언어: C#)


private void button1_Click(object sender, RibbonControlEventArgs e)
{
    Excel.Workbook wb = Globals.ThisAddIn.GetObjWb(); //워크북 개체 설정
    MsoFileDialogType folderPicker = MsoFileDialogType.msoFileDialogFolderPicker; //폴더선택 대화창 유형 개체 설정
    Globals.ThisAddIn.Application.FileDialog[folderPicker].Show(); //폴더선택 대화창 Open
    string myPath = Globals.ThisAddIn.Application.FileDialog[folderPicker].SelectedItems.Item(1).ToString(); //선택된 폴더경로 myPath에 저장
    try
    {
        foreach (Excel.Worksheet ws in wb.Worksheets) //워크북의 각 시트를 순환하면서
        {
            Excel.Workbook newWb = Globals.ThisAddIn.Application.Workbooks.Add(); //시트를 옮길 워크북 생성
            ws.Copy(Before: newWb.Worksheets[1]); //새로 생성된 워크북에 시트 복사
            foreach (Excel.Worksheet ws2 in newWb.Worksheets)
            {
                if (ws2.Index > 1) { ws2.Delete(); } // newWb의 시트1을 제외한 나머지 삭제
            }
            newWb.SaveAs(Filename: myPath + "/" + ws.Name + ".xlsx"); //newWb을 선택한 경로에 저장하기
            newWb.Close(SaveChanges: true); //변경된 사항을 저장하여 닫기
        }
    }
    catch (Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.ToString());
    }
}




SaveSheets.zip

 Copyright (2019) Ruahneuma. All Rights Reserved.


반응형