문제

Excel 스프레드 시트에서 HTTP 게시물을 수행하는 데 필요한 VBA 코드는 무엇입니까?

도움이 되었습니까?

해결책

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send("")

또는 HTTP 요청을 더 잘 제어하려면 사용할 수 있습니다. WinHttp.WinHttpRequest.5.1 대신에 MSXML2.ServerXMLHTTP.

다른 팁

Mac과 Windows에서 모두 작동 해야하는 경우 다음과 같은 QueryTables를 사용할 수 있습니다.

With ActiveSheet.QueryTables.Add(Connection:="URL;http://carbon.brighterplanet.com/flights.txt", Destination:=Range("A2"))
    .PostText = "origin_airport=MSN&destination_airport=ORD"
    .RefreshStyle = xlOverwriteCells
    .SaveData = True
    .Refresh
End With

메모:

  • 출력과 관련하여 ... 결과를 VBA 기능이라고하는 동일한 셀로 결과를 반환 할 수 있는지 모르겠습니다. 위의 예에서 결과는 A2로 기록됩니다.
  • 입력과 관련하여 ... 특정 셀을 변경할 때 결과가 새로 고쳐 지려는 경우 해당 셀이 VBA 기능에 대한 인수인지 확인하십시오.
  • VBA가없는 Mac 2008 용 Excel에서는 작동하지 않습니다. Mac의 Excel 2011은 VBA를 다시 얻었습니다.

자세한 내용은 "에 대한 전체 요약을 참조하십시오."Excel의 웹 서비스 사용."

Anwser 외에도 도마뱀을 청구하십시오:

대부분의 백엔드는 원시 게시물 데이터를 구문 분석합니다. 예를 들어 PHP에는 게시물 데이터 내의 개별 변수가 저장되는 배열 $ _post가 있습니다. 이 경우 "Content-Type : Application/X-WWW-Form-urlencoded"를 사용해야합니다.

Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("var1=value1&var2=value2&var3=value3")

그렇지 않으면 변수 "$ http_Raw_Post_Data"에 대한 원시 게시물 데이터를 읽어야합니다.

MSXML에 대한 참조를 추가하여 VBA 프로젝트에서 ServerXMLHTTP를 사용할 수 있습니다.

  1. VBA 편집기 열기 (일반적으로 매크로 편집)
  2. 사용 가능한 참조 목록으로 이동하십시오
  3. Microsoft XML을 확인하십시오
  4. 확인을 클릭하십시오.

(에서 VBA 프로젝트 내에서 MSXML 참조)

그만큼 ServerXMLHTTP MSDN 문서 ServerXMLHTTP의 모든 속성 및 방법에 대한 자세한 내용이 있습니다.

간단히 말해서, 그것은 기본적으로 다음과 같이 작동합니다.

  1. 부르다 열려 있는 원격 서버에 연결하는 메소드
  2. 부르다 보내다 요청을 보내기 위해.
  3. 응답을 읽으십시오 Responsexml, responsetext, 응답장 또는 응답 바디

MSXML 라이브러리를 사용하고 XMLHTTPREQUEST 객체를 사용하기 전에이 작업을 수행했습니다. 보다 http://scriptorium.serve-it.nl/view.php?sid=40

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top