2013-01-07 3 views
1

문서/프리젠 테이션을 닫았는지 여부를 추적하고 문서/프리젠 테이션을 닫기 전에 일부 맞춤 코드를 수행하는 일부 Office 애드 인을 만들었습니다.파워 포인트 프리젠 테이션 닫기

이 모든 코드는 추가 기능 Word에서 문제없이 작동하지만, 파워 포인트에 추가로 내가

"함께 System.Runtime.InteropServices.COMException (0x80048240) 얻을 : 프레젠테이션 (알 수없는 member) : 잘못된 요청이 작업은 이 이벤트 처리기에서 수행 할 수 없습니다. "- PowerPoint 응용 프로그램을 종료 할 때 오류가 발생했습니다. 호출되는 메서드는 presentation.Close()입니다. 이 리본 이벤트 핸들러의 호출되는 경우

방법은 잘 작동하지만 그것이 응용 프로그램 고르게 (PresentationClose, PresentationBeforeClose 또는 PresentationCloseFinal)의 의해 호출되는 경우는 presentation.Close()을하지 못합니다.

언급 한 바와 같이이 문제가없는 Word 추가 기능에서 동일한 코드가 있습니다. 두 제품의 이벤트 처리가 다르다는 것을 알고 있지만 PowerPoint에서 응용 프로그램을 종료하거나 프레젠테이션을 닫을 때 문제가되는 원인을 파악할 수 없습니다.

희망찬 누군가가 좋은 의견을들을 수 있기를 바랍니다.

+0

이 문제의 해결 방법을 찾았습니까? –

답변

0

나는 아주 비슷한 것을 보았습니다. PPT에서 버그 나 다른 문제를 해결하려면 현재 프레젠테이션을 닫은 다음 다시 열어야했지만 이벤트 처리기 내에서 프레젠테이션을 닫을 수 없었습니다. (프레젠테이션에 속한 이벤트를 처리하고 있기 때문에 말이됩니다.).

이벤트 핸들러가 모덜이없이로드되도록함으로써이 문제를 해결했습니다. 이렇게하면 이벤트 핸들러의 코드가 이벤트 핸들러의 End Sub로 계속 진행되므로 더 이상 이벤트 핸들러에 있지 않게됩니다.

양식의 초기화 코드가 현재 문서를 닫고 양식을 언로드합니다.

양식을 표시 할 필요가 없으므로 사용자는이 양식을 볼 수 없습니다.

0

여러 가지 방법을 시도했지만 아무런 효과가 없었습니다. 그래서 파워 포인트 프로세스를 검색하고 코드를 통해 제거하는 것이 좋습니다. 희망 사항입니다.

Process[] pros = Process.GetProcesses(); 
    for (int i = 0; i < pros.Count(); i++) 
    { 
    if (pros[i].ProcessName.ToLower().Contains("powerpnt")) 
     { 
      pros[i].Kill(); 
     } 
    }