[Outlook 2003, 2007]받는 사람을 선택하면 전자 메일 주소와 팩스 번호 연락처가 두 번 나열된다



[Excel] 문서에 오류가 있는지 확인하는 방법


Excel 문서를 편집하는 도중에

  • "셀 서식이 너무 많습니다." 메시지가 나오면서 서식을 더 이상 추가할 수 없거나,
  • 문서의 크기가 예상보다 너무 클 때,
  • 특정 이름이 이미 있다는 메시지가 나오면서 '이름 충돌' 메시지가 계속 나올 때가 있을 것입니다.

문서에 오류가 있는지 확인하는 방법에 대해서 설명합니다.

※ 문서를 수정하기 전에 수정 과정에서 데이터가 손실될 가능성이 있으므로 백업 본을 하나 만들어 놓습니다.

현상 및 원인

"셀 서식이 너무 많습니다."

Excel의 Workbook은

  • 97-2003 버전의 경우 약 4,000개
  • 2007 버전의 경우 약 64,000개

의 서로 다른 셀 서식 조합을 가질 수 있습니다.

셀 서식 조합이라는 것은 글꼴 서식(예- 글꼴 종류, 크기, 기울임, 굵은 글꼴, 밑줄 등)이나 괘선(괘선의 위치, 색상 등), 무늬나 음영, 표시 형식, 맞춤, 셀 보호 등을 포함합니다. Excel 2007에서는 1,024개의 전역 글꼴 종류를 사용할 수 있고 통합 문서당 512개까지 사용할 수 있습니다. 따라서 셀 서식 조합의 개수 제한을 초과한 경우에는 "셀 서식이 너무 많습니다." 메시지가 발생하는 것입니다.

그러나 대부분의 경우, 사용자가 직접 넣은 서식으로 개수 제한을 초과하는 경우는 드뭅니다.

  • 셀 서식이 개수 제한을 넘도록 자동으로 서식을 추가해 주는 Laroux나 Pldt 같은 매크로 바이러스에 감염이 되었거나,
  • 매크로 바이러스에 감염이 되었던 문서의 시트를 [시트 이동/복사]하여 가져온 경우 시트의 서식, 스타일이 옮겨와 문제가 될 수 있습니다.

"셀 서식이 너무 많습니다." 메시지가 발생하지 않도록 하기 위한 예방법

  • 글꼴(종류, 크기, 색, 굵기, 기울임, 밑줄), 셀 채우기 색, 행 높이, 열 너비, 테두리(선 종류, 굵기, 색) 등을 하나로 변경, 통합합니다.
  • 다른 파일로부터 시트 이동/복사를 해 올 때에는 이동 복사하려는 원본에 오류가 있지 않은지 사전에 점검을 하고 이동/복사합니다.

이번 포스트의 내용대로 오류를 수정하였음에도 불구하고 셀 서식을 통합할 수 없는 상황이라고 한다면, 시트를 여러 파일로 나누어 사용하셔야 합니다.

문서의 크기가 예상보다 너무 클 때

문서에 그림이나 도형, 차트와 같은 개체가 몇 개 들어가 있지 않고, 시트 수도 작으며, 데이터 입력 범위도 좁은데 비해, 파일 크기가 큰 경우가 있습니다.

대부분의 원인은 눈에 보이지 않는 개체가 많이 삽입되어 있는 경우입니다.

  • 눈에 보이지 않는 개체가 들어가게 되는 원인으로는 다른 문서의 내용을 [시트 이동/복사] 해 왔는데, 그 원본에 이미 눈에 보이지 않는 개체가 많이 있었거나
  • 웹의 내용이나 다른 Application의 내용을 복사한 뒤 붙여 넣었을 때 도형으로 삽입되는 경우가 있습니다.

이름 충돌 오류가 발생하는 경우

Excel에서 이름 정의를 이용하면 간편하게 수식을 편집하거나, Word, Outlook, Access와 같은 다른 Office 프로그램과 연동할 수 있습니다. 그러나 이름 정의에 잘못된 이름이 많이 포함된 경우 '이름 충돌' 오류가 발생하여 새로운 이름으로 적으라는 메시지가 발생할 수 있습니다.

Ctrl+F3을 누르면, 이름 관리자 (또는 이름 정의) 창이 열립니다. 새 문서에서 확인하면, 이름 정의는 기본적으로 비어 있습니다.

1_1

1_2

직접 입력하지 않은 이름이 많이 들어가 있다면 다른 문서에서 [시트 이동/복사]를 통해서 옮겨와 졌을 가능성이 높습니다. 물론 표 삽입과 같은 기능을 통해서 자동으로 삽입되는 경우는 있습니다.

문제가 있는 이름의 경우 이름이 무엇인지 알 수 없도록 이름의 글자가 깨져 있거나, 'ㄱ', 'ㄴ'과 같은 이름으로 추가 되어 있는 경우가 많습니다.

문서 점검하기

아래의 순서대로 문서를 점검해 보십시오.

문서에 따라서 잘 해결될 수도 있으나 적용이 안 되는 문서도 있을 수 있습니다.

매크로 바이러스가 포함되어 있는지 확인

Excel의 기능에는 '매크로'라는 것을 이용하여 원하는 기능을 자동화할 수 있습니다. 기능으로 제공되지 않는 것을 매크로 코드를 통해 자동화 할 수 있으므로 매우 편리한 기능입니다. 그러나 이 기능을 악용하여 셀 서식을 한꺼번에 개수 제한을 초과하도록 넣어주는 Laroux, Pdlt와 같은 매크로 바이러스가 있습니다. 바이러스가 치료되었다고 하더라도 셀 서식, 스타일들은 그대로 남아 있기 때문에 문서를 그대로 이용할 경우 문제가 발생할 수 있습니다.

아래와 같은 방법으로 바이러스에 감염되었던 파일을 치료할 수 있습니다.

문제 있는 시트 삭제

1. Alt+F11을 누르면 'Microsoft Visual Basic' 창이 열립니다.
2. [보기]-[프로젝트 창]을 선택하면 왼쪽에 '프로젝트-VBAProject' 창이 열립니다.
3. 시트 이름 중에서 'XXXXXXX', 'VXXXXX'와 같은 이름의 시트 또는 차트가 있는지 확인합니다.
4. [보기]-[속성 창]을 누릅니다.
5. 'XXXXXXX' 시트 또는 차트를 선택하면 그에 해당하는 속성이 '속성' 창에 표시됩니다.
6. 'Visible' 속성이 '2 – xlSheetVeryHidden'으로 설정되어 있는지 확인합니다. '2 – xlSheetVeryHidden'으로 설정되어 있는 경우, 파일에 시트가 있음에도 불구하고, VBA창을 열기 전까지는 알 수 없습니다.
7. 'Visible' 속성을 ' -1 – xlSheetVisible'로 변경하면, 시트에 표시가 됩니다.
8. Excel 시트 창을 선택하면 숨겨져 있던 시트 또는 차트가 보입니다.
9. 시트 또는 차트에 사용하지 않는 내용이 들어 있으면, 마우스 오른쪽 버튼을 눌러 [삭제]를 누릅니다.

시트 이름에 Sheet1111111(Sheet1), Sheet11111111111111(Sheet2) 와 같은 이름이 있는 경우

또한, 프로젝트-VBAProject 창에서 Microsoft Excel 개체를 확인 시 일반적으로 Sheet1(Sheet1), Sheet2(Sheet2)와 같은 순서로 시트가 증가 합니다. 그러나 시트 이름이 Sheet1111111(Sheet1), Sheet11111111111111(Sheet2)와 같은 순서로 시트가 증가한다면, 새로운 문서로 파일 전체 내용을 옮기도록 합니다.

1_3

[새로운 파일로 문서를 옮기려면 다음과 같은 방법으로 합니다.]

A. 새 문서를 엽니다.
B. 시트를 원본의 수만큼 삽입합니다.
C. 각 시트의 이름을 원본의 시트 이름과 같게 설정합니다.
D. 첫 번째 시트의 전체 셀을 선택 후 복사 합니다.
E. 새 문서의 동일 이름의 시트에 붙여넣기 합니다.
F. 나머지 시트들도 동일한 방법으로 전체 셀 선택 후 복사/붙여넣기 합니다.
G. 새로 생성된 파일을 저장합니다.
H. Excel 2007에서는 [데이터] 메뉴의 [연결 편집], Excel 2003에서는 [편집]의 [연결] 메뉴를 선택합니다.
I. 연결 정보 중 원본 문서와 연결된 이름이 있다면 선택합니다.
J. [원본 변경]을 누르고 새로 저장한 문서 이름으로 선택한 뒤 [닫기]를 누릅니다.

문제 있는 모듈 삭제

1. Alt+F11을 눌러 다시 'Microsoft Visual Basic' 창을 엽니다.
2. 아래의 그림과 같이 laroux1 와 같은 이름의 모듈이 있다면, 마우스 오른쪽 버튼을 눌러 [<Module name> 제거]를 선택합니다.

1_4

3. "제거하기 전에 <Module name>을(를) 내보내시겠습니까? " 메시지에서 [아니오]를 누릅니다.

불필요한 코드 삭제

'Microsoft Excel 개체' 하위의 Sheet, Chart를 각각 더블 클릭하여 열었을 때 코드가 들어 있는지 확인합니다. 필요에 의해서 만든 매크로가 아니라면 코드를 모두 지웁니다.

1_5

불필요한 매크로 삭제

1. Microsoft Visual Basic 창은 닫고 Alt+F8을 누릅니다.
2. Worksheet에 포함된 매크로가 표시됩니다.
3. 사용하지 않는 매크로는 선택 후 [삭제]를 누릅니다.
4. 삭제가 되지 않는 것은 그대로 둡니다.

1_6

문서를 다른 이름으로 저장해 둡니다.

불필요한 개체 삭제

1. 2007 버전인 경우

A. []-[찾기 및 선택]-[선택 창]을 누릅니다.
B. 시트에 삽입된 개체들이 표시됩니다.
C. 아래의 그림과 같이 되어 있다면 '직사각형 24'는 화면에 보이고, 나머지 개체는 보이지 않습니다.

1_6_1

D. 어떠한 개체인지 확인하려면 [모두 표시]를 누릅니다.
단, 개체가 너무 많을 경우 화면에 표시하느라 시간이 오래 걸릴 수 있으므로 주의하십시오. 
E. 제거를 원하는 개체를 선택 후 삭제 합니다.
Ctrl 키를 누르면서 마우스를 클릭하면 다중 선택이 가능합니다.
F. 한꺼번에 제거를 원하는 경우
[]-[찾기 및 선택]-[이동 옵션]-[개체]를 선택 후 확인을 누릅니다.
[Delete] 키를 눌러 제거 합니다.
G. 나머지 시트 들에 대해서도 같은 방법으로 불필요한 개체들을 제거 합니다.

2. 2007 이전 버전인 경우

A. [편집]-[이동]-[옵션]을 선택 후 [개체]를 확인을 누릅니다.
B. 시트에 포함된 개체가 모두 선택되면, Ctrl 키를 누른 상태에서 필요한 개체는 마우스로 클릭하여 선택 해제한 뒤 선택되어 있는 개체들을 Delete 키로 삭제 합니다.

불필요한 이름 삭제

현재 Workbook에 포함된 이름의 개수를 확인하려면 다음과 같이 합니다.

1. Alt+F11을 눌러 'Microsoft Visual Basic'를 엽니다.
2. [보기]-[직접 실행 창]을 선택합니다.
3. 직접 실행 창에 다음과 같이 입력 후 Enter를 누르면 이름의 개수가 표시가 됩니다.
?activeworkbook.names.count

1_7

이름 제거하기

1. 선택하여 제거하기
A. Alt+F11을 누릅니다.
B. Microsoft Visual Basic 창이 열리면, [삽입]-[모듈]을 누릅니다.
C. 아래의 코드를 복사한 뒤 열린 새 창에 붙여 넣습니다.

Sub Delete_Names()
Application.ScreenUpdating = False
On Error Resume Next
Dim n As Name
For Each n In ThisWorkbook.Names
n.Visible = True
n.Delete
Next n
Application.ScreenUpdating = True
End Sub

D. Microsoft Visual Basic 창을 닫고 Alt+F8을 누릅니다.
E. Display_Names를 선택 후 [실행]을 누릅니다.
F. Ctrl+F3의 이름 관리자(또는 이름 정의) 창에서 이름을 확인합니다.
G. 불필요한 이름은 선택하여 제거 합니다.
   i. 이름 여러 개를 한꺼번에 제거하는 방법은 2007에서만 제공됩니다.
   ii. 첫 번째 이름을 선택 후 연속된 이름 중 마지막 이름을 Shift를 누른 채 선택한 뒤 제거 합니다.
H. Display_Names 매크로는 사용이 끝났으므로 제거합니다. 제거하려면 Alt+F11을 누르고 [보기]-[프로젝트 탐색기] 창에서 Display_Names가 적힌 모듈을 마우스 오른쪽 버튼을 눌러 제거 합니다.

2. 모든 이름 제거하기
이름을 모두 제거해도 되는 경우에만 작업합니다.
이 작업을 하면 Print_Area 이름 정의도 삭제가 되기 때문에 페이지 설정을 다시 해야 합니다.

A. Alt+F11을 누릅니다.
B. Microsoft Visual Basic 창이 열리면, [삽입]-[모듈]을 누릅니다.
C. 아래의 코드를 복사한 뒤 붙여 넣습니다.

Sub Delete_Names()
Application.ScreenUpdating = False
On Error Resume Next
Dim n As Name
For Each n In ThisWorkbook.Names
n.Visible = True
n.Delete
Next n
Application.ScreenUpdating = True
End Sub

D. Microsoft Visual Basic 창을 닫고 Alt+F8을 누릅니다.
E. Delete_Names를 선택 후 [실행]을 누릅니다.
F. Ctrl+F3을 누릅니다.
G. 남아 있는 이름이 있다면 창을 닫고, 다시 Alt+F8을 눌러 Delete_Names 매크로를 실행합니다.
이름 정의가 너무 많이 있을 경우 여러 번 반복합니다.
그래도 제거가 안 되는 항목이 있다면 하나씩 선택 후 [삭제]를 눌러 봅니다. 제거가 안된 이름이 있다면 그대로 둡니다.
H. 이름 제거가 끝난 경우 Alt+F11을 누르고 [보기]-[프로젝트 탐색기] 창에서 Delete_Names가 적힌 모듈을 마우스 오른쪽 버튼을 눌러 제거 합니다.

문서를 다른 이름으로 저장합니다.

이름이 제거가 안 되는 것이 있는 경우

1. 2007 이전 버전인 경우에는 Microsoft Script Editor를 이용하면 제거가 될 수 있습니다. 다음 단계인 스타일 제거 부분에서 이 작업이 수행될 것이므로 다음 단계로 넘어 갑니다.
2. 2007에서는 Microsoft Script Editor 기능이 지원되지 않습니다. 따라서 새 문서로 전체 셀을 선택하여 복사/붙여 넣기 하여 만듭니다. '시트 이동/복사'가 아닌 전체 셀 선택, 복사/붙여 넣기는 불필요한 이름을 옮기지 않습니다.
새로운 파일로 문서를 옮기는 방법은 포스트 윗부분의 [새로운 파일로 문서를 옮기려면 다음과 같은 방법으로 합니다.]를 참고 하시기 바랍니다.

문서를 다른 이름으로 저장합니다.

불필요한 스타일 제거

2007 버전인 경우 [홈]-[스타일] 그룹의 [셀 스타일]에 2003 버전의 경우 [서식]-[스타일] 그룹에 문서에 대한 스타일을 정의할 수 있습니다.

아래의 그림은 각 버전의 기본 스타일입니다.

2007:

1_8

2003:

1_9

스타일은 셀에서 많이 사용하는 글꼴, 테두리, 무늬 등을 미리 추가를 해 놓고 매번 서식을 적용할 필요 없이 스타일에서 선택만으로도 원하는 서식이 적용될 수 있도록 하는 기능입니다.

2007에서는 [사용자 지정]에 스타일이 추가됩니다.

1_10 

이름 정의와 마찬가지로 이름이 알 수 없는 글자로 깨져 있는 스타일이 많이 있을 수 있습니다.

매크로 바이러스나 다른 파일에서 사용했던 시트를 이동/복사를 해오는 경우 추가될 수 있습니다.

1. 선택적으로 제거 
A. 2007에서는 불필요한 스타일을 마우스 오른쪽 버튼을 눌러 [삭제]를 누릅니다.

1_11

B. 2003에서는 불필요한 스타일을 선택 후 오른쪽의 [삭제] 단추를 눌러 삭제 합니다.

2. 전체 이름 제거
사용자 정의 스타일은 지워지기 때문에 셀에서 사용하기 위해 만든 스타일을 지우면 서식이 지워지게 됩니다.

A. 2007에서 스타일 제거
   i. Alt+F11을 누릅니다. 
  ii. Microsoft Visual Basic 창이 열리면, [삽입]-[모듈]을 누릅니다. 
  iii. 아래의 코드를 복사한 뒤 붙여 넣습니다.

Sub Delete_Styles()
Application.ScreenUpdating = False
Dim s As Style
On Error Resume Next
For Each s In ThisWorkbook.Styles
If Not (s.BuiltIn) Then s.Delete
Next s
Application.ScreenUpdating = true
End Sub

  iv. Microsoft Visual Basic 창을 닫고 Alt+F8을 누릅니다. 
   v. Delete_Styles를 선택 후 [실행]을 누릅니다. 
   vi. [홈]-[스타일] 영역의 [셀 스타일]에서 스타일이 제거되었는지 확인합니다.
   vii. 스타일 제거가 끝난 경우 Alt+F11을 누르고 [보기]-[프로젝트 탐색기] 창에서 Delete_Styles가 적힌 모듈을 마우스 오른쪽 버튼을 눌러 제거 합니다.

B. 2003에서 스타일 제거
   i. [도구]-[매크로]-[Microsoft Script Editor]를 선택합니다.
설치가 안되어 있는 경우 설치 시 CD를 요구할 수 있으므로, CD를 준비해 두고 작업하십시오.
   ii. Html 태그가 보입니다. 빈 행에 Enter를 여러 번 누릅니다.

1_12

   iii. Microsoft Script Editor 창을 열어 두고 Excel 시트 창을 선택하면 아래와 같은 메뉴가 나타납니다.

1_13

   iv. [새로 고침]을 누릅니다.
    v. 이 과정에서 제거되지 않았던 이름과 불필요한 스타일이 제거될 수 있습니다.
    vi. [서식]-[스타일]을 눌러 남아 있는 스타일을 제거 합니다.

문서를 다른 이름으로 저장합니다.

모두 적용을 하여도 문제가 있거나, 잘 적용이 안 되는 사항이 있다면 먼저 새 파일로 기존 문서 내용을 복사/붙여 넣기 해 놓고 확인하십시오.
새로운 파일로 문서를 옮기는 방법은 포스트 윗부분의 [새로운 파일로 문서를 옮기려면 다음과 같은 방법으로 합니다.]를 참고 하시기 바랍니다.

참고 자료

"셀 서식이 너무 많습니다."라는 오류가 발생하면서 파일이 열리지 않는다
https://support.microsoft.com/kb/601085/ko

"더 이상 사용자 정의 셀 서식을 추가할 수 없습니다." 오류
https://support.microsoft.com/kb/600945/KO/

XL2000: 손상된 엑셀 파일 복구하는 방법
https://support.microsoft.com/kb/214253/KO/

Excel 사양 및 제한
https://office.microsoft.com/ko-kr/help/HP100738491042.aspx

이전 버전의 Excel에서 지원되지 않는 Office Excel 2007 기능
https://office.microsoft.com/ko-kr/excel/HA100778231042.aspx?pid=CH100648071042

"더 이상 사용자 정의 셀 서식을 추가할 수 없습니다." 오류
https://support.microsoft.com/kb/600945/KO/

"Macros may contain viruses" error message when you open files without macros in Excel
https://support.microsoft.com/kb/329950/en-us

XL2000: How to Reduce the Chances of Macro Virus Infection
https://support.microsoft.com/kb/269613/en-us

매크로 보안이 높음으로 설정되어 있으면 XLM 매크로가 포함된 통합 문서를 열 수 없다
https://support.microsoft.com/kb/820739/

HOW TO: Use Global and Local References in Formulas in Excel 2000
https://support.microsoft.com/kb/274504/en-us

HOW TO: Set a Print Area by Using a Defined Name in Excel 2000
https://support.microsoft.com/kb/213648/en-us

How to use cell references and defined names in criteria in Excel
https://support.microsoft.com/kb/61090/en-us

XL2000: Consolidated Labels Use Name of Workbook Instead of Sheet Name
https://support.microsoft.com/kb/214283/en-us

Excel 2007에서 연결을 끊을 때 정의된 이름이 삭제되지 않는다
https://support.microsoft.com/kb/924458/ko

Defined name is not removed when you break a link in Excel
https://support.microsoft.com/kb/288853/en-us

The link source for a defined name is not available in Excel
https://support.microsoft.com/kb/837238/en-us

Error Messages When You Open an Excel 2003 Workbook
https://support.microsoft.com/kb/826714/en-us

"#NAME?" errors may appear in some cells when you open an Office Excel 2007 .xlsx or .xlsm file in an earlier version of Excel
https://support.microsoft.com/kb/945828/en-us

 

 

작성자: 한규진


[Excel] 중복하여 기록된 데이터에서 동일한 데이터는 하나만 추출하여 고유한 목록을 생성하는 방법


아래와 같이 상품에 대한 주문을 Excel로 작성하였다고 가정할 때, 이 업체에 상품을 공급한 공급자의 목록을 추출하여 봅시다.

1

방법 1: 고급 필터 이용하기

1. 필터를 적용할 공급자 열을 선택합니다.

   1_1 

2. [데이터] 탭의 [정렬 및 필터] 그룹에서 [고급] 단추를 선택합니다. 

   1_2 

   [97-2003 버전]

   [데이터] 메뉴의 [필터]-[고급 필터]를 선택합니다.

   1_3 

3. [다른 장소에 복사]를 선택한 뒤, [복사 위치]에는 데이터가 표시될 범위의 첫 번째 셀 위치를 선택합니다.

4. [동일한 레코드는 하나만]을 선택 후 [확인]을 누릅니다.

   1_4 

   [97, 2000 버전]

   [동일한 레코드는 하나만] 대신 [고유 레코드만] 메뉴를 선택합니다.

   1_5 

5. [복사 위치]에 선택했던 셀을 기준으로 고유한 목록이 표시됩니다.

   1_6 

 

방법2: 수식과 이름 정의 이용하기

   수식과 이름 정의에 대한 자세한 설명을 보려면 아래 '부연설명' 섹션을 참고하시기 바랍니다.

   A. A2:A29 셀을 선택합니다.

   B. [수식] 탭의 [정의된 이름] 그룹 중 [이름 관리자]를 선택합니다.

      [새로 만들기]를 누릅니다.

      [97-2003인 경우]

      [삽입]-[이름]-[정의]를 누릅니다.

   C. '이름' 필드에는 수식에서 사용할 이름 '공급자범위'를 적습니다.

      [97-2003인 경우]

      [통합 문서에 있는 이름]에 '공급자범위'를 적습니다.

   D. '참조 대상'에는 실제 데이터가 들어있는 셀 범위의 주소 =시트이름!$A$2:$A$29가 맞는지 확인 합니다.

   E. 확인을 눌러 닫습니다.

   F. B2 셀을 선택합니다.

   G. 아래의 수식을 입력합니다.

      =IF(ISERROR(SMALL(IF(FREQUENCY(MATCH(공급자범위,공급자범위,0),MATCH(공급자범위,공급자범위,0))>0,ROW(공급자범위)),ROW(A1))),"",INDIRECT("A"&SMALL(IF(FREQUENCY(MATCH(공급자범위,공급자범위,0),MATCH(공급자범위,공급자범위,0))>0,ROW(공급자범위)),ROW(A1))))

   H. 배열 수식이므로 Ctrl+Shift+Enter를 누릅니다. 수식 입력 줄에서 { =IF(ISERROR(SMALL(IF(FREQUENCY(MATCH(공급자범위,공급자범위,0),MATCH(공급자범위,공급자범위,0))>0,ROW(공급자범위)),ROW(A1))),"",INDIRECT("A"&SMALL(IF(FREQUENCY(MATCH(공급자범위,공급자범위,0),MATCH(공급자범위,공급자범위,0))>0,ROW(공급자범위)),ROW(A1)))) } 로 입력된 것을 확인할 수 있습니다.

   I. ROW(A1)의 행 번호를 자동으로 증가시키기 위해서 B29셀까지 자동 채우기 핸들로 채워 내립니다.

   2 

 

부연설명:

수식을 이용할 때에는 다음과 같은 순서대로 구합니다.

3 

(1) 공급자 범위(A2:A29)에서 특정 공급자가 나타난 위치들 중 제일 처음 나온 위치를 찾아 기록합니다. 'A 식품 ㈜'의 경우 제일 처음 발생한 위치가 A2:A29 범위 내에서 1행이므로 1이라는 숫자 값이 나타납니다.

(2) A2는 A2:A29 범위에서 1행입니다. (1)의 결과 값 중 1이라는 위치 정보를 가진 항목은 8개입니다. 각 위치 번호의 발생 빈도 수를 구합니다.

(3) 빈도 수가 0보다 큰 경우 위치 번호를 반환합니다.

(4) 위치 번호를 순서대로 표시하기 위해서 정렬 시킵니다.

(5) 위치에 해당하는 공급자 이름 가져와 표시합니다.

1. 공급자 범위에서 특정 공급자가 나타난 위치 중 첫 번째 위치 찾아 기록하기: MATCH 함수

   MATCH 함수

   MATCH 함수는 셀 범위에서 지정된 항목을 검색한 다음 범위 내에서 해당 항목의 상대 위치를 반환합니다.

   4 

   참고 자세한 사항은 Excel에서 F1을 눌러 도움말 창을 열고, MATCH로 검색하여 MATCH 함수에 대한 도움말을 참고 하시기 바랍니다.

   공급자 목록에서 특정 공급자가 제일 처음에 나온 위치를 찾으려면 아래와 같이 함수를 작성합니다.

   A. B2:B29 범위를 선택합니다.

   B. 아래와 같이 수식을 입력합니다.

      =MATCH($A$2:$A$29, $A$2:$A$29, 0)

   C. 배열 수식이므로 Ctrl+Shift+Enter를 누릅니다. 수식 입력줄에서 확인하면 { =MATCH($A$2:$A$29, $A$2:$A$29, 0) } 으로 표시됩니다.

   배열 수식

   배열 수식을 사용하면 다른 수식으로 할 수 없는 계산을 수행할 수 있습니다.

   위 수식의 경우 A2를 A2:A29에서 찾아 상대 위치를 반환하고, 그 다음 값인 A3를 A2:A29에서 찾아 상대 위치를 반환합니다. A4에서부터 A29 역시 동일한 방법으로 찾아 상대 위치를 반환하게 됩니다.

   참고 배열 수식에 대한 자세한 사항은 Excel에서 F1을 눌러 도움말 창을 열고, 배열로 검색한 뒤, 배열 수식 지침 및 예제를 참고하시기 바랍니다.

   5 

2. 각 위치 번호의 발생 빈도 수 구하기 : FREQUENCY 함수

   FREQUENCY 함수

   FREQUENCY 함수를 사용하여 지정한 범위에 들어가는 값의 개수를 구할 수 있습니다. 배열을 반환하는 수식은 배열 수식으로 입력해야 합니다.

   아래의 예제를 참고하십시오.

   6

   참고 자세한 사항은 Excel에서 F1을 눌러 도움말 창을 열고, FREQUENCY로 검색하여 도움말을 참고 하시기 바랍니다.

   아래의 표와 같이 B열의 결과의 각 항목을 FREQUENCY 함수를 이용하여 빈도수를 구할 수 있습니다.

   A. B2:B29 범위를 선택합니다.

   B. 수식을 아래와 같이 입력합니다.

      =FREQUENCY( MATCH($B$2:$B$29, $B$2:$B$29, 0) , MATCH($B$2:$B$29, $B$2:$B$29, 0) )

   C. 배열 수식이므로 Ctrl+Shift+Enter를 누릅니다. 수식 입력줄을 확인하면 { =FREQUENCY(MATCH($B$2:$B$29, $B$2:$B$29, 0), MATCH($B$2:$B$29, $B$2:$B$29, 0)) } 로 표시됩니다.

   7 

3. 빈도 수가 0보다 큰 경우 위치 번호를 반환: IF 함수, ROW 함수

   IF 함수

   지정한 조건이 TRUE이면 특정 값을 반환하고 FALSE이면 다른 값을 반환합니다.

   =IF(A2<=100,"예산 내","예산 초과")

   위 함수는 A2의 값이 100보다 작거나 같은 경우 "예산 내"로 표시하고, 100보다 큰 경우 "예산 초과"로 표시합니다.

   ROW 함수

   참조의 행 번호를 반환합니다.

   =ROW(A3)

   위 함수는 3을 반환 합니다.

   만약, 위치 정보가 0보다 크면, A2:A29의 행 번호를 표시합니다.

   아래의 표와 같이 구할 수 있습니다.

   A. B2:B29 범위를 선택합니다.

   B. 수식을 아래와 같이 입력합니다.

      =IF( FREQUENCY(MATCH($A$2:$A$29, $A$2:$A$29, 0), MATCH($A$2:$A$29, $A$2:$A$29, 0)) >0, ROW($A$2:$A$29))

   C. 배열 수식이므로 Ctrl+Shift+Enter를 누릅니다. 수식 입력줄에서 확인하면 { =IF(FREQUENCY(MATCH($A$2:$A$29, $A$2:$A$29, 0), MATCH($A$2:$A$29, $A$2:$A$29, 0))>0, ROW($A$2:$A$29)) } 로 표시됩니다.

   8 

4. 위치 정보를 정렬: SMALL 함수

   SMALL 함수

   데이터 집합에서 k번째로 작은 값을 반환합니다. 이 함수를 사용하면 데이터 집합에서 특정 상대 순위를 갖는 값을 반환할 수 있습니다.

   참고 자세한 사항은 Excel에서 F1을 눌러 도움말 창을 열고, SMALL로 검색하여 SMALL 함수에 대한 도움말을 참고 하시기 바랍니다.

   아래의 표와 같이 ROW(A1)은 1, ROW(A2)는 2, ROW(A3)은 3입니다.

   {=SMALL($B$2:$B$29, ROW(A1) )}의 경우 B2:B29에서 1번째로 작은 숫자를 반환하고, {=SMALL($B$2:$B$29, ROW(A2) )}의 경우 B2:B29에서 2번째로 작은 숫자를 반환합니다.

   첫 번째 셀에 수식을 입력 후 아래로 드래그하여 채우면 A1, A2, A3... 으로 셀 주소가 자동으로 증가하므로 순서대로 정렬할 수 있습니다.

   A. B2에 아래의 수식을 입력합니다.

      =SMALL( IF(FREQUENCY(MATCH($A$2:$A$29, $A$2:$A$29, 0), MATCH($A$2:$A$29, $A$2:$A$29, 0))>0, ROW($A$2:$A$29)) , ROW(A1))

   B. 배열 수식이므로 Ctrl+Shift+Enter를 누릅니다. 수식 입력줄에서 확인하면 { =SMALL(IF(FREQUENCY(MATCH($A$2:$A$29, $A$2:$A$29, 0), MATCH($A$2:$A$29, $A$2:$A$29, 0))>0, ROW($A$2:$A$29)), ROW(A1)) } 로 표시되어 있는 것을 확인할 수 있습니다.

   C. ROW(A1)의 행 번호를 자동으로 증가시키기 위해서 B29셀까지 자동 채우기 핸들로 채워 내립니다.

   자동 채우기 핸들

   8_1

   9 

5. 위치 정보에 따른 A열 데이터 값 가져오기: INDIRECT 함수, ISERROR 함수

   INDIRECT 함수

   텍스트 문자열로 지정된 참조를 반환합니다. 참조가 바로 계산되어 해당 내용이 표시됩니다. 수식 자체는 변경하지 않고서 수식 안에 있는 셀에 대한 참조를 변경하려는 경우에 INDIRECT 함수를 사용합니다.

   10 

   위와 같은 표에서 =INDIRECT($A$1)을 구하면 A1 셀에서 참조하는 B2의 값, 즉 31이 반환됩니다.

   =INDIRECT("$B$1")을 구하면 B1 셀의 값, 즉 27이 반환됩니다.

   ISERROR 함수

   오류 값으로는 #DIV/0!, #N/A, #NAME?, #NULL!, #NUM!, #REF! 및 #VALUE!가 있습니다.

   ISERROR는 참조 셀의 결과가 오류인지 여부를 판단해 주며, IF문과 함께 사용하여 오류 처리를 할 수 있습니다.

   =IF(ISERROR(A1), "", A1)

   이 수식은 A1의 값이 오류이면 공백("")을, 오류가 아니면 A1의 값을 반환합니다.

   만약, 공급자 위치가 없고 오류 값이 있다면 빈 공백("")으로 표시하고, 그렇지 않다면 A열에서 값을 찾아옵니다.

   공급자의 실제 이름을 가져오려면 A열에 있기 때문에 =INDIRECT("A"&공급자 위치)로 구할 수 있습니다.

   A. B2 셀을 선택합니다.

   B. 아래의 수식을 입력합니다.

      =IF(ISERROR(SMALL(IF(FREQUENCY(MATCH($A$2:$A$29,$A$2:$A$29,0),MATCH($A$2:$A$29,$A$2:$A$29,0))>0,ROW($A$2:$A$29)),ROW(A1))),"",INDIRECT("A"&SMALL(IF(FREQUENCY(MATCH($A$2:$A$29,$A$2:$A$29,0),MATCH($A$2:$A$29,$A$2:$A$29,0))>0,ROW($A$2:$A$29)),ROW(A1))))

   C. 배열 수식이므로 Ctrl+Shift+Enter를 누릅니다. 수식 입력줄을 확인하면 { =IF(ISERROR(SMALL(IF(FREQUENCY(MATCH($A$2:$A$29,$A$2:$A$29,0),MATCH($A$2:$A$29,$A$2:$A$29,0))>0,ROW($A$2:$A$29)),ROW(A1))),"",INDIRECT("A"&SMALL(IF(FREQUENCY(MATCH($A$2:$A$29,$A$2:$A$29,0),MATCH($A$2:$A$29,$A$2:$A$29,0))>0,ROW($A$2:$A$29)),ROW(A1)))) } 로 입력된 것을 확인할 수 있습니다.

   D. ROW(A1)의 행 번호를 자동으로 증가시키기 위해서 B29셀까지 자동 채우기 핸들로 채워 내립니다.

   11 

6. 이름 정의하기

   수식에서는 공급자 범위가 변경되면, 수식을 다시 수정해야 하는 어려움이 있습니다.

   공급자 범위에 Excel의 이름 정의 기능을 이용하면, 좀 더 쉽게 범위를 수정할 수 있습니다.

   12 

   A1:A4를 '데이터범위'로 이름을 정의해 놓으면, =SUM($A$1:$A$4)의 수식 대신 =SUM(데이터범위)로 입력하여 결과를 구할 수 있습니다. (결과, 16)

   이름 정의하기

   1. A1:A4를 선택합니다.

      [수식] 탭의 [정의된 이름] 그룹 중 [이름 관리자]를 선택합니다.

      12_1 

      [97-2003인 경우]

      [삽입]-[이름]-[정의]를 누릅니다.

      12_2 

3. [새로 만들기]를 누릅니다.

   12_3 

4. '이름' 필드에는 수식에서 사용할 이름을 원하는 대로 적습니다.

   '참조 대상'에는 실제 데이터가 들어있는 셀 범위의 주소를 적습니다.

   12_4 

   [97-2003인 경우]

   [통합 문서에 있는 이름]에 적습니다.

   12_5 

5. [확인]을 누릅니다.

6. 셀 범위 A1:A4를 선택한 상태에서 Excel의 이름 상자를 확인하면 '데이터범위'라는 이름으로 정의되어 있음을 확인할 수 있습니다.

   12_6 

   아래와 같이 5행이 추가 되었을 때

   13 

   '데이터범위'의 셀 범위를 A1:A5로 수정하면 수식의 결과는 자동으로 25로 변경됩니다.

   이름을 수정하려면

   A. [수식] 탭의 [정의된 이름] 그룹 중 [이름 관리자]를 선택합니다.

   B. '데이터범위'이름을 선택 후 [편집]을 눌러 수정하거나, [참조 대상]을 수정합니다.

   13_1

   13_2 

   [97-2003인 경우]

   [삽입]-[이름]-[정의]를 누릅니다.

   '데이터범위'를 선택 후 참조 대상을 수정한 뒤 [확인]을 누릅니다.

   따라서 아래의 수식에서 $A$2:$A$29 범위를 '공급자범위'로 변경하면 공급자가 더 추가 기록 되었을 때 이름 정의된 범위만 수정하면 간단하게 결과를 변경할 수 있습니다.

   =IF(ISERROR(SMALL(IF(FREQUENCY(MATCH( $A$2:$A$29, $A$2:$A$29,0),MATCH( $A$2:$A$29, $A$2:$A$29,0))>0,ROW( $A$2:$A$29)),ROW(A1))),"",INDIRECT("A"&SMALL(IF(FREQUENCY(MATCH( $A$2:$A$29, $A$2:$A$29,0),MATCH( $A$2:$A$29, $A$2:$A$29,0))>0,ROW ($A$2:$A$29)),ROW(A1))))

   =IF(ISERROR(SMALL(IF(FREQUENCY(MATCH(공급자범위,공급자범위,0),MATCH(공급자범위,공급자범위,0))>0,ROW(공급자범위)),ROW(A1))),"",INDIRECT("A"&SMALL(IF(FREQUENCY(MATCH(공급자범위,공급자범위,0),MATCH(공급자범위,공급자범위,0))>0,ROW(공급자범위)),ROW(A1))))

   A. A2:A29 셀을 선택합니다.

   B. [수식] 탭의 [정의된 이름] 그룹 중 [이름 관리자]를 선택합니다.

      [새로 만들기]를 누릅니다.

      [97-2003인 경우]

      [삽입]-[이름]-[정의]를 누릅니다.

   C. '이름' 필드에는 수식에서 사용할 이름 '공급자범위'를 적습니다.

      [97-2003인 경우]

      [통합 문서에 있는 이름]에 '공급자범위'를 적습니다.

   D. '참조 대상'에는 실제 데이터가 들어있는 셀 범위의 주소 =시트이름!$A$2:$A$29가 맞는지 확인 합니다.

   E. 확인을 눌러 닫습니다.

   F. B2 셀을 선택합니다.

   G. 아래의 수식을 입력합니다.

      =IF(ISERROR(SMALL(IF(FREQUENCY(MATCH(공급자범위,공급자범위,0),MATCH(공급자범위,공급자범위,0))>0,ROW(공급자범위)),ROW(A1))),"",INDIRECT("A"&SMALL(IF(FREQUENCY(MATCH(공급자범위,공급자범위,0),MATCH(공급자범위,공급자범위,0))>0,ROW(공급자범위)),ROW(A1))))

   H. 배열 수식이므로 Ctrl+Shift+Enter를 누릅니다. 수식 입력 줄에서 { =IF(ISERROR(SMALL(IF(FREQUENCY(MATCH(공급자범위,공급자범위,0),MATCH(공급자범위,공급자범위,0))>0,ROW(공급자범위)),ROW(A1))),"",INDIRECT("A"&SMALL(IF(FREQUENCY(MATCH(공급자범위,공급자범위,0),MATCH(공급자범위,공급자범위,0))>0,ROW(공급자범위)),ROW(A1)))) } 로 입력된 것을 확인할 수 있습니다.

   I. ROW(A1)의 행 번호를 자동으로 증가시키기 위해서 B29셀까지 자동 채우기 핸들로 채워 내립니다.

   14

 

작성자: 한규진


[Excel 2010] Sparklines – 셀 하나에 들어가는 소형 추세 차트


Microsoft Excel 2010의 새로운 데이터 분석 및 시각화 기능을 사용하여 중요한 데이터 추세를 쉽게 분석하고 강조 표시할 수 있습니다. Sparklines을 통해 워크 시트 데이터를 보면서 추세를 한 눈에 제시 및 비교할 수 있습니다. 영업 실적이나 가계부를 정리하면서 데이터 추세를 자동으로 파악할 수 있습니다.

예제:

아래와 같이 데이터가 있을 때 Trend 열에 각 부서별 영업 실적 추세를 Sparklines으로 넣어 보도록 하겠습니다.
clip_image002

사용 방법

1. Trend의 첫 번째 셀인 B2를 선택하고,

2. [Insert] 메뉴에서 [Sparklines] 에서 원하는 차트 유형을 선택합니다.
저는 [Line] 을 선택하도록 하겠습니다.
clip_image004

3. [Data Range] 에서 데이터 범위 선택 단추를 누릅니다.clip_image006

4. 범위를 선택하고 다시 단추를 누릅니다.
clip_image008

5. [OK] 단추를 누릅니다.
clip_image009

6. 원하는 대로 [High Point] / [Low Point] 를 선택하고, 디자인을 선택합니다.clip_image011

7. [자동 채우기 핸들] 을 선택하여 원하는 위치까지 채웁니다.
clip_image012

8. 데이터 추세를 한 눈에 알아볼 수 있도록 셀에 표시가 되었습니다.
clip_image013

추가정보

1. 2번에서 처음부터 Sparklines를 삽입할 범위를 미리 선택 후 삽입할 수 있습니다.
clip_image015
clip_image016

2. Line의 색
clip_image018

3. High Point/End Point의 색을 변경할 수 있습니다.
clip_image020

4. Column이나
clip_image022

5. 음수 데이터가 있는 경우 Win/Loss로 표시하는 것도 좋습니다.
clip_image024

 

작성자: 한규진


[Excel, Office] Excel에서 VBA 사용 시에 매크로 설정에서 보안 설정을 조정하지 않고도 실행할 수 있는 방법


이번 포스팅에서는 신뢰할 수 있는 게시자에 인증서를 추가하여, 인증된 기관에서 발송된 매크로 문서를 보안 경고 없이 열리게 하거나, 로컬 컴퓨터에 신뢰할 수 있는 위치를 추가하여 매크로 문서를 보안 경고 없이 열리게 할 수 있는 방법에 대하여 알아 봅시다.

매크로가 포함된 문서를 여는 것은 대게 클라이언트(예, Microsoft Excel 2007)의 설정에 의존하게 됩니다. 아래의 제시 방법을 사용하면 클라이언트 옵션을 일일이 바꾸지 않고도 보안 경고 없이 매크로 문서를 열수가 있습니다.

방법 1 : 신뢰할 수 있는 게시자에 인증서를 추가하면, 추후 인증된 기관에서 발송된 매크로 문서는 보안 경고 메시지 없이 바로 열릴 수 있다.

설명 : 기본적으로 매크로 설정은 아래와 같이 "모든 매크로 제외(알림 표시)"로 설정되어 있습니다.

clip_image002

그러므로, 사용자가 Option을 바꾸지 않는 한, 모든 매크로 문서는 기본적으로 알림 창과 함께 바로 열 수가 없습니다.

대신 Digital Signature (디지털 서명)을 이용하여 신뢰할 수 있는 게시자 목록에 특정 배포자를 넣는다면 모든 Excel 사용자가 옵션을 조정하지 않아도 해당 디지털 서명을 가진 매크로 문서에 대해서는 보안 경고 없이 문서를 열 수 있습니다.

즉, 아래의 노란 영역에 신뢰 게시자 목록이 추가 되고, 만약 매크로 설정이 "모든 매크로 제외"로 되어 있더라도, 매크로를 사용할 수 있습니다.

clip_image004

방벙은 아래와 같습니다.

  1. 매크로 개발자는 매크로 작성 후 아래의 가이드와 같이 매크로 프로젝트에 Digital Signature(디지털 서명)를 합니다.
    1. Macro에 디지털 서명을 삽입하기 위해서는 디지털 인증서를 먼저 만들어 놓아야 합니다.
    2. 시작 – Microsoft Office – 오피스 도구에 있는 "VBA 프로젝트용 디지털 인증서"를 클릭
    3. clip_image006
    4. 적절한 이름을 정한 뒤, 확인을 눌러 생성합니다.
    5. clip_image008 clip_image010
    6. 이제 디지털 인증서가 생성이 되었으므로, 매크로 프로젝트에 디지털 서명을 아래와 같이 추가합니다.
    7. clip_image012
    8. 디지털 서명 다이얼 로그 창에서 '선택'을 클릭하고, 인증서를 선택합니다.
    9. clip_image014clip_image016
    10. clip_image018
  2. #1에서 매크로를 작성하여 웹사이트나 메일을 통해 발송된 매크로 엑셀 파일은 다른 클라이언트에서 Open시에 매크로 보안 위험 Alert이 먼저 뜨게 될 것입니다. 이때, 매크로 "보안 경고" 옵션에서 자신의 로컬 머신에 디지털 서명을 추가합니다.
    1. clip_image020
    2. 먼저 아래의 "이 게시자의 모든 문서 신뢰" 를 선택한 뒤, ' 서명 정보 표시' 를 눌러 해당 Certification 설치를 진행합니다.
    3. clip_image022
    4. clip_image024
    5. clip_image026
    6. clip_image028
    7. clip_image030
    8. clip_image032
    9. clip_image034
    10. clip_image036
    11. 확인을 여러 번 눌러 창을 닫습니다.
    12. 이제 해당 클라이언트는 신뢰된 게시자에 추가 된 발급자가 배포한 매크로는 보안 이슈 없이 Open할 수 있습니다.

방법 2: 신뢰할 수 있는 위치를 로컬에 추가하여 매크로 문서를 항상 그 위치에서 여는 방법

Microsoft Office 2007을 사용하는 경우, 신뢰할 수 있는 위치가 여러 개 생성이 됩니다.

예를 들어 엑셀의 경우,

'오피스 버튼' – 'Excel 옵션' – '보안 센터' – '보안 센터 설정' 클릭하여 '신뢰할 수 있는 위치'를 선택해보면, 아래와 같이 기본적으로 생성 된 신뢰할 수 있는 위치가 생성이 됩니다.

clip_image038

신뢰할 수 있는 위치는 로컬 하드 디스크 위치일 수도 있고, 네트워크 폴더에 위치할 수도 있습니다. (네트워크 폴더 위치 사용하는 것은 보안 상 권장하지는 않습니다. 이런 경우 별도로 폴더 암호 설정 등을 사용하기를 권장합니다.)

신뢰할 수 있는 위치 변경 방법은 아래와 같습니다.

1. 'Microsoft Office 단추' 를 클릭, Excel 옵션을 클릭합니다.

2. '보안 센터' – '보안 센터 설정' – '신뢰할 수 있는 위치'를 클릭합니다.

A. 로컬 컴퓨터에 없는 위치를 지정하려면 '네트워크상의 신뢰할 수 있는 위치 허용(권장하지 않음)' 확인란을 선택합니다.

3. '새 위치 추가'를 클릭합니다.

4. 신뢰할 수 있는 위치로 사용할 폴더를 임의로 지정합니다.

A. 하위 폴더를 신뢰할 수 있는 위치로 포함하려면 이 위치의 하위 폴더도 신뢰할 수 있음 확인란을 선택합니다.

5. 필요한 경우 설명 상자에 신뢰할 수 있는 위치를 지정하는 목적을 입력하고, 확인을 클릭합니다.

추가 정보

매크로 프로젝트에 디지털 서명

https://office.microsoft.com/ko-kr/powerpoint/HA012317811042.aspx?pid=CH100819721042

각 제품별 Office 문서의 매크로를 사용하거나 사용하지 않도록 설정하는 방법

https://office.microsoft.com/ko-kr/powerpoint/HA100310711042.aspx

파일을 저장할 신뢰할 수 있는 위치 만들기, 제거 또는 변경

https://office.microsoft.com/ko-kr/help/HA100319991042.aspx

 

 

작성자 : 마이크로소프트 기술지원부 정희수


[Excel] 특정 PC에서만 매크로가 들어 있는 파일을 열 때 오류가 발생하거나 매크로가 실행되지 않는다.


매크로가 들어 있는 파일을 열 때 특정 PC에서만 아래와 같은 오류 메시지가 발생할 수 있습니다.
컴파일 오류입니다.:
프로젝트나 라이브러리를 찾을 수 없습니다.

이것은 파일에 참조된 특정 라이브러리 파일이 실제 경로에 없을 때 문제가 될 수 있습니다. 다음과 같이 문제를 해결하십시오.

  1. Excel을 실행 후 Alt+F11을 누르면 Microsoft Visual Basic이 실행됩니다.
  2. [도구], [참조] 를 차례대로 누릅니다.
  3. 사용 가능한 참조누락: 이라고 적혀 있는 항목이 있다면 선택을 해제합니다.
  4. 문제가 발생하는지 확인합니다.

또는

만일 누락된 라이브러리가 실제 매크로에서 사용하는 것이 아니라고 한다면, 정상 동작하는 PC에서 해당 라이브러리를 체크 해제 후 저장한 뒤 배포합니다.

매크로가 실행되지 않는 경우 매크로에서 참조하고 있는 라이브러리 파일이 참조되지 않은 경우일 수 있습니다. 다음과 같이 누락된 라이브러리 파일을 확인하고, 추가하여 문제가 발생하는지 확인합니다.

  1. 정상 동작하는 PC와 문제가 발생하는 PC에서 각각 [도구], [참조] 를 차례대로 누릅니다.
  2. 사용 가능한 참조에 적힌 목록을 확인합니다.
  3. 정상 PC와 문제가 발생하는 PC를 비교하여, 문제가 발생하는 PC에만 특정 라이브러리 파일이 참조되어 있지 않다면,
    정상 동작하는 PC의 사용 가능한 참조 목록에서 각 라이브러리를 선택하여 아래쪽의 위치를 확인합니다.
  4. 라이브러리 파일의 실제 경로로 들어가 파일을 문제가 발생하는 PC의 동일한 경로에 넣어 줍니다.
  5. Windows의 [시작], [실행] 을 차례대로 누릅니다.
  6. 아래와 같이 입력 후 Enter를 누릅니다.
    regsvr32 "< 라이브러리 파일 경로>\<라이브러리 파일명>"
  7. 라이브러리 등록 성공을 나타내는 대화 상자가 나타나면 Excel을 다시 실행 후, [도구], [참조] 를 차례대로 누릅니다.
  8. 사용 가능한 참조에 적힌 목록을 확인합니다.
  9. 정상 동작하는 PC와 동일하게 참조를 설정해 주십시오.
  10. 문제가 발생하는지 확인합니다.

[관련자료]
You receive a "Can't find project or library" error message when you run a VBA project
https://support.microsoft.com/kb/840926/en-us

Regsvr32 사용법 및 오류 메시지 설명
https://support.microsoft.com/kb/249873/ko

작성자: 한규진


[Excel] Windows 탐색기에서 엑셀 파일(xlsx 혹은 xls)을 더블 클릭하여 열 때 "파일을 찾을 수 없습니다." 오류 메시지가 반복적으로 나타나는 문제


 

이 문서는 Excep 2007(혹은 이전 버전)에서 생성한 엑셀 파일(xlsx 혹은 xls)을 Windows 탐색기에서 더블 클릭하여 열 때 "파일을 찾을 수 없습니다." 오류 메시지가 반복적으로 나타나는 문제를 해결하는 방법을 설명합니다.

 

[ 이슈 ]

Windows 탐색기에서 Excel 2007(혹은 이전 버전의) 파일을 더블 클릭하여 열 때 다음과 같은 오류 메시지 창이 나타납니다.

image

확인을 여러 번 반복적으로 눌러야 파일이 열립니다.

 

[ 원인 ]

Windows 탐색기의 XLSX (혹은 XLS) 파일 형식에 대한 열기 명령에 %1이 추가되어 있거나, 해당 레지스트리 키에 %1이 추가되어 있는 경우 해당 이슈가 발생될 수 있습니다.

다음과 같은 방법으로 파일 형식의 열기 명령에 %1이 추가되어 있는지 여부를 확인할 수 있습니다.

1) Windows 탐색기의 도구- 폴더 옵션 메뉴를 눌러 열려고 하는 파일 형식의 확장명 (XLSX 혹은 XLS)를 선택 후 [고급] 버튼을 누릅니다.

clip_image004

2) "열기" 동작을 선택한 후 [편집] 버튼을 누릅니다.

clip_image006

3) "명령을 실행할 응용 프로그램"에 %1이 포함되어 있는지 확인합니다.

clip_image008

 

다음과 같은 시나리오에서 %1이 추가될 수 있습니다.

- 이 파일 형식의 Open 동작 항목이 %1에서 종료되는 경우에 이러한 문제가 발생할 수 있습니다.
- 파일 형식의 Open 동작을 편집하고 해당 행을 복원한 후 확인을 누르면 레지스트리 키에 %1이 추가됩니다.
- 이 파일 형식의 Open 동작 항목에 %1을 고의로 추가하면 레지스트리 키에 %1이 추가됩니다. 이후에 Open 동작 항목에서 %1을 삭제하는 경우에도 레지스트리 키가 변경되지 않으므로 레지스트리 키를 수동으로 편집해야 합니다.
- 또한 .xls 파일의 연결 프로그램을 수동으로 변경하거나 일부 경우에는 같은 컴퓨터에서 여러 Excel 버전을 실행하고 있을 때도 이러한 문제가 발생할 수 있습니다.

 

[ 해결 방법 ]

다음과 같은 방법으로 해당 레지스트리에서 %1을 삭제합니다.

경고: 레지스트리 편집기를 잘못 사용하면 심각한 문제가 발생할 수 있으며 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 레지스트리 편집기를 잘못 사용하여 발생하는 문제에 대해 해결을 보증하지 않습니다. 레지스트리 편집기 사용에 따른 모든 책임은 사용자에게 있습니다.

1.

[시작]을 누르고 [실행]을 누릅니다.

2.

"열기" 상자에 regedit 를 입력한 다음 확인 을 누릅니다.

3.

아래 레지스트리 키를 엽니다.

HKEY_CLASSES_ROOT\Excel.Sheet. 8 \shell\Open\command

그리고 (혹은)

HKEY_CLASSES_ROOT\Excel.Sheet. 12 \shell\Open\command

4.

오른쪽 창에서 (기본값) 을 누릅니다.

5.

편집 메뉴에서 [수정] 을 누릅니다.

6.

데이터 문자열이 다음과 같이 되도록 값 데이터 문자열의 끝에서 %1을 제거합니다.

"C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\EXCEL.EXE" /e(인용 부호 포함)

7.

확인 을 누른 다음 레지스트리 편집기를 닫습니다.

 

[ 참고 ]

https://support.microsoft.com/?id=207574

 

작성자 : 신소영


[Office] 프로그램에 영향을 미치는 기능 및 3rd Party 프로그램 확인 방법


Office 응용 프로그램을 이용하시다가 갑자기 예기치 못한 문제가 발생하였을 때, Office 프로그램을 제거 후 재설치 하였더라도 문제가 해결되지 않는 경우가 있습니다. 설치되어 있는 추가 기능이나 3rd party 응용 프로그램에 문제가 있거나, Office 응용 프로그램과 호환이 되지 않는 경우가 그 원인 중 하나가 될 수 있습니다. 이 문서에서는 Office 프로그램에 영향을 미치는 추가 기능 및 3rd party 응용 프로그램이 있는지 확인하는 방법을 소개 합니다.

 

요약

  1. COM 추가 기능에 등록된 기능 확인하는 방법
    • Excel, Word, PowerPoint 2007
    • Outlook 2007
    • Office 2007 이전 버전
  2. 시작 프로그램/서비스에 등록된 프로그램 확인하는 방법
    • 문제를 일으키는 항목 확인
  3. Process Explorer를 이용하여 Office 프로그램에 연관된 DLL 확인하는 방법

 

 

COM 추가 기능에 등록된 기능 확인하는 방법

Office 프로그램에 문제가 있을 때 COM 추가 기능에 등록된 기능을 확인 후 기능을 체크 해제하거나 제거한 뒤 문제가 발생하는지 확인합니다. 체크 해제 전과 후를 비교하여 COM 추가 기능에 등록된 기능이 Office에 영향을 미치는지 여부를 확인해 볼 수 있습니다.

 

Excel, Word, PowerPoint 2007:

  1. 프로그램의 [Office 단추], [ <Program Name> 옵션] 을 차례대로 누릅니다.
    Excel 2007
    1_Excel옵션 
  2. [ 추가 기능] 탭을 선택합니다.
  3. 관리: 오른쪽의 콤보 상자에서 [COM 추가 기능] 을 선택한 뒤 [이동] 단추를 누릅니다.
    Excel 2007
    2_Excel추가기능
  4. COM 추가 기능 창이 열리면, 추가되어 있는 기능을 확인합니다.
    3_ExcelCOM추가기능

 

Outlook 2007:

  1. [도구], [보안 센터] 를 차례대로 선택합니다.
    4_보안 센터
  2. [ 추가 기능] 탭을 선택합니다.
  3. 관리: 오른쪽의 콤보 상자에서 [COM 추가 기능] 을 선택한 뒤 [이동] 단추를 누릅니다.
    5_Outlook 추가기능
  4. COM 추가 기능 창이 열리면, 추가되어 있는 기능을 확인합니다.
    6_OutlookCOM추가기능

 

2007 이전 버전:

  1. [도구], [사용자 지정] 을 차례대로 선택합니다.
    Word 2003
    7_이전버전사용자지정
  2. [ 명령] 탭을 선택한 뒤 [도구] 범주를 선택합니다.
  3. [COM 추가 기능] 을 마우스로 선택한 뒤 드래그하여 도움말 메뉴 오른쪽에 놓습니다.
    Word 2003
    8_이전버전COM추가기능1
  4. [ 닫기] 단추를 눌러 사용자 지정 창을 닫습니다.
  5. 메뉴에 추가된 [COM 추가 기능] 을 선택합니다.
    Word 2003
    9_이전버전COM추가기능2
  6. COM 추가 기능 창이 열리면, 추가되어 있는 기능을 확인합니다.

 

 

시작 프로그램/서비스에 등록된 프로그램 확인하는 방법

Windows를 시작하면 몇 가지 프로그램이 자동으로 시작되어 백그라운드에서 실행됩니다. 이러한 프로그램을 자동으로 실행하지 않도록 하여 전후를 비교하면, Office 프로그램에 영향을 미치는 프로그램을 확인해 볼 수 있습니다.

참고 아래의 단계를 수행할 때 일부 서비스 기능이 일시적으로 지원되지 않을 수 있습니다. 설정을 복원하면 기능이 복원됩니다. 그 결과로 원래 오류 메시지나 동작이 다시 나타날 수 있습니다.

  1. 시스템 구성 창(또는 시스템 구성 유틸리티 창)을 실행합니다.
    Windows Vista
    [
    시작] 10_VistaStartButton을 누르고 검색 시작 상자에 msconfig를 입력한 다음 Enter 키를 누릅니다.
    11_검색시작 
    12_SecurityShield 관리자 암호나 확인을 요청하는 메시지가 나타나면 암호를 입력하거나 계속을 누릅니다.

    Windows XP
    [시작], [실행]
    을 차례로 누르고 열기 상자에 msconfig를 입력한 다음 확인을 누릅니다.
    13_xprun 

  2. 시스템 구성 창(또는 시스템 구성 유틸리티 창)이 나타나면 [시작프로그램] 탭을 선택합니다.

  3. 추가되어 있는 시작프로그램을 점검합니다.
    참고 각 열 이름을 끝까지 표시하려면 열 이름 사이의 선을 마우스 왼쪽 버튼으로 두 번 클릭합니다.
    Windows Vista
    14_msconfig 

    Windows XP
    15_xpmsconfig

  4. [모두 사용 안 함] 을 선택합니다.
    Windows Vista
    16_msconfig2 

    Windows XP
    17_xpmsconfig1 

  5. [ 서비스] 탭을 선택합니다.

  6. [모든 Microsoft 서비스 숨기기] 를 선택한 뒤 [모두 사용 안 함] 을 누릅니다.
    Windows Vista
    18_services 

    Windows XP
    19_xpservices 

  7. [ 확인] 을 누른 다음 [다시 시작] 을 누릅니다.

 

컴퓨터가 시작되면 Office 프로그램을 테스트하고 문제가 발생하는지 확인합니다. 문제가 발생하지 않으면 문제를 일으키는 항목을 찾습니다.

 

문제를 일으키는 항목 확인

  • 1단계: 시스템 구성 창을 실행합니다.
  • 2단계: 서비스 항목의 절반을 선택합니다.
  • 3단계: 문제가 발생하는지 확인합니다.
  • 4단계: 시작프로그램 항목의 절반을 선택합니다.
  • 5단계: 문제가 다시 발생하는지 확인합니다.
  • 6단계: 문제를 일으키는 특정 프로그램이나 서비스를 확인한 후에는 프로그램 제조업체에 해당 문제를 해결할 수 있는지 문의하거나, 문제가 되는 프로그램이나 서비스의 선택을 목록에서 취소하고 시스템 구성 유틸리티를 실행합니다.

 

 

Process Explorer를 이용하여 Office 프로그램에 연관된 DLL 확인하는 방법

Process Explorer 유틸리티는 열려 있는 프로세스에서 사용하고 있는 파일, 레지스트리 키 및 기타 개체 또는 프로세스에서 로드한 DLL(동적 연결 라이브러리)을 나열합니다.

참고 이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Process Explorer에 대한 자세한 내용은 Sysinternal 사이트에서 확인하십시오.
https://www.sysinternals.com/Utilities/ProcessExplorer.html

  1. 아래의 웹 사이트를 방문하여 최신 버전의 Process Explorer를 다운로드 받습니다.
    https://www.sysinternals.com/Utilities/ProcessExplorer.html
  2. 다운로드 받은 파일을 선택 후 마우스 오른쪽 버튼을 누른 뒤 [압축 풀기] 를 눌러 파일의 압축을 풉니다.
    20_processexplorer
  3. 압축을 푼 폴더 안의 Procexp.exe를 더블 클릭하여 실행합니다.
    20_processexplorericon
  4. Process Explorer License Agreement 창에서 내용을 잘 읽어보시고 동의하시는 경우 [Agree] 를 선택합니다.
    21_processexploreragree
  5. [View], [Lower Pane View], [DLLs] 를 차례대로 선택합니다.
    22_lowerpaneview
  6. 아래쪽에 생성된 창의 열 이름 위에서 마우스 오른쪽 버튼을 누른 뒤 [Select Columns...] 를 선택합니다.
    23_procexpcol
  7. DLL 탭의 [Path] 항목을 선택 후 [확인] 을 누릅니다.
    24_path
  8. 확인하고자 하는 Office 프로그램의 Process를 선택하면 아래쪽에 Office 프로그램에서 사용하고 있는 DLL 목록이 표시됩니다.
    25_procexp
  9. [File], [Save As...] 를 선택하여 txt 파일로 로그를 저장할 수 있습니다.
    26_procexpsave
  10. 문제가 발생하였을 때와 발생하지 않았을 때의 로그 파일을 각각 저장한 뒤 차이가 있는지 비교 합니다. 특정 DLL이 문제 발생시 실행되거나 누락 되었다면 그 파일의 경로(Path)를 확인 후 해당 프로그램을 점검해 보도록 합니다.

 

 

 

참조

클린 부팅 절차를 수행하여 백그라운드 프로그램이 현재 사용하고 있는 게임 또는 프로그램의 실행을 방해하지 못하게 하는 방법
https://support.microsoft.com/kb/331796/ko

Windows Vista에서 클린 부팅을 수행하여 문제를 해결하는 방법
https://support.microsoft.com/kb/929135/ko

PC 토크 - Windows Vista에서 "계속 하려면 사용 권한이 필요합니다"라는 메시지
https://support.microsoft.com/kb/961513/ko

HOWTO: 파일을 연 프로세스 목록 표시
https://support.microsoft.com/kb/242131/ko

 

작성자: 한국 마이크로소프트 한규진