2014-07-08 2 views
1

시간을 기준으로 프로세스를 어떻게 전환 할 수 있습니까? ++++시간에 따른 VBA 전환 프로세스

내가 구글에 엑셀 매크로 보내는 XML 요청을 가지고, 그것은 3 개 중요한 프로세스가 있습니다.

  1. XML 요청을 보내는 프로세스. 이 프로세스는 초당 10 개의 요청으로 제한됩니다.
  2. KERNEL32.DLL에서 (프로그램
  3. 엑셀 응용 프로그램 자체 매크로는 현재 절전 기능을 사용

(프로그램이 실행되는 동안 편집해야한다)를 종료 할 수있는 기능을 가진 로딩 바) 프로세스를 지연시키는 DoEvents 함수와 두 프로세스가 모두 실행되도록 (그리고 응용 프로그램을 백그라운드에서 수정할 수 있도록) DoEvents 함수를 사용합니다.

Ex. 프로세스 1

Do While True 
    Call doSomething 
    DoEvents 'handles processes 2 and 3 
    Sleep 100 
Loop 

이 메서드는 전체 응용 프로그램을 지연시킵니다. 백그라운드에서 Excel 워크 시트를 편집하는 것은 지연이 100ms이기 때문에 지연되며 프로그램을 종료하려고 시도하는 것도 지연됩니다.

이 지연 시간을 없애기 위해 프로세스 2와 3을 실행하고 요청을 보낼 시간이되면 제어를 프로세스 1로 전환합니다. 요청이 전송 된 후 프로세스 1은 프로세스 2와 3으로 프로그램을 제어 할 수 있습니다. 누구에게도 해결책이 있습니까?

보너스는 : VBA 멀티 스레딩/처리를 위해 작은 능력을 갖고있는 것 같아요,하지만 누군가가이 모든 프로세스를 실행하는 방법을 생각할 수 있는지에 대한 그

+0

용어를 잘못 사용했을 수도 있습니다. 나는 그 점을 지적 해 주셔서 감사합니다. – Alter

답변

1

구현의 세부 사항을 알고 싶어요 한 번에 찾고있는 것들 각각에 상당히 관련되어 있지만 검색을 통해 쉽게 찾을 수 있습니다. 그래서 각 질문에 대한 접근 방식을 제안 할 것입니다.

  1. Application.OnTime을 사용하면 지정된 시간 간격 후에 매크로가 실행됩니다.
  2. 여러 스레드를 실행할 수는 있지만 까다 롭습니다. 당신도
    • 엑셀의 다른 인스턴스를 호출하고 매크로를 실행 확인해야합니다, 당신의 메인 쓰레드가 영향을받지 않는 방법 또는
    • 는 별도의 텍스트 파일 (VB 스크립트 파일) 및 전화로 매크로를 넣어 Shell을 통해 실행하십시오. 이렇게하면 기존 매크로를 계속 실행할 수 있고 사용자가 UI 제어권을 다시 얻을 수 있지만 스크립트는 백그라운드에서 새 데이터를 가져옵니다.
    • Excel의 별도 인스턴스에서 코드의 일부를 실행 한 다음 DDE (구식이지만 상당히 신뢰할 수있는 기술)를 통해 또는 RTD 서버라는 것을 구축하여 현재 스프레드 시트로 결과를 펌핑합니다. 위의 각 점의

충분한 예제는이 사이트에 다른 곳에서 Google을 통해 사용할 수 있습니다.

+0

OnTime은 밀리 초 단위로 작동하지 않습니다. – Alter