2013-01-04 7 views
3

Google 문서 도구 function = importxml()을 사용하는 것을 좋아하지만 Excel 2010에 비슷한 기능이 있는지 알고 싶습니다. 프로그램이 링크 된 XML 파일에서 데이터를 자동으로 가져올 수있는 방법을 찾지 못하는 것 같습니다.함수 Excel의 importxml과 비슷합니까?

예를 들어, 내가 헤더와 열을 설정할 수 싶어요 "항목 이름", 그 다음 열이 URL

http://util.eveuniversity.org/xml/itemLookup.php?name= 
에 이전 열에서 사용자가 입력 한 항목 이름을 추가해야

그런 다음 결과 XML 파일을 구문 분석하여 형식 ID를 반환합니다. 이 Tritanium 것이 경우 항목 이름을 가지고 열을

=importxml(concatenate("http://util.eveuniversity.org/xml/itemLookup.php?name=",A3);"//itemLookup/typeID") 

A3입니다 사용하여 구글 문서 도구에서 수행하고 데이터를 반환하는 결과 XML 파일

http://util.eveuniversity.org/xml/itemLookup.php?name=Tritanium 

을 형성 수입한다 값 34.

Google 문서 도구가 자동으로 항목 ID를 업데이트 할 때마다 20 개의 항목 이름 목록이 있습니다. Excel 2010에서이 기능을 복제 할 수있는 방법이 있습니까?

감사합니다.

+0

Tritanium 이외에 다른 값은 무엇이며 반환해야하는 항목은 무엇입니까? –

+0

http://util.eveuniversity.org/xml/itemLookup.php?name=Pyerite는 또 다른 예이며 값 35를 반환해야합니다. 세 번째 예제가 필요하면 http : /util.eveuniversity.org/xml/itemLookup.php?name=Isogen은 37을 반환해야합니다. – wKavey

+1

분명히 Excel 2013에는 [FilterXML] (http : //iluvspreadsheets.wordpress.co.kr/2012/12/12/getting-data-with-excel-2013-using-filterxml-for-web-scraping-from-alibaba /) 기능을 제공합니다. 2010 년에는 많은 데이터> 가져 오기를 수행해야 할 것입니다. 나는 전에 XML을 가져 본 적이 없으므로 내 말을 듣지 마십시오. 재미있는 질문. –

답변

2

자신 만의 UDF를 작성해야합니다. (A5 필요한 typeName을 포함하는 경우)

Function GetData(sName As String, sItem As String, Optional sURL = "") As Variant 
    Dim oHttp As New MSXML2.XMLHTTP60 
    Dim xmlResp As MSXML2.DOMDocument60 
    Dim result As Variant 
    On Error GoTo EH 

    If sURL = "" Then 
     sURL = "http://util.eveuniversity.org/xml/itemLookup.php?name=" 
    End If 

    'open the request and send it 
    oHttp.Open "GET", sURL & sName, False 
    oHttp.Send 

    'get the response as xml 
    Set xmlResp = oHttp.responseXML 
    ' get Item 
    GetData = xmlResp.getElementsByTagName(sItem).Item(0).Text 

    ' Examine output of these in the Immediate window 
    Debug.Print sName 
    Debug.Print xmlResp.XML 

CleanUp: 
    On Error Resume Next 
    Set xmlResp = Nothing 
    Set oHttp = Nothing 
Exit Function 
EH: 
    GetData = CVErr(xlErrValue) 
    GoTo CleanUp 
End Function 

이처럼 전화

=GetData(A5, "typeID") 
+0

+1 그게 나를 위해 작동합니다. Microsoft XML, v6.0 –

+0

Thx @doug에 대한 참조를 설정 했으므로 참조를 언급하는 것을 잊었습니다. Fwiw 당신은 물론 늦은 바인딩 대신 사용할 수 –

+0

나는 그것을 준,하지만 내가 컴파일 오류 "사용자 정의 형식이 정의되지 않았습니다"함수를 사용하려고했을 때. 어떤 아이디어? ** 업데이트 : ** 참조를 설정하고 처리 할 수 ​​있었지만 API가 = name 다음에 입력 한 항목을 찾을 수 없다는 의미로 -1을 반환합니다. (예 :'http : //util.eveuniversity.org/xml/itemLookup.php? name = itemnoexist') – wKavey

0

'웹에서'기능 :

한 가지 방법은 MSXML2 도서관, 이런 식으로 뭔가를 사용하는 것 데이터 메뉴에서 온라인 데이터를 직접 스프레드 시트로 가져옵니다. XML 데이터 가져 오기는 데이터 메뉴에도 나열된 기타 소스 하위 메뉴 아래에서 사용할 수 있습니다.

생성 된 연결은 데이터 메뉴의 연결 대화 상자를 통해 관리됩니다.

는 '웹에서'연결을 생성하는 동안 기록 매크로를 사용하여

샘플 코드 : 질문 2013, 시간이 경과되어

Sub Macro1() 
' Macro1 Macro 
With ActiveSheet.QueryTables.Add(Connection:= _ 
     "URL;http://en.wikipedia.org/wiki/Microsoft_Excel" _ 
     , Destination:=Range("$A$1")) 
     .Name = _ 
     "?affID=110195&tt=270912_7a_3912_6&babsrc=HP_ss&mntrId=3e2fc48700000000000088532eb428ec" 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .BackgroundQuery = True 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .WebSelectionType = xlEntirePage 
     .WebFormatting = xlWebFormattingNone 
     .WebPreFormattedTextToColumns = True 
     .WebConsecutiveDelimitersAsOne = True 
     .WebSingleBlockTextImport = False 
     .WebDisableDateRecognition = False 
     .WebDisableRedirections = False 
     .Refresh BackgroundQuery:=False 
    End With 
End Sub 
1
Function ImportXML(url As String, query As String) 

    Dim document As MSXML2.DOMDocument60 
    Dim http  As New MSXML2.XMLHTTP60 

    http.Open "GET", url, False 
    http.send 

    Set document = http.responseXML 

    ImportXML = document.SelectSingleNode(query).nodeTypedValue 

End Function 
+0

위대한 문서 중 하나입니다. 실제로 Google 시트 변형의 Excel 버전으로 사용할 수 있습니다 ... – AlexT82

4

...

엑셀 2013으로는,이 XML 문서를로드하는 함수 WEBSERVICE이 원하는대로 정확하게 처리 할 수 ​​있습니다.

XPath를 사용하여로드 된 XML 문서를 검색하는 FILTERXML도 있습니다.

관련 문제