2008-09-25 7 views
2

엑셀에서 외부 프로그램을 실행하는 가장 좋은 방법은 무엇입니까? 몇 분 동안 실행될 수도 있습니다. 어떻게해야하는지에 대한 최선의 방법은 무엇입니까? 이상적으로,Excel/VBA에서 장기 실행 외부 프로그램을 호출하려면 어떻게해야합니까?

  1. 프로세스가 실행 중임을 사용자에게 알리는 모델 대화 상자.
  2. 실행 파일이 실패하면 사용자에게 알림을 받아야합니다.
  3. 제한 시간을 적용해야합니다.
  4. 취소 버튼이 대화 상자에 있어야합니다.

모든 모범 사례를 환영합니다. .dll 또는 .exe를 호출하는 솔루션에 관심이 있습니다. 가급적이면 Excel '03 또는 이전 버전과 함께 작동하지만 나중에 최신 버전으로 전환하는 이유를 듣고 싶습니다.

답변

5

당신은

How to launch a Win32 Application from Visual Basic

How To Use a 32-Bit Application to Determine When a Shelled Process Ends

그들은 모두 빨리 당신에게 프로세스를 시작하고 그것의 완료를 확인 할 수있는 프레임 워크를 제공 이러한 두 개의 Microsoft 기술 자료 문서를 확인해야합니다. 기술 자료 기사에는 관련성이있는 몇 가지 추가 참조 자료가 있습니다.

이 기술 자료 문서에서는 쉘 프로세스가 끝날 때까지 무한한 시간 동안 기다리고 싶다고 가정합니다.

& = WaitForSingleObject (proc.hProcess, INFINITE) 함수 호출을 수정하여 밀리 초 단위의 일정 시간 후에 반환 할 수 있습니다. INFINITE를 밀리 초를 나타내는 양수 값으로 대체하고 Do While 고리. 반환 값은 프로세스가 완료되었거나 타이머가 만료되었는지 여부를 알려줍니다. 프로세스가 끝나면 리턴 값은 0이됩니다.

반환 값이 0이 아니면 프로세스가 아직 실행 중이지만 응용 프로그램에 제어가 반환됩니다. 이 시간 동안 애플리케이션을 긍정적으로 제어하는 ​​동안 UI 상태의 일종을 업데이트할지, 취소를 확인할지 등을 결정할 수 있습니다. 다시 돌아가서 더 기다릴 수도 있습니다.

포격하고있는 프로그램이 쓴 것이라면 추가 옵션이 있습니다. 윈도우 중 하나에 연결하여 상태 게시판에 첨부하여 상태 피드백으로 사용할 수있는 프로그램 게시 메시지를 가질 수 있습니다. 고려해야 할 경우 별도의 항목으로 남겨 두는 것이 가장 바람직합니다.

프로세스 구조를 사용하여 호출 된 프로세스에서 리턴 값을 얻을 수 있습니다. 당신의 프로세스는 이것을 유용하게 사용할 수있는 가치를 되돌려 줄 필요가있다.

  1. 가 될 플래그를 설정합니다 클릭 취소 단추와 프로세스의 시작시에 사용자에게 모달이 아닌 상태 대화 상자를 제공합니다 : 필요의이 종류에

    내 일반적인 접근하는 것입니다 나중에 확인했습니다. 사용자에게 상태를 제공하는 것이 불가능할 가능성이 높으므로 경과 시간 또는 애니메이션 GIF 중 하나를 제공하면 기대 관리에 도움이 될 수 있습니다.

  2. 은 취소 프로세스가 완료 가까운 대화 상자의 경우 모든 500ms로
  3. 을 확인하고 함께 계속 허용 프로세스가 완료 될 때까지 과정을
  4. 대기를 시작합니다.
  5. 프로세스가 완료되지 않은 경우 사용자가 취소를 클릭했는지 확인하고 프로세스가 완료되면 프로세스 창에 닫기 메시지를 보냅니다. 이것은 제대로 작동하지 않을 수 있으며 프로세스를 종료해야 할 수도 있습니다. 최선의 방법은 제대로 닫히지 않을 경우 프로세스를 포기하는 것입니다. 이 시점에서 제한 시간을 확인하고 사용자가 취소를 누를 때와 같은 경로를 택할 수도 있습니다.

희망 사항 : 청구서.

+0

도움 빌을 보내 주셔서 감사합니다. –