2016-09-21 6 views
0

웹에서 특정 파일을 다운로드하려면 다음 코드가 필요합니다. 웹 페이지에는 파일의 이름이 있으며 클릭하면 "열거 나 저장 하시겠습니까 ......... ... 열기/저장/취소"가 나타납니다. 이것은 무엇입니까? 내가 지금까지 있습니다.이 시점에서vba를 사용하여 웹에서 excel 파일 다운로드

Dim ie As InternetExplorer 
    Dim html As HTMLDocument 
    Set ie = New InternetExplorer 
    ie.Navigate "http://customerservice.ciena.com/BidRegister/Queue.aspx?REGIONID=3" 
Set fe1 = html.getElementById("ctl00_P1_rdgFileList_ctl00_ctl00_btnGetFile") 
fe1.click 

은 내가 위 말했던 메시지를 팝업을 얻을 어떻게 내가 주어진 위치에서 파일을이 팝업을 방지하고 직접 저장하거나 내 코드를 계속 할 수 있습니까? 난 당신의 안전 프롬프트를 우회 할 수없는 오브젝트 Internet Explorer를 사용하여 무엇을 기억에서 파일을 직접?

답변

2

을 저장 코드의 라인이있다. 나는에서이 피해 갈 수

post/get 요청을 serverhttp 객체를 통해 사용하고 파일을 응답 객체로 가져온 다음 ADODB 객체를 사용하여 본문을 미리 지정된 위치에 직접 저장합니다.

set objhttp = new MSXML2.ServerXMLHTTP60 
URL = "http://www.princexml.com/samples/catalog/PrinceCatalogue.pdf" 
objhttp.Open "GET", URL, False 
objhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
objhttp.send 
If objhttp.Status = 200 Then 
Set oStream = CreateObject("ADODB.Stream") 
    oStream.Open 
    oStream.Type = 1 
    oStream.Write objhttp.responseBody 
    oStream.SaveToFile "filepath and filename.pdf", 2 
    oStream.Close 
End If 

당신이 좀 더 많은 정보를 필요 POST 요청에 대해이 작업을하려면 다음은

은 URL에서 직접 파일을 다운로드해야 GET 요청에 대한 예입니다. 당신이 개발자 도구를
  • 클릭을 열
  • F12 키를 눌러에서 다운로드하는 페이지에 열려

    • 유무 인터넷 익스플로러 : 시도하고 정보를 찾으려면 당신은 인터넷 익스플로러에서 F12 개발자 도구를 사용해야합니다 "네트워크"에서
    • "재생"버튼 ("네트워크 트래픽 캡처 사용")을 클릭하십시오.
    • 이제 파일을 다운로드하면 네트워크 요약에서 파일 팝업을 요청한 POST가 표시됩니다.
    • F12 도구에서 해당 POST 행을 두 번 클릭하고 "요청 본문"을 클릭하십시오. 금광이 있습니다. URL에 보내서 파일을 요청한 것입니다. 코드를 해석하고 코드에 배치하면 문제가 생긴 것입니다.

      objhttp.Open "POST", URL, False 
      objhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
      objhttp.send (This is where you put the data string i.e. the REQUEST BODY) 
      

      죄송하지만 지금은 POST 요청 본문이 가질 수있는 형식의 톤이있다, 더 이상 지정할 수 없습니다 : 할

    마지막 것은 위의 코드에서 두 줄을 변경하는 것 시스템의 예를 보지 않고는 더 이상 갈 수 없습니다.

  • +0

    "여기에 파일 요청 문자열 입력"은 파일 이름 또는 무엇입니까? –

    +0

    죄송합니다. 테스트를 위해 제공 한 URL을 통해 웹 사이트에 액세스하지 못했기 때문에이 부분에 대한 예를 더 구체적으로 설명하지 못했습니다. "파일 요청 문자열"은 서버에 당신이 무엇을하고 있는지 알려주는 몇 가지 키/값 쌍입니다. 나는 그것이 작동하는 방법의 요지를 얻기 위해 귀하의 사이트에 복제 할 수있는 예제 파일 다운로드를 찾으려고 노력할 것입니다. – jamheadart

    +0

    수정 된 답변을 GET 요청에 대한 작업 예제로 표시하려면 네트워크 트래픽 모니터 (IE의 경우 F12 버튼)를 사용할 수 있으면 파일을 다운로드 할 때 POST 요청 문자열이 무엇인지 확인할 수 있습니다. 저것을 에뮬레이트하려고 노력하십시오. – jamheadart

    관련 문제