1

私は過去に Google スプレッドシート、特にその importxml() 関数を使用しました。VBA (Excel 2010 用) で関数を作成する方法があるかどうか知りたいです (私は VBA で関数を作成することにあまり精通していません)。これにより、Google 関数をレプリケートして Excel 2010 ファイル内で実行できますか?

使用できると思われる VBA コードをいくつか見つけましたが、それを実行して必要なものを得ることができないようです。

理想的には、セル (Excel 2010 内) に次の関数を配置し、xpath コンテンツを取得したいと考えています。例: =importXML("web url","xpath")

どんなガイダンスでも大歓迎です。

ベストパコ

Option Explicit

Public Sub WaitBrowserQuiet(objIE As InternetExplorer)
Do While objIE.Busy Or objIE.ReadyState <> READYSTATE_COMPLETE
    DoEvents
Loop
End Sub


Public Function getXPathElement(sXPath As String, objElement As HTMLBaseElement) As HTMLBaseElement
Dim sXPathArray() As String

Dim sNodeName As String
Dim sNodeNameIndex As String
Dim sRestOfXPath As String
Dim lNodeIndex As Long
Dim lCount As Long

' Split the xpath statement
sXPathArray = Split(sXPath, "/")
sNodeNameIndex = sXPathArray(1)
If Not InStr(sNodeNameIndex, "[") > 0 Then
    sNodeName = sNodeNameIndex
    lNodeIndex = 1
Else
    sXPathArray = Split(sNodeNameIndex, "[")
    sNodeName = sXPathArray(0)
    lNodeIndex = CLng(Left(sXPathArray(1), Len(sXPathArray(1)) - 1))
End If
sRestOfXPath = Right(sXPath, Len(sXPath) - (Len(sNodeNameIndex) + 1))

Set getXPathElement = Nothing
For lCount = 0 To objElement.childNodes().Length - 1
    If UCase(objElement.childNodes().Item(lCount).nodeName) = UCase(sNodeName) Then
        If lNodeIndex = 1 Then
            If sRestOfXPath = "" Then
                Set getXPathElement = objElement.childNodes().Item(lCount)
            Else
                Set getXPathElement = getXPathElement(sRestOfXPath, objElement.childNodes().Item(lCount))
            End If
        End If
        lNodeIndex = lNodeIndex - 1
    End If
Next lCount
End Function




Private Sub cmdGetQuote_Click()
Dim ie As InternetExplorer
Dim elem As HTMLBaseElement
Dim url As String

url = "http://www.bloomberg.com/quote/MXIBTIIE:IND"

Set ie = New InternetExplorer
ie.Visible = True
ie.Navigate url
WaitBrowserQuiet ie

Set elem = getXPathElement("//span[@class=' price']", ie.Document)
Range("A1").Value = elem.innerText

Set ie = Nothing
End Sub
4

1 に答える 1

1

Windows ユーザーの場合は、Neil Bosma の SEO ツールを使用して Xpath 関数を実行できます。

于 2013-02-05T12:03:31.813 に答える