none
엑셀 xlsx 형식으로 저장할 때 16128칼럼이 추가되어 저장되는 오류 발생 RRS feed

  • 질문

  • MS Visual C++ .Net 2003에서 엑셀 자동화 기능을 사용중입니다.

    엑셀은 2007 버전을 사용중인데, 작업하는 파일은 매크로가 있어서 xlsm으로 저장하고 있고요.

    타 파일의 시트를 복사하는 중에 현재 파일이 xlsx나 xlsm 형식인 경우 16128 칼럼 뒤까지 사용 영역으로 나옵니다(Ctrl+End 키 사용으로 확인). 현재 파일이 xls 형식일 때는 이런 현상이 발생하지 않아요(ExcelTestDlg.cpp 내 MergeFile 함수 참조).

    몇 번 디버깅을 하다 보니 CExcelManger::Close 함수를 호출하면 항상 이 문제가 발생하고, 이 함수를 호출하지 않고 그냥 CExcelManager::Show 함수까지만 호출해서 엑셀 프로그램에서 볼 때는 위 현상이 발생하지 않습니다. 그러니까 현재 파일(strPathNameDest)이 xlsx나 xlsm일 때 CExcelManager::Close 함수가 호출되면 16128칼럼 뒤까지 사용영역으로 저장됩니다.

    ==> 타 파일의 시트를 새로 편집해서 작업한 결과 원활하게 시트복사가 이루어졌습니다. 답변 안 해 주셔도 괜찮습니다.

    2013년 1월 22일 화요일 오전 9:59

모든 응답

  •  

    부분 소스 공유 부탁드립니다.

    제공해주신 정보로는 정확한 가이드가 불가능합니다.

    workbook.save 사용방법 확인 부탁드립니다.

    [참고자료]

    Workbook.Save Method (Excel)

    Workbook.Saved Property

    How to: Programmatically Save Workbooks

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

     

    2013년 1월 25일 금요일 오전 5:14
    중재자