2011-11-01 4 views
0

MSXML2.XMLHTTP을 사용하여 웹 콘텐츠를 Excel로 가져 오는 Excel VBA 프로젝트가 있습니다. 때로는 스크립트가 실행되는 동안이 오류를 얻을 제외하고 모든 것이 잘 실행합니다 (예 또는 아니오)에 관계없이 내가 클릭하는 버튼의Excel VBA에서 런타임 구문 오류를 디버깅하는 방법?

error dialog

을, (스크립트가 정상적으로 계속 실행하고 모든 것이 OK입니다 즉, 모든 내용이 Excel로 올바르게로드됩니다. 그러나, 매크로가 실행되는 동안이 팝업이 발생하는 것은 좋지 않은 사용자 경험이므로 처음부터이 오류가 나타나지 않도록하고 싶습니다.

VBA 프로젝트에도 344 개의 줄이 없으므로 오류를 나타내는 줄을 잘 모릅니다. 아무도 내가 이것을 고칠 수있는 단서를 가지고 있습니까, 아니면 적어도이 오류 대화 상자가 나타나지 않도록해야합니까?

+0

웹 콘텐츠를 가져 와서 Excel에 배치하는 코드를 표시 할 수 있습니까? 오류가 웹 컨텐트에서 발생할 수 있습니까? –

+0

@TimWilliams VBA 오류 메시지처럼 보이지 않기 때문에 웹에서 온 것일 수도 있습니다. 불행히도 꽤 길고 복잡하기 때문에 여기에 코드를 표시 할 수 없지만 핵심 아이디어는이 기사에서 가져온 것입니다. http://www.tushar-mehta.com/publish_train/xl_vba_cases/vba_web_pages_services/index.htm (XMLHttp 섹션). – 10basetom

+0

@TimWilliams XMLHttp 스크래핑 코드는 단색으로 나타납니다. 약 10 페이지를 한 번 가져올 때 모든 것이 잘 작동합니다. 런타임 오류는 루프에서 약 500 페이지 (한 번에 최대 10 개의 열린 연결)를 가져올 때만 추악한 헤드를 다시 만듭니다. – 10basetom

답변

1

를 수동으로 한 번에 10 페이지를 가져 오는 후, 나는 마침내 4백16번째 페이지에 문제가있는 페이지에 도착했다. 그것은 436 페이지의 내 목록 중이 한 페이지가 조작 XMLHttpReq.responseText을 반환 밝혀졌다, 그래서이 라인이 특정 페이지에 대한 런타임 오류를 유발했다 :

HTMLDoc.body.innerHTML = XMLHttpReq.responseText 

내가 XMLHttpReq을 저장했다이 문제를 해결하려면. responseText를 변수에 적용하려면 유효한 HTML이되도록 소스 코드를 수정 한 다음 HTMLDoc에 할당하십시오.

회신에 시간을내어 주신 모든 분들께 감사드립니다.

0

이 오류의 원인이 될 수있는 행 바로 앞에 on error resume next을 사용할 수 있습니까? 그렇다면 on error goto 0? 이를 위해서는 해당 XMLHTTP에 대한 호출이 문제를 일으킬 수 있는지 확인해야합니다.이 코드는 어디에서나 debug.print를 모르고 문제가 될 수 있습니다.

내가 downvote에 대한 준비입니다 : P

+0

문제는 어디에 오류가 발생하는지 확인할 수 없다는 것입니다. VBA 오류처럼 보이지 않습니다. MSXML2.XMLHTTP에서 비롯된 IE 제어 오류와 유사합니다. – 10basetom

+0

나는 당신의 코멘트에서 그것을보고, MSXML2.XMLHTTP는 버그가 있거나 함수가 기대하지 않는 값을 전달하고있다. 따라서 VBA에서이 함수를 한 번만 호출하면이 함수를 두 개의 on error 문과 함께 사용하십시오. 이는 catch 예외와 유사하며 다른 언어에서도 무시합니다. debug.print로 뿌린 이유는이 라이브러리를 여러 곳에서 사용할 수 있으며 코드의 어느 줄이 문제를 일으키는 지 모르기 때문입니다. – yosukesabai

관련 문제