1

나는 엑셀 2007로 테이블의 데이터를 쿼리하려고하는 HTML 웹 페이지를 가지고있다.이 웹 페이지는 암호로 사인해야한다. 내 일반 IE7 브라우저로 로그인 한 다음 데이터 -> 연결 -> 내 연결로 이동하여 쿼리를 편집합니다. 이것은 IE7 쿠키 캐시를 읽고 "웹 쿼리가 데이터를 반환하지 않았습니다"라는 메시지가 표시되면 "다시 시도"를 클릭하여 서버의 보안에 연결하기 위해 데이터를 다시 POST합니다. 이렇게하면 데이터가 제대로 가져옵니다.Excel 웹 쿼리 개체 및 쿠키 : 더 좋은 방법이 있습니까?

나는 이것을 잘 할 수 있으며, 하루에 한 번만 할 필요가있다. 내 응용 프로그램의 다른 사용자가 내 질문에이 어려운 발견 :

VB에서이 데이터를 자동으로 POST POST 할 수 있습니까? 아마도 IE.Document.cookie의 쿠키 속성을 사용해야한다고 생각하고 있습니까?

답변

1

웹 쿼리 (XML 라이브러리 참조 설정)를 계속하기 전에 다음 로그인 스크립트를 호출합니다. POST 매개 변수를 찾는 방법에 대한 지침을 찾아보십시오.

Sub XMLHttpLogin() 

    Dim i As Integer 
    Dim sExpr As String 
    Dim sPar As String, sURL as String 
    Dim sResp As String 
    Dim XMLHttp As MSXML2.XMLHTTP60 

    Set XMLHttp = New MSXML2.XMLHTTP60 

    sPar = "name=user1&pass=pass1&form_id=form1" 'The parameters to send. 
    sURL = "http://www.stackoverflow.com" 

    With XMLHttp 
     .Open "POST", sURL, True 'Needs asynchronous connection 
     .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
     .send (sPar) 

     i = 0 'wait until data has been downloaded 
     Do While i = 0 
      If .readyState = 4 Then 
       If .Status = 200 Then Exit Do 
      End If 
      DoEvents 
     Loop 

     sResp = .responseText 'contains source code of website 
     sExpr = "not-logged-in" 'look for this string in source code 

     If InStr(1, sResp, sExpr, vbTextCompare) Then 
      MsgBox "Not logged in. Error in XMLHttpLogin" 
     End If 
    End With 
End Sub 
+0

감사합니다. XML HTTP 라이브러리에 대한 귀하의 아이디어를 볼 수있었습니다. 나는 그것의 걸림 새를 havent 얻지 않았다, 그러나 나는 그것의 아주 강력한 말할 수있다. IE가 웹 페이지에서 데이터를 가져 오는 것보다 훨씬 낫습니다. –

관련 문제