엑셀은 여러 시트를 편집할 수 있는 스프레드시트 프로그램입니다. 그렇기에 시트를 복사/이동도 가능합니다. 하지만 이 시트를 복사하거나 이동할 때 이름들이 충돌하면서 오류가 발생하기도 합니다.
이는 시트에서 수많은 이름들이 충돌하면서 발생하는 오류입니다. 이 오류가 나오면 경우에 따라서 사용자의 시간을 많이 잡아먹기 때문에 매우 골치아픈 오류입니다.
본론으로 들어가서, 오늘은 엑셀에서의 시트 이동 또는 복사 시 발생하는 이름 충돌 오류를 해결하는 방법에 대해 알아보도록 합시다.
이 오류는 '해당 이름 '(이름)'이(가) 이미 있습니다. 이 이름을 사용하려면 [예]를 클릭하세요. 이동 또는 복사하려는 '(이름)'의 이름을 변경하려면 [아니요]를 클릭하세요.'라는 창이 나옵니다.
이 창에서 [예] 또는 [아니요]를 눌러도 이 창이 여러 번 뜨느라 이 창을 벗어나는게 좀 시간이 걸릴 겁니다. 시간을 좀 잡아먹기에 해결해야 하는 문제입니다.
이제 본론으로 들어가서 이러한 이름충돌 문제를 해결하는 방법에 대해 알아보도록 합시다. 방법 자체는 간단한 것들 밖에 없습니다.
먼저 이 이름 충돌이 일어난 시트에서 상단의 '수식' 탭을 클릭해주세요. 이는 여러 함수들을 사용할 수 있는 탭입니다. 물론 관리도 할 수 있습니다.
이 탭의 '이름 관리자' 도구를 클릭해주세요. 이를 이용해서 이 문서에 있는 이름들을 관리할 수가 있습니다. 여기서 쓸 일이 없는 것들을 삭제할 겁니다.
그리고 이는 굳이 상단의 수식 탭을 클릭하고, '이름 관리자' 도구를 클릭하지 않아도 키보드의 'Ctrl'키 + 'F3'키를 눌러도 됩니다. 'Ctrl'키를 누른 상태에서 'F3'키를 누르면 됩니다.
그러면 위의 사진과 같은 창이 하나 나올 겁니다. '이름 관리자'라는 창입니다. 여기서 '값', '참조 대상'이 오류가 난 것들을 하나하나 다 선택해주시면 되겠습니다. 'Ctrl'키를 누른 상태에서 마우스로 하나하나 선택하면 중복해서 선택할 수 있습니다.
오류가 난 쓸 일이 없는 이름들을 다 선택하고, 상단의 '삭제(D)' 버튼을 클릭해서 제거하면 됩니다. 값이 오류가 났을 때, 대부분 값이 '#REF!'라고 나올 겁니다. 그것들을 선택해서 제거하면 되겠습니다.
그리고 그러한 값들을 좀 더 쉽게 찾을 수 있는 방법도 있습니다. 우측 상단의 '필터(F)'를 클릭하고, 오류가 발생한 이름을 클릭해서, 그런 것들만 보이게 해서 그걸 전부 삭제하면 되겠습니다.
그리고 작업을 더 할 겁니다. 이번엔 VBA 창을 이용해서 매크로를 사용할 겁니다. 이건 좀 복잡하게 느껴질지도 모릅니다. 먼저 엑셀 창에서 좌측 하단의 이 문제를 해결하고픈 시트 탭에 우클릭을 해주세요.
그러면 여러 가지 탭들이 나올 겁니다. 그 중 '코드 보기(V)' 탭을 클릭해서 VBA 창을 열면 됩니다. 정확히는 'Microsoft Visual Basic for Applications' 창입니다. 흔히 VBA 창이라고 부릅니다.
이 창은 굳이 이렇게 안 하고, 상단의 '보기' 탭을 클릭한 다음, '매크로'를 클릭하고, 나온 창에서 매크로 하나를 선택하고 '편집' 버튼을 클릭해도 띄울 수 있습니다. 아니면 'Alt'키 + 'F11'키를 눌러도 됩니다.
그러면 위의 사진과 같은 창이 하나 나올 겁니다. 이 창에서 좌측을 보면 여러 가지 탭이 있습니다. 여기서 이 문제를 해결할 시트에 우클릭을 해주세요.
우클릭을 하면 여러 탭들이 나올텐데, 이 중 '삽입(N)'을 클릭하고, 그 옆에 나오는 탭 중 '모듈(M)' 탭을 클릭해주세요.
이는 그 시트에 모듈을 하나 생성하는 작업인데, 모듈을 곧 매크로입니다. 우리는 매크로를 이용해서 이 문제를 해결할 겁니다. 위에서 서술했듯이, 이 방법은 좀 복잡할 수도 있습니다.
클릭하면 위의 사진처럼 VBA 창 중앙에 이러한 모듈 창이 나옵니다. 여기서 위의 사진과 같은 내용을 따라 입력해주세요.
Sub show_Names()
Dim n As Name
For Each n In ThisWorkbook.Names
n.Visible = True
Next n
End Sub
여기에 'n.Visible = True' 다음 행을 하나 더 만들고, 'n.Delete'라고 입력을 하면, 작업이 한 층 더 편해질 겁니다. 그러는 것을 추천합니다.
그리고 이 창에서 키보드의 'F5'키를 눌러주세요. 이를 누르면 이 모듈의 매크로가 바로 실행될 겁니다. 이렇게 간단하게 실행을 할 수 있죠.
실행을 했으면 이제 이 VBA 창을 닫아도 됩니다. 그리고 방금 위에서 했던 것처럼 다시 '이름 관리자' 창을 열어주세요. 상단의 '수식' 탭을 클릭하고 '이름 관리자' 도구를 클릭하면 될 겁니다.
그러면 여기에 숨겨져 있었던 이름까지 전부 보일 겁니다. 그것들 중 오류가 발생한 것들을 전부 삭제해주시면 되겠습니다. 'n.Delete' 행을 입력한 경우, 이 작업을 하지 않아도 됩니다.
그리고 이제 이 문서를 그냥 닫거나 저장을 하면 이런 창이 나올 수도 있습니다. 이는 매크로를 저장하지 못하는 일반 통합 문서의 파일 형식을 가지고 있기 때문에 저장할 때 이런 창이 나오는 겁니다.
대충 이 창의 내용을 요약하자면, 이 매크로 기능이 포함되도록 저장하려면 '아니요(N)' 버튼을 클릭하고, 매크로를 저장하지 못하는 통합 문서로 계속해서 저장하려면 '예(Y)' 버튼을 클릭하라고 합니다.
앞으로도 이러한 문제가 일어나게 되면, 이 매크로를 이용해서 해결할 수 있도록 매크로를 저장할 수 있는 통합 문서로 저장합시다. '아니요(N)' 버튼을 클릭해주세요.
그러면 위의 사진처럼 '다른 이름으로 저장하기'라는 창이 하나 나올 겁니다. 일단 이 창에서 이 파일을 저장할 폴더로 이동해주세요.
그리고 하단의 '파일 형식(T)'의 값을 클릭해주세요. 기본적으로 기본 통합 문서인 '.xlsx'로 되어 있을 겁니다. 이를 클릭해서 'Excel 매크로 사용 통합 문서 (*.xlsm)'으로 값을 바꿔주세요.
그런 다음 창 우측 하단의 '저장(S)' 버튼을 클릭해서 파일을 저장하면 되겠습니다. 이렇게 하면 이제 앞으로 매크로를 저장할 수 있는 겁니다. 반면, 이렇게 안 하고 다른 통합 문서 파일 형식으로 저장하게 되면, 방금 작성했던 매크로(모듈)가 사라지게 됩니다.
이 매크로를 계속해서 사용을 할 것이라면, 앞으로도 이렇게 저장을 하면 될 겁니다. 방금 다른 이름으로 저장한 '.xlsm' 확장자의 파일을 열고, 앞으로 그 파일을 편집하고 일반 저장을 하며 사용하면 되겠습니다.
아니면 앞으로 이 시트 이동 또는 복사 시 이름 충돌 문제를 해결할 일이 없을 거라면, 그냥 이렇게 매크로 사용 통합 문서로 저장 안 하고, 일반 문서로 저장하면서 이 문서를 편집하며 사용해도 괜찮습니다.
주관적으로 저는 앞으로 이 이름 충돌 문제를 해결할 일이 없을것 같으니, 그냥 일반 문서로 이 엑셀 파일을 저장하면서 편집하며 사용하는 것을 추천합니다.
아무튼 이렇게 해서 이 문제가 다 해결한 것이니, 이제 마음대로 시트를 복사 또는 이동시킬 수가 있습니다. 대부분 방금 서술했던 방법을 따라하면, 시트를 복사/이동시켜도 전에 발생했던 이름 충돌 오류가 발생하지 않을 겁니다.
엑셀 문서 편집창 좌측 하단의 시트란에 복사 또는 이동하고 싶은 시트에 우클릭을 하고, '이동/복사(M)...' 탭을 클릭해서, 자신이 원하는 대로 시트를 이동시키거나 복사할 수 있을 겁니다.
만약 위에서 서술했던 방법들을 전부 따라했는데도 이름 충돌 문제가 계속해서 발생한다면, 한번 상단의 '수식' 탭을 클릭하고 '이름 관리자'를 클릭해서 이번엔 모든 이름을 삭제해보도록 합시다. 그렇게 하면 진짜 해결될지도 모릅니다.
만약 이 때문에 문서가 원하는 대로 편집이 안 되었다면, 키보드의 'Ctrl'키 + 'Z'키를 눌러서 이름을 삭제했던걸 되돌리면 될 겁니다.
이제 이렇게 시트를 복사하거나 이동시켰을 때 발생하게 되는, 이름이 중복되어서 발생하는 이름 충돌 오류를 해결해보았으니, 원하는 대로 문서를 편집하면 되겠습니다. 이 문제를 해결했으니, 시트를 마음대로 편집할 수 있겠죠.
만약 나중에 이런 이름 충돌 문제가 다시 한번 더 일어난다고 해도 위에서 서술했던 방법으로 이 문제를 또 다시 똑같이 해결하면 될 겁니다.
이상 간단히 엑셀 문서에서 시트를 복사하거나 이동시켰을 때에 발생하게 되는 이름 충돌 문제를 해결하는 방법에 대해 알아보았습니다. 봐주셔서 감사합니다.