
WebService 및 FilterXML 수식을 사용하여 Bing의 API와 인터페이스하고 데이터를 다시 끌어오는 Excel 2016에서 Excel 스프레드시트를 만들었습니다. 수식은 Excel 2016에서 훌륭하게 작동하지만 이전 버전의 Excel 2010 등에서 스프레드시트를 로드하면 #Name? 오류가 발생하고 결과가 반환되지 않습니다. 이는 Webservice 및 FilterXMl 수식이 이전 버전의 Excel과 호환되지 않기 때문이라고 생각합니다.
기본적으로 코드는 다음과 같아야 합니다.
Sheet2라는 시트의 C2 셀에서 API 키를 가져옵니다. C25 셀에서 시작 위치를 가져옵니다(이것은 변수이며 사용자가 변경할 수 있음). D25 셀에서 끝 위치를 가져옵니다(이것은 변수이며 사용자가 변경할 수 있음). ) 셀 C27에서 전송 모드를 선택합니다(이것은 변수이며 사용자가 변경할 수 있음). URL은 C29에 표시되어야 합니다. 이에 대한 현재 코드는 다음과 같습니다. =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(distance.url,"$1) ",C25),"$2",D25),"$3",travel.mode),"$k",bingmaps.key)
그러면 C31 셀에 응답이 생성됩니다. 즉, 현재 원시 출력(WebService가 사용되는 곳)입니다. 코드는 다음과 같습니다. =WEBSERVICE(C29) 이렇게 하면 셀 C32에 상태 코드(예: 200)가 생성됩니다(여기서 =FILTERXML(C31,"//StatusCode[1]"이 현재 사용되고 있음).
=FILTERXML(C31,"//TravelDistance[1]")은 셀 C34에서 사용되어 C31에서 이동 거리를 가져옵니다. =FILTERXML(C31,"//TravelDuration[1]")은 셀 C35에서 사용되어 다음을 표시합니다. C31부터의 지속 시간(분)
감사해요.
답변1
이런, 이전 버전의 Excel에서 이를 안정적으로 구현하는 것보다 이전 클라이언트를 업그레이드하는 것이 더 쉬울 수도 있습니다. 몇 년 전 VBA에서 IE 개체를 사용했던 기억이 납니다. 매우 안정적이지는 않았지만 http get 호출뿐만 아니라 전체 사이트를 로드하고 있었습니다.
좀 더 자세한 정보를 보려면 여기를 살펴보세요.https://stackoverflow.com/questions/3521876/calling-web-service-using-vba-code-in-excel-2010
최근에 제가 사용한 더 쉬운 해킹은 웹 데이터를 웹 데이터 원본으로 Excel로 바로 가져오는 것이었습니다(데이터 > 웹에서). 나는 트위터 피드의 전체 HTML 응답을 빈 시트에 곧바로 덤프한 다음 검색 및 조회 공식을 사용하여 내가 원하는 데이터의 행과 열을 찾았습니다. 데이터를 새로 고친 후 "텍스트를 열로" 마법사를 자동으로 실행할 수도 있다는 점을 기억하고 싶습니다. 이 모든 작업은 VBA 없이 수행되었으므로 xlsm 파일이 필요하지 않으며 사람들이 매크로를 활성화하는 것을 두려워하지 않습니다.
추신. 이제 현재 컴퓨터(Windows 10, Office 2016)와 이전 컴퓨터(Windows 7, Office 2010 또는 13?)에서 동일한 시트를 열려고 했습니다. 브라우저에서 자바스크립트가 비활성화되어 있다고 불평합니다(내부적으로는 여전히 Edge가 아닌 Internet Explorer 개체라고 가정합니다).