본문 바로가기

길라잡이/사용법

셀서식이 너무 많습니다.


엑셀을 사용하는 분들이라면, 한번쯤은 이런 메시지를 보았던 기억을 가지고 있을 것입니다.



엑셀의 워크북(파일)은 4천여개의 셀서식 조합을 가질 수 있지만, 매크로 바이러스등에 감염된 파일을 가지고 있는 경우 셀서식스타일,이름등을 자동적으로 추가하게 되어 엑셀의 관리할 수 있는 한계를 벗어나기 때문에 오류 메시지를 보여주는 것이라고 합니다.

그런데 일부 백신프로그램은 해당 파일을 검색해도 바이러스 검색이 되지 않을 뿐 아니라, 검색이 되어도 바이러스코드 자체만 치료할 뿐 셀서식 등에 대한 오류 문제는 해결되지 않는 문제가 있습니다.

셀서식 오류뿐만 아니라, Worksheet를 복사하거나 이동할 경우 Sheet이름이 이미 있어서 발생하는 이름충돌 오류메시지도 있지요.



이러한 오류는 해당 오류가 발생하는 근본적인 원인을 차단해야 하는데, 일일히 오류가 발생된 부분을 찾아서 삭제하는 것은 결코 쉬운일이 아닙니다.

그리고 회사에서 업무상 유관부서등에 파일을 배포하거나 받아서 사용하게 될 경우, 누군가의 컴퓨터에서 사용되었던 감염된 파일을 통해 다시 반복되는 것이기 때문에 내 컴퓨터에 있는 파일만을 치료한다고 해서 해결되는 문제는 결코 아닙니다. 


이러한 메시지가 나타난 파일을 살펴보면 아래와 같이 자신이 만들지도 않았던 셀서식, 스타일 및 이름등을 볼 수 있습니다.


* 스타일 : 메뉴바 서식(O) - 스타일(S)
* 이름    : 메뉴바  삽입(I) - 이름(N) - 정의(D) 에서 확인 가능합니다.


*  해 결 방 법 

일일히 선택해서 삭제할 수도 있고 매크로를 이용할 수 있지만, 이러한 문제를 경험한 분 중 VBA로 만들어 놓은 프로그램을 활용해서 치료를 해 보도록 하겠습니다.


1. 오류가 발생된 Excel file을 Open합니다.
2. 아래 Excel 파일을 다운받아 실행시킵니다.


(파일출처 :
http://examo.co.kr ,파일) - 회원가입 후 다운로드 가능, 황기성님이 작성한 파일입니다.)

아래와 같이 도구모음이 추가 되는 것을 확인할 수 있습니다.

그림과 같이 아이콘을 클릭하면 아래와 같이 이름삭제마법사가 실행됩니다.

   -기본적으로 해당 엑셀 파일에서 지정하지 않은 이름을 자동 선택하도록 되어 있습니다.
     선택되지 않은 이름중에 불필요한 부분을 추가 선택하여 삭제도 가능합니다.

불필요한 이름을 모두 삭제하여, 정의된 이름이 없을 경우 아래와 같이 메시지가 나타납니다.



불필요한 스타일이 많거나 셀서식이 많다는 오류가 발생될 경우에는 엑셀프로그램에 내장되어 있는 "Microsoft Script Editor"를 이용하여 문제를 해결할 수 있습니다.

1. 문제가 상기 파일을 대상으로 계속 설명을 드립니다.
2. 아래 그림과 같이 엑셀 메뉴에서 "Microsoft Script Editor"를 실행시킵니다.

3. 프로그램이 실행되면 실행창의 빈라인을 선택 후 두번정도 친후 파일을 저장합니다.

4. 저장이 완료되어 불필요한 스타일과 셀서식이 정리가 되면, 아래와 같이 저장합니다.


5. Microsoft Script Editor를 닫고 이름, 스타일 및 셀서식의 불필요한 부분이 삭제되었는지 확인해 보시기 바랍니다.

Script editor를 이용할 경우 해당 파일에서 직접 사용된 셀서식은 삭제되지 않기 때문에, 기본 셀서식을 제외한 추가 셀서식을 삭제한는 매크로와는 차이가 있습니다. 기본 셀서식외에 사용자정의 셀서식을 사용한 경우에 적합하며, 기본 셀서식을 제외한 모든 셀서식을 삭제하려는 경우 아래의 코드를 매크로로 작성하여 사용하셔도 됩니다.

 Dim n As Integer, yn As Byte
On Error Resume Next

For n = ActiveWorkbook.Styles.Count To 1 Step -1
    If Not (ActiveWorkbook.Styles(n).Name = "Normal") Then
        ActiveWorkbook.Styles(n).Delete
    End If
Next



상기 오류내역은 엑셀2003을 기준으로 작성되었기 때문에 2007 또는 그 이후 버전에서는 확인되지 않은 사항입니다.