문제

를 사용하여 c#에 VS2005,다.NET2.0.(XP32 비트)이 Winforms 하는 응용 프로그램에 의해 호출 VBA addin(.기능)을 통해 Interop 라이브러리입니다.이용안 잘 작동할 때 어셈블리 컴파일과 실행이 아닌 다른 어떤 곳에서도 내 dev 기계입니다.에 dev 운드(에 디버거하고 실행하는 개체)으로"처리되지 않은 제외에서 0x...에 EXCEL.EXE:0x...위반이 읽기 위 0x...

하지만,여기에 이상한 일부:

첫번째 방법은 내 인터페이스로 작동합니다.다른 모든 방법은 충돌 같습니다.여기서의 근사치 코드:

[Guid("123Fooetc...")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IBar
    {
        [DispId(1)]
         void ThisOneWorksFine(Excel.Workbook ActiveWorkBook);

         [DispId(2)]
         string Crash1(Excel.Workbook ActiveWorkBook);

         [DispId(3)]
         int Crash2(Excel.Workbook activeWorkBook, Excel.Range target, string someStr);
     }

    [Guid("345Fooetc..")]
    [ClassInterface(ClassInterfaceType.None)]
    [ProgId("MyNameSpace.MyClass")]    
    public class MyClass : IBar
    {
        public void ThisOneWorksFine(Excel.Workbook ActiveWorkBook)
        {...}

         string Crash1(Excel.Workbook ActiveWorkBook);
        {...}

         int Crash2(Excel.Workbook activeWorkBook, Excel.Range target, string someStr);
        {...}

    }

그것은 것 같아 어떤 종류의 환경적 것입니다.레지스트리 chundered?수 코드 버그만,그것을 잘 작동합니다.

도움이 되었습니까?

해결책

나는 문제는 이 시나리오와 함께 사무실에서 2003 년니다.어떤 것들을 도왔:

  • Office 설치하 2003 서비스 팩 2 일부를 중단하는 충돌이 일어났을 닫을 때 Excel.

  • 설치 Office2003 서비스 팩 3 이와 버그 수정을 사용하여 XP 스타일에 VSTO2005 응용 프로그램(지의 경우 여기)

  • 실행 Excel VBA CodeCleaner http://www.appspro.com/Utilities/CodeCleaner.htm 주기적으로 임의의 충돌을 방지하는 데 도움이.

  • 액세스 Excel 체에서 여러 스레드 사기,그래서 내가 당신을 희망하지 않습니다.

는 경우에 당신을 가능성이 있을 수도 열 Microsoft PSS.그들은 아주 좋은 수 있는 경우 문제를 재현할 수 있습니다.대부분의 경우에,이런 종류의 버그로,그래서 당신은 청구 되지 않습니다한다:)

다른 팁

귀하의 dev 기계 Win64?내가 문제가 있었 win64 구축는 응용 프로그램의 이동 거리를 설정한 경우 이 플랫폼을 구축하 86.

은 자신의 개발 실행하는 기계는 다른 버전의 사무실 이상의 다른 기계는?내가 알고 있는 Pia 다릅니다.그래서 만약 당신이 개발에 사무실 2003 및 테스트 Office2007 년(또는 그 반대로),예를 들어,당신은 문제로 실행됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top