런타임에 Office 문제 해결
업데이트: 2007년 11월
솔루션을 빌드하는 동안 Microsoft Office에서 오류 메시지가 표시되거나 최종 사용자가 오류 메시지를 보고하는 경우, 다음과 같은 일반적인 문제 중 하나가 원인일 수 있습니다.
공용 언어 런타임 또는 Microsoft .NET Framework를 로드할 수 없는 경우
이러한 문제 때문에 다음 오류 메시지가 표시될 수 있습니다.
공용 언어 런타임은 <application>에서 로드할 수 없습니다. 자세한 내용은 관리자에게 문의하십시오.
최종 사용자 컴퓨터에 있는 Microsoft .NET Framework의 버전은 솔루션을 개발하는 데 사용된 컴퓨터에 있는 Microsoft .NET Framework의 버전과 동일하거나 보다 최신 버전이어야 합니다. .NET Framework 및 공용 언어 런타임 설치에 대한 자세한 내용은 Microsoft .NET Framework 다운로드 페이지를 참조하십시오.
사용자 지정 매크로에 공용 언어 런타임이 필요한 경우
이러한 문제 때문에 다음 오류 메시지가 표시될 수 있습니다.
이 문서의 사용자 지정 매크로를 사용하려면 버전 2.0의 공용 언어 런타임이 설치되어 있어야 합니다. 자세한 내용은 관리자에게 문의하십시오.
여기서 사용자 지정 매크로는 관리되는 어셈블리를 말합니다. 최종 사용자의 컴퓨터에 설치되어 있는 Microsoft .NET Framework의 버전이 솔루션과 호환되지 않는 버전일 수 있습니다. 사용자의 컴퓨터에는 솔루션을 개발하는 데 사용된 버전과 동일하거나 보다 최신 버전의 .NET Framework를 설치해야 합니다. 기존 버전이 설치되어 있는 상태에서도 최신 버전의 .NET Framework를 설치할 수 있습니다. .NET Framework 및 공용 언어 런타임 설치에 대한 자세한 내용은 Microsoft .NET Framework 다운로드 페이지를 참조하십시오.
보안 정책으로 인해 어셈블리를 실행할 수 없는 경우
이러한 문제 때문에 다음 오류 메시지가 표시될 수 있습니다.
현재 .NET 보안 정책은 <path> 폴더에서 <assembly>를 실행하지 못하도록 되어 있습니다. 사용자의 컴퓨터에서 보안 설정을 변경하지 마십시오. .NET 보안 정책은 관리자 또는 사용자 지정 매크로를 작성한 개발자가 제어합니다. 사용자는 문서를 편집하고 저장할 수 있습니다. 자세한 내용은 관리자 또는 이 문서의 작성자에게 문의하십시오.
여기서 사용자 지정 매크로는 관리되는 어셈블리를 말합니다. 어셈블리는 신뢰되지 않으며 위험할 수 있습니다. 어셈블리가 안전하다는 사실을 확신할 수 있는 경우 이를 실행하기 전에 사용자의 .NET 보안 정책에서 어셈블리에 완전 신뢰를 부여해야 합니다. 자세한 내용은 방법: 폴더 및 어셈블리에 대한 권한 부여(2003 시스템)를 참조하십시오.
보안 정책으로 인해 문서에서 어셈블리를 로드할 수 없는 경우
이러한 문제 때문에 다음 오류 메시지가 표시될 수 있습니다.
현재 .NET 보안 정책은 <document>가 사용자 지정 매크로를 로드하지 못하도록 되어 있습니다. 사용자의 컴퓨터에서 보안 설정을 변경하지 마십시오. .NET 보안 정책은 관리자 또는 사용자 지정 매크로를 작성한 개발자가 제어합니다. 사용자는 문서를 편집하고 저장할 수 있습니다. 자세한 내용은 관리자 또는 이 문서의 작성자에게 문의하십시오.
여기서 사용자 지정 매크로는 관리되는 어셈블리를 말합니다. 이 문제는 해당 문서를 신뢰되지 않는 위치 또는 전자 메일 첨부를 통해 연 경우에 주로 발생하며 이러한 문서는 위험할 수 있습니다. 이 문서가 안전하다는 사실을 확신할 수 있는 경우 문서를 사용자의 컴퓨터에 저장한 다음 여십시오. 컴퓨터에 저장된 문서에는 완전 신뢰가 부여된 내 컴퓨터 영역의 보안 설정이 적용됩니다. 전자 메일에 첨부되어 있는 문서에는 완전 신뢰가 부여되지 않는 인터넷 영역의 보안 설정이 적용됩니다.
또한 올바른 버전의 Microsoft .NET Framework를 컴퓨터에 설치했지만 솔루션을 실행하기 전에 이를 제거한 경우에도 이러한 문제가 발생할 수 있습니다. 사용자가 두 버전의 .NET Framework를 한 컴퓨터에 모두 설치한 다음 한 버전을 제거하면 필요한 버전의 .NET Framework가 설치되어 있지 않다는 메시지 대신 이 보안 메시지가 표시됩니다. 솔루션을 실행하려면 .NET Framework를 설치해야 합니다.
자세한 내용은 Office 솔루션 실행을 위한 보안 요구 사항(2003 시스템)을 참조하십시오.
프로젝트 어셈블리에 완전 신뢰가 있는데 보안 예외가 표시되는 경우
주 프로젝트 어셈블리에 완전 신뢰가 있는 것이 확실한데 보안 예외가 발생했다면 참조되는 어셈블리에서 완료하는 데 필요한 권한이 없는 작업을 수행하려고 시도했기 때문일 수 있습니다. 이 경우에는 참조되는 어셈블리에 필요한 권한을 수동으로 부여해야 합니다.
개발자 컴퓨터에서 프로젝트를 빌드하면 프로젝트의 출력 폴더에 있는 모든 참조되는 어셈블리에 실행 권한이 부여됩니다. 주 프로젝트 어셈블리에만 자동으로 완전 신뢰가 부여됩니다.
어셈블리를 찾을 수 없거나 로드할 수 없는 경우
이러한 문제 때문에 다음 오류 메시지가 표시될 수 있습니다.
사용자 지정 어셈블리를 찾을 수 없거나 로드할 수 없습니다. 사용자는 문서를 편집하고 저장할 수 있습니다. 자세한 내용은 관리자 또는 이 문서의 작성자에게 문의하십시오.
이 오류를 해결하려면 다음과 같은 옵션을 사용해 보십시오.
사용자가 어셈블리 위치에 액세스했는지 확인하고 명명된 어셈블리가 있는지 확인하십시오. 자세한 내용은 Office 솔루션의 어셈블리 개요를 참조하십시오.
사용 가능한 어셈블리가 있으면 Word 또는 Excel에서 Visual Studio Tools for Office 런타임과 호환되지 않는 .NET Framework CLR(공용 언어 런타임) 버전을 명시적으로 로드한 사용자 지정(예: 추가 기능, 스마트 태그 또는 스마트 문서)을 실행하고 있는지 여부를 확인합니다. 이 문제를 해결하려면 솔루션에서 사용하는 런타임과 일치하지 않는 버전의 .NET Framework CLR을 명시적으로 로드하는 모든 사용자 지정을 비활성화합니다.
실행 중인 응용 프로그램은 .NET Framework CLR의 인스턴스를 하나만 로드할 수 있습니다. 사용자 지정에서 Word 또는 Excel이 이전 버전의 .NET Framework CLR을 로드하도록 하는 경우 Visual Studio Tools for Office 솔루션은 로드되지 않습니다.
사용자 지정 어셈블리에서 처리되지 않은 예외로 인해 어셈블리가 로드되지 않고 있는지 확인합니다. 디버거를 공용 언어 런타임 예외가 발생할 때 프로세스가 중단되도록 설정하거나 옵션 대화 상자에서 예외가 AppDomain 또는 관리/네이티브 경계를 넘어서면 중단 옵션을 설정한 상태로 솔루션을 디버깅합니다. 자세한 내용은 방법: Office 프로젝트의 오류 처리 및 옵션 대화 상자, 디버깅, 일반을 참조하십시오.
어셈블리를 초기화할 수 없는 경우
이러한 문제 때문에 다음 오류 메시지가 표시될 수 있습니다.
<project>의 사용자 지정 매크로를 제대로 초기화하지 못했습니다. 사용자는 문서를 편집하고 저장할 수 있습니다. 자세한 내용은 관리자 또는 이 문서의 작성자에게 문의하십시오.
여기서 사용자 지정 매크로는 관리되는 어셈블리를 말합니다.
이 오류 메시지는 다음과 같은 이유 때문에 표시됩니다.
주 Office 프로젝트 어셈블리가 부분적으로 신뢰되기 때문입니다. 예를 들어 컴퓨터 수준 보안 정책에서 인트라넷 영역 권한만 부여된 네트워크 공유 위치에 프로젝트를 만드는 경우 사용자 수준에서 완전 신뢰를 부여해도 이 메시지가 표시됩니다. 어셈블리는 보안 경고가 표시되지 않은 채 로드되지만 컴퓨터 수준 정책은 보다 제한적이므로 Office 개체 모델에 액세스하는 데 필요한 권한(완전 신뢰 권한)이 어셈블리에 부여되지 않고 어셈블리가 초기화되지 않습니다. 로컬 컴퓨터에 저장되어 있지 않은 어셈블리에 대한 작업을 하는 경우 네트워크 관리자가 컴퓨터 수준에서 완전 신뢰를 부여해야 합니다. 자세한 내용은 Office 솔루션 실행을 위한 보안 요구 사항(2003 시스템)을 참조하십시오.
참조된 COM 구성 요소에 대한 주 Interop 어셈블리가 참조를 추가하기 전에 전역 어셈블리 캐시에 설치되지 않기 때문입니다. Visual Studio에서 생성하는 interop 어셈블리는 상황에 따라 제대로 작동하지 않을 수도 있으며 전역 어셈블리 캐시가 아닌 프로젝트 디렉터리에 저장됩니다.
올바른 interop 어셈블리를 참조하려면
True로 설정된 Copy Local 속성을 가진 COM 구성 요소(예: Office 응용 프로그램)에 대한 모든 참조를 프로젝트에서 찾습니다.
참조를 마우스 오른쪽 단추로 클릭한 다음 바로 가기 메뉴에서 제거를 클릭합니다.
프로그램 추가/제거를 실행하고 전역 어셈블리 캐시의 구성 요소에 대한 주 interop 어셈블리를 설치합니다. 자세한 내용은 방법: Office 주 Interop 어셈블리 설치를 참조하십시오.
Visual Studio에서 프로젝트를 열고 구성 요소에 대한 참조를 새로 추가합니다. 자세한 내용은 방법: 주 Interop 어셈블리를 통한 Office 응용 프로그램 대상 선택을 참조하십시오.
어셈블리를 오프라인에서 사용할 수 없는 경우
이러한 문제 때문에 다음 메시지가 표시될 수 있습니다.
<path>의 사용자 지정 매크로는 오프라인에서는 사용할 수 없습니다. 온라인으로 전환하여 사용자 지정 매크로를 다운로드하시겠습니까? 그러면 사용자의 컴퓨터에서 실행하는 Internet Explorer와 같은 다른 프로그램에도 영향을 미칩니다.
여기서 사용자 지정 매크로는 관리되는 어셈블리를 말합니다. 이 메시지는 컴퓨터가 오프라인 모드로 설정되어 있고 캐시에 어셈블리의 복사본이 없는 경우에 표시됩니다. 오프라인에서 작업하려면 다음 조건이 충족되어야 합니다.
어셈블리가 웹 서버에 있어야 합니다.
사용자 지정 속성에 있는 HTTP 또는 HTTPS 경로를 통해 어셈블리에 액세스해야 합니다.
위 조건을 충족하는 어셈블리를 캐시하려면 온라인으로 전환하고 Office 문서를 열어 적어도 한 번 이상 어셈블리의 복사본을 다운로드해야 합니다. 이렇게 하면 어셈블리를 오프라인 작업에 사용할 수 있습니다. 자세한 내용은 Office 솔루션의 오프라인 모델(2003 시스템) 및 방법: 오프라인으로 사용할 문서 배포(2003 시스템)를 참조하십시오.
오프라인 모드 또는 온라인 모드 선택은 컴퓨터 전체에 적용되므로 모드 전환으로 인해 다른 프로그램에도 영향을 미칠 수 있습니다. Internet Explorer의 파일 메뉴에서 오프라인으로 작업을 선택하면 모든 응용 프로그램이 오프라인 모드로 전환됩니다.
어셈블리를 온라인에서 사용할 수 없는 경우
이러한 문제 때문에 다음 메시지가 표시될 수 있습니다.
<path>의 사용자 지정 매크로는 온라인에서는 사용할 수 없지만 로컬 복사본은 사용할 수 있습니다. 오프라인으로 전환하여 캐시된 복사본을 사용하시겠습니까? 그러면 사용자의 컴퓨터에서 실행하는 Internet Explorer와 같은 다른 프로그램에도 영향을 미칩니다.
여기서 사용자 지정 매크로는 관리되는 어셈블리를 말합니다. 이 메시지는 컴퓨터가 네트워크에 연결되어 있지 않거나 네트워크가 작동하지 않을 때 컴퓨터를 온라인 모드로 설정한 경우에 표시됩니다. 확인을 클릭하면 컴퓨터가 오프라인 모드로 전환되고 어셈블리의 캐시된 복사본이 사용됩니다. 캐시된 어셈블리를 사용하려면 이 대화 상자에서 확인을 클릭하거나 Internet Explorer의 파일 메뉴에서 오프라인으로 작업을 선택하여 컴퓨터를 오프라인 모드로 설정해야 합니다. 자세한 내용은 Office 솔루션의 오프라인 모델(2003 시스템) 및 방법: 오프라인으로 사용할 문서 배포(2003 시스템)를 참조하십시오.
오프라인 모드 또는 온라인 모드 선택은 컴퓨터 전체에 적용되므로 모드 전환으로 인해 다른 프로그램에도 영향을 미칠 수 있습니다. 컴퓨터를 오프라인 모드로 설정하면 모든 응용 프로그램이 오프라인 모드로 전환됩니다.
어셈블리를 로드할 수 없는 경우
이러한 문제 때문에 다음 오류 메시지가 표시될 수 있습니다.
<assemblyname> 어셈블리에서 <projectname> 형식을 로드할 수 없습니다.
솔루션 코드를 난독 처리한 경우 이 메시지가 표시될 수 있습니다. 코드를 난독 처리하면 모든 클래스 이름이 변경됩니다. 그러나 원본 클래스 이름이 매니페스트에서 참조되므로 난독 처리기는 매니페스트를 변경하지 않습니다.
이 오류가 발생하지 않도록 하려면 워크시트 및 통합 문서 클래스의 이름을 바꾸지 않고 클래스의 난독 처리기 목록에 추가합니다.
국가별 설정에 따라 일부 Excel 메서드에서 오류를 반환하는 경우
최종 사용자의 국가별 설정에서 선택된 로캘이 Microsoft Office Excel 2003의 설치 언어와 일치하지 않으면 일부 Excel 메서드와 속성을 호출할 때 다음과 같은 오류 메시지가 나타날 수 있습니다.
'System.Runtime.InteropServices.COMException' 형식의 첫째 예외가 mscorlib.dll에서 발생했습니다.
추가 정보: HRESULT에서 예외가 발생했습니다. 0x800A03EC.
- 또는 -
'System.Runtime.InteropServices.COMException' 형식의 첫째 예외가 ExcelProject.dll에서 발생했습니다.
추가 정보: 이전 형식이거나 잘못된 형식 라이브러리입니다.
이 문제 해결 방법에 대한 자세한 내용은 Office 솔루션 전역화 및 지역화를 참조하십시오.
Office 문서를 오류 없이 열었지만 코드가 실행되지 않는 경우
코드가 실행되지 않는데 오류 메시지가 표시되지 않는 문제의 원인은 다음과 같습니다.
.NET Framework가 컴퓨터에 설치되어 있지 않기 때문에 Office 주 interop 어셈블리가 전역 어셈블리 캐시에 설치되어 있지 않거나 Office 설치에서 어셈블리가 사용할 수 없음으로 표시되어 있습니다.
사용하고 있는 Word 또는 Excel 버전에서 Visual Studio Tools for Office 솔루션을 지원하지 않습니다. 최종 사용자는 Visual Studio Tools for Office를 지원하는 Microsoft Office 2003 버전에서 Word 및/또는 Excel을 설치해야 합니다. 자세한 내용은 방법: Microsoft Office 2003 솔루션을 개발하기 위해 Visual Studio Tools for Office 설치를 참조하십시오.
Windows 탐색기에서 .doc 또는 .xls 파일에 같은 창에서 열기 옵션을 선택하지 않은 상태에서 HTTP 또는 HTTPS 위치의 문서를 열었습니다. Internet Explorer에서는 이 옵션을 통해 문서가 현재 창 내에 호스팅되는지 또는 별도의 창에 호스팅되는지를 판단합니다. 문서가 별도의 창에 호스팅되는 경우에는 사용자 지정이 로드 및 실행되지 않습니다. Word 또는 Excel 문서에 대한 같은 창에서 열기 옵션에 액세스하려면 Windows 탐색기를 열고 도구 메뉴를 클릭한 다음 폴더 옵션을 클릭합니다. 파일 형식 탭의 파일 형식 목록에서 DOC 또는 XLS를 선택하고 고급을 클릭한 다음 같은 창에서 열기가 선택되어 있는지 확인합니다.
Word 문서 프로젝트가 동일한 컴퓨터의 Visual Studio에서 열립니다. Visual Studio를 닫고 문서를 다시 엽니다.
자세한 내용은 문서 수준 프로젝트의 디버깅을 참조하십시오.
매크로 보안을 높게 설정했지만 코드가 여전히 실행되는 경우
관리 코드 확장을 통해 만든 Microsoft Office 2003 솔루션은 최종 사용자의 Office 응용 프로그램 보안 설정이 높음으로 지정되어 있는 경우에도 실행됩니다. 관리되는 어셈블리 코드 보안을 Microsoft Office Word 2003 또는 Microsoft Office Excel 2003이 아닌 Microsoft .NET Framework에서 관리하기 때문에 이러한 문제가 발행합니다. 그러나 어셈블리 코드를 실행하지 않고도 관리 코드 확장이 포함된 문서나 통합 문서를 열 수 있는 몇 가지 방법이 있습니다. 자세한 내용은 방법: 코드를 실행하지 않고 Office 솔루션 열기를 참조하십시오.
모덜리스 폼에서 처리되지 않은 예외가 발생하면 Excel 또는 Word가 예기치 않게 종료되는 경우
모덜리스 폼에서 이벤트를 트리거한 후 Excel이나 Word가 예기치 않게 종료되면 코드에서 처리되지 않은 예외가 발생할 수 있는 위치가 있는지 확인하십시오. 데이터가 손실되지 않게 하려면 오류 처리를 추가하십시오.
Outlook 추가 기능이 로드되지 않거나 사용할 수 없는 경우
Outlook 추가 기능이 제대로 로드되지 않는지 여부는 다음 몇 가지 방법으로 확인할 수 있습니다.
추가 기능이 초기화되는 동안 Microsoft Office Outlook이 예기치 않게 종료되거나 오류가 발생하면 Outlook에서 추가 기능을 사용하지 못할 수 있습니다. 자세한 내용은 방법: 비활성화된 추가 기능 다시 활성화를 참조하십시오.
추가 기능 매니페스트 파일이 추가 기능 어셈블리와 동일한 디렉터리에 있지 않으면 Outlook 추가 기능이 로드되지 않을 수 있습니다. 매니페스트 파일을 다른 디렉터리에 배포할 경우에는 추가 기능 매니페스트 파일에 있는 asmv2:installFrom 요소의 codebase 특성을 추가 기능 어셈블리 위치를 가리키도록 업데이트해야 합니다.
Outlook에서 Visual Studio Tools for Office 런타임과 호환되지 않는 .NET Framework CLR(공용 언어 런타임) 버전을 명시적으로 로드한 추가 기능을 실행하고 있을 수 있습니다. 이 문제를 해결하려면 호환되지 않는 버전의 .NET Framework를 명시적으로 로드하는 모든 추가 기능을 비활성합니다.
실행 중인 응용 프로그램은 .NET Framework의 인스턴스를 하나만 로드할 수 있습니다. 추가 기능에서 Outlook이 이전 버전의 .NET Framework를 로드하도록 하는 경우 Visual Studio Tools for Office를 사용하여 만들어진 추가 기능은 로드되지 않습니다.
Visual Studio Tools for Office에서 자세한 오류 메시지를 표시하고 모든 작업을 로그 파일에 쓰도록 하는 환경 변수를 설정하여 추가 문제 해결 정보를 얻을 수 있습니다. 자세한 내용은 응용 프로그램 수준 프로젝트의 디버깅을 참조하십시오.
COM 추가 기능 대화 상자를 사용하여 Outlook 추가 기능을 설치할 수 없는 경우
Visual Studio Tools for Office를 사용하여 만든 Outlook 추가 기능을 설치할 때는 COM 추가 기능 대화 상자를 사용하지 마십시오. 이런 경우에는 Outlook 프로젝트 템플릿에 포함된 배포 프로젝트를 사용하십시오. Outlook 추가 기능은 AddinLoader.dll이라는 프록시 .dll 파일을 사용하여 Outlook 기능을 확장합니다. 프록시를 사용하면 관리되는 어셈블리가 COM을 통해 Outlook과 통신할 수 있습니다. 자세한 내용은 응용 프로그램 수준 추가 기능 배포(2003 시스템)를 참조하십시오.
Outlook 추가 기능에 사용자 지정 속성 페이지를 추가할 수 없는 경우
Outlook 추가 기능에서 Outlook의 옵션 대화 상자 또는 Outlook 폴더의 속성 대화 상자에 대한 사용자 지정 속성 페이지를 만드는 경우 사용자 지정 속성 페이지를 명시적으로 COM에 표시되게 해야 합니다. 기본적으로는 어셈블리가 COM에 노출되지 않습니다. 그렇지 않으면 추가 기능에서 사용자 지정 속성 페이지를 만들지 못해 추가 기능을 디버깅할 때 COMException이 발생할 수도 있습니다.
다음과 같은 두 가지 방법으로 사용자 지정 속성 페이지를 COM에 노출되게 할 수 있습니다.
프로젝트의 사용자 지정 속성 페이지를 구현하는 클래스에 ComVisibleAttribute를 추가합니다. 클래스에 특성을 적용하는 방법에 대한 정보는 특성 적용을 참조하십시오.
Visual Studio를 사용하여 전체 추가 기능 어셈블리를 COM에 노출되게 합니다.
Visual Studio를 사용하여 추가 기능 어셈블리를 COM에 노출되게 하려면
Visual Studio의 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
응용 프로그램 탭을 클릭합니다.
어셈블리 정보 단추를 클릭합니다.
어셈블리를 COM에 노출 확인란을 선택합니다.
확인을 클릭합니다.
Outlook 추가 기능에서 Quit 이벤트가 발생하지 않는 경우
Outlook 추가 기능에서 Microsoft.Office.Tools.Outlook.Application 클래스의 Quit 이벤트에 대한 이벤트 처리기를 만들면 이벤트 처리기가 실행되지 않습니다. Visual Studio Tools for Office를 사용하여 만든 추가 기능이 실행되고 있는 Outlook 인스턴스를 닫으면 추가 기능이 Quit 이벤트를 받기 전에 언로드됩니다. 대신 Outlook을 닫을 때 실행할 코드를 프로젝트의 ThisAddIn_Shutdown 이벤트 처리기에 넣을 수 있습니다. 자세한 내용은 2007 Microsoft Office 추가 기능 프로젝트 템플릿 및 2003 Microsoft Office 추가 기능 프로젝트 템플릿을 참조하십시오.
메서드를 닫으면 Word 또는 Excel이 예기치 않게 종료되는 경우
모덜리스 폼에서 Excel Workbook 개체나 Word Document 개체의 Close 메서드를 호출하면 응용 프로그램이 예기치 않게 종료될 수 있습니다. 열려 있는 모든 문서나 통합 문서가 닫히고 데이터가 손실될 수 있습니다. Microsoft Office Outlook에서 Word를 전자 메일 편집기로 사용하는 경우에는 열려 있는 모든 전자 메일 메시지도 닫힐 수 있습니다. AppDomain.DomainUnload 이벤트를 처리하는 동안 Windows Forms 또는 메시지 상자를 표시하는 경우에도 이러한 문제가 발생할 수 있습니다.
이 문제를 해결하려면 모덜리스 폼이나 모델리스 폼에 대한 이벤트에서 Close 메서드를 호출하지 마십시오. 대신 다음 절차를 사용하십시오.
폼에서 문서를 닫아야 할 경우 모달 폼을 사용합니다. 예를 들면 Show 대신 ShowDialog를 사용합니다.
모덜리스 폼을 사용해야 하는 경우 문서나 통합 문서를 닫기 전에 모덜리스 폼이 닫혀 있는지와 폼 참조가 완전히 소멸되어 있는지 확인합니다. 다음 코드는 이러한 예제를 보여 줍니다.
Dim form1 As SampleForm Sub OpenForm() form1 = New SampleForm form1.Show() ' Show the form modelessly. End Sub Sub ForceShutdown() ' Completely close the form if it is still running. ' Note that hiding the form might not work by itself. If (Not form1 Is Nothing) Then form1.Close() form1.Dispose() form1 = Nothing End If Me.Close() End Sub
SampleForm form1; private void OpenForm() { form1 = new SampleForm(); form1.Show(); // Show form modelessly. } private void ForceShutdown() { // Completely close the form if it is still running. // Note that hiding the form might not work by itself. if (form1 != null) { form1.Close(); form1.Dispose(); form1 = null; } object saveChanges = Word.WdSaveOptions.wdSaveChanges; this.Close(ref saveChanges, ref missing, ref missing); }
C#에서 missing 매개 변수를 전달하는 방법에 대한 자세한 내용은 Office 솔루션의 선택적 매개 변수 이해를 참조하십시오.
다른 이름으로 저장 대화 상자의 Cancel 매개 변수를 설정하면 정확하지 않은 경고가 반환되거나 Word가 예기치 않게 종료되는 경우
ThisDocument의 DocumentBeforeSave 이벤트 처리기 안에 다른 이름으로 저장 대화 상자를 표시하고 Cancel 매개 변수를 false로 설정하면 응용 프로그램이 예기치 않게 종료될 수 있습니다. Cancel 매개 변수를 true로 설정하면 자동 저장 기능이 비활성화되었음을 나타내는 오류 메시지가 표시됩니다.
Excel 워크시트 창을 분할하면 Windows Forms 컨트롤이 예기치 않게 작동하는 경우
Windows Forms 컨트롤이 들어 있는 워크시트 창을 분할하면 해당 컨트롤이 두 창에서 비슷하게 작동하지 않을 수 있습니다. 예를 들어 코드를 실행하여 워크시트에서 TextBox의 BackColor 속성을 변경할 경우 변경 내용이 하나의 창에만 표시될 수 있습니다.
Excel 호스트 컨트롤을 메서드에 전달하면 InvalidCastException이 throw되는 경우
Excel의 일부 메서드와 속성의 경우 해당 메서드와 속성에 네이티브 Office 개체를 전달해야 하는데 ExcelLocale1033Attribute 특성을 false로 설정하고 네이티브 Office 개체를 기반으로 하는 호스트 컨트롤을 전달하는 경우 InvalidCastException이 throw됩니다. 호스트 컨트롤의 InnerObject 속성을 사용하여 이러한 메서드와 속성에 내부 네이티브 Office 개체를 전달할 수 있습니다. Excel의 지역화 문제에 대한 자세한 내용은 여러 가지 국가별 설정으로 Excel의 데이터 서식 지정을 참조하십시오.
모달 대화 상자를 표시하면 ListObject의 데이터 바인딩이 실패하는 경우
ListObject에 바인딩되어 있는 데이터 집합이 업데이트되는 동안 Excel에서 모달 대화 상자를 표시하면 ListObject의 데이터 바인딩이 실패합니다. ListObject에서 데이터 바인딩이 손실되면 DataBindingFailure 이벤트가 발생합니다. ListObject를 데이터 소스에 다시 바인딩하려면 DataBindingFailure 이벤트를 처리하고 SetDataBinding 메서드를 호출합니다.
배포 매니페스트를 두 번 클릭하면 오류가 발생하는 경우
배포 매니페스트를 두 번 클릭하면 다음 메시지가 표시됩니다.
계속할 수 없습니다. 응용 프로그램 형식이 잘못 지정되었습니다. 도움이 필요하면 응용 프로그램 공급업체에 문의하십시오.
ClickOnce 배포와 달리 배포 매니페스트를 두 번 클릭하여 Visual Studio Tools for Office 솔루션을 실행할 수 없습니다. 솔루션을 실행하려면 Office 응용 프로그램을 엽니다. Word와 Excel의 경우 응용 프로그램 내에서 솔루션 문서를 엽니다. 또는 문서 파일을 두 번 클릭해도 됩니다.
Visual Studio Tools for Office 솔루션 배포에 대한 자세한 내용은 문서 수준 사용자 지정 배포(2003 시스템) 및 응용 프로그램 수준 추가 기능 배포(2003 시스템)를 참조하십시오. 배포 매니페스트에 대한 자세한 내용은 Office 솔루션의 배포 매니페스트(2003 시스템)를 참조하십시오.