MS Access VBA에서 별도의 스레드로 실행중인 프로세스를 만들려면 어떻게해야합니까? 나는 앉아서 메시지를 기다리는 과정을 만들고 싶다.MS Access의 VBA + 스레드
답변
좋은 질문이지만, 할 수 없다고 생각합니다.
내가 생각할 수있는 가장 빠른 방법은 양식을 만들고 기존 또는 스스로 조절할 수있는 컨트롤을 넣는 것입니다.
VBA에서이 작업을 직접 수행 할 방법이 없습니다. Here is a MSDN forum discussion 이것에 대해 자세히 이야기합니다. Office는 멀티 스레딩을 위해 VBA 확장을 노출하지 않았습니다.
그러나 Windows API를 호출하거나 다중 스레드 호출을 수행하는 VBA (다른 곳에 작성)에서 고유 한 COM 개체를 만들어이 작업을 수행 할 수 있습니다. 어떻게 든 호출 스레드로 모든 것을 다시 마샬링해야합니다 (아마도 COM 개체 또는 유사한 것으로 폴링).
또한 COM threading에 대한 bendewey의 링크를 확인하고 싶을 수도 있습니다. 이는이 문제와 관련이 있기 때문입니다.
ShellOpen()과 같은 것을 사용하여 쉘 스크립트를 시작하는 방법 (예 : Visual Basic Script x 번)으로 파일을 통해 스크립트와 통신 (결과가 도착할 때를 감지하는 풀링 메커니즘) COM 구성 요소를 작성하는 것보다 쉽다고 생각합니다. 또한 VB Script는 VBA와 매우 유사합니다. 나쁜 쪽은 꽤 많지만 - 파일을 쓰고 읽는 것이 메모리를 공유하는 것보다 시간이 많이 걸리고 풀을하면 VBA 스크립트가 응답하지 않는 것처럼 보일 수 있습니다.
DoEvents 프로 시저를 사용하면 시스템에서 이벤트. 이 서브를 때때로 호출하고 메인 쓰레드는 멈추지 않습니다.
그건 좋은 해결책이 아니에요, 정말 나쁘고, 나쁜 것입니다. – Onkelborg
왜 그렇게 나쁜 해결책입니까? 스크립트에서이 방법을 사용 했으므로 효과적이었습니다. 방금 DoEvents를 1000ms 또는 1 초 간격으로 호출했습니다. – Ionut
음, 효과가 있었지만 그게 전부입니다. 초당 1 회 메시지에 응답하는 인터페이스는 응답하지 않습니다. 그리고 폴링을 위해서만 코드를 실행하는 프로그램을 만드는 것은 나쁜 습관입니다. 아무 것도 일어나지 않을 때 프로그램을 잠자 게하는 것이 더 좋습니다. 다른 프로그램은 컨텍스트 스위치가 적게 발생하고 전력 소비가 줄어들 기 때문에 이러한 이점을 얻을 수 있습니다. 정말로 폴링을해야한다면 DoEvents 접근 방식을 사용하지 말고 적어도 타이머를 사용하면 메시지 대기열이 엉망이되어 응용 프로그램이 응답하지 않게됩니다 – Onkelborg
당신이 해결 체크 아웃 할 수 있습니다 http://www.excelhero.com/blog/2010/05/multi-threaded-vba.html
그것은 엑셀입니다하지만 실질적으로 동일해야합니다. 올바른 : 그것은 VBScript를 "에이전트"를 구축하고 그들이 .. 작업을 실행 예제를 확인해야 방식으로 작동, 그것은
-Viggo
- 1. ACCESS의 VBA 관계
- 2. MS Access의 일대일 관계
- 3. MS Access의 이중 삽입?
- 4. MS Access의 DateTime 형식
- 5. ms-access의 조건부 삽입
- 6. MS Access의 엔티티 관계 다이어그램
- 7. MS-ACCESS의 코드 또는 컨트롤 속성이 더 좋습니까?
- 8. ColdFusion 용 MS Access의 좋은 데이터베이스는 무엇입니까?
- 9. MS Access의 응용 프로그램 아이콘 경로
- 10. MS Access의 웹 사이트에서 데이터 가져 오기
- 11. MS Access의 로컬 서버에서 느린 SQL 코드
- 12. MS Access의 텍스트 상자에 쿼리 결과 할당
- 13. MS Access의 녹음 및 재생 오디오
- 14. MS Access의 필드에서 초기 문자 추출
- 15. MS 워드 용 VBA
- 16. Access의 다중 키?
- 17. VBA를 사용하여 MS Access의 모든 개체에 포커스를 설정하는 방법
- 18. MS Access 2003 - Microsoft Access의 스파크 라인 그래프
- 19. 한 테이블에서 MS Access의 다른 테이블에없는 행을 모두 얻으려면 어떻게해야합니까?
- 20. MS Access의 테이블에 Excel 시트 연결 - VBScript 사용
- 21. MS Access의 SQL Server 연결 테이블에서 열 설명 검색
- 22. ReturnRecords (accdb)로 인한 MS Access의 저장 프로 시저 문제
- 23. 자바 프레임에서 MS Access의 jdbc 테이블 구현을위한 아이디어가 필요합니다.
- 24. MS-Access VBA : form_error 대 오류 on
- 25. 챌린지 : Absolute Beginner를위한 MS Excel VBA 프로그래밍
- 26. MS Access VBA Excel에서 행을 삭제하는 방법
- 27. MS Access/VBA, 데스크톱 잠금 확인
- 28. MS Access VBA 쿼리 결과 내보내기
- 29. MS 액세스 VBA DoCmd.ApplyFilter 거짓을 평가하는 IsNull()
- 30. MS Access-VBA _ 하드 드라이브에 보고서 저장
일을 매우 인상적이다. 다중 스레드 구성 요소를 작성하거나 기존 구성 요소를 사용하여 VBA에서 호출 할 수 있지만 VBA 자체는 다중 스레드가 아닙니다. – Joe