2012-04-06 27 views
1

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

私はそれが使用できると思ったいくつかのVBAコードを見つけましたが、私が望むものを私に与えるためにそれを実行することはできません。

理想的には、以下の関数をセル(excel 2010内)に置き、xpathコンテンツを取得したいと考えています。 ie:= 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 
+0

この情報を抽出しようとしていますか? Dow-13,060.10、S&P500-1,398.08、Nasdaq-3,080.50' –

+0

no。私は4.76000を抽出しようとしています – macutan

+0

うん、私は '価格'のための '4.76000'を見つけることができません –

答えて

1

あなたはXPath関数を実行するためにNeil Bosma's SEO toolsを使用することができ、Windowsのユーザーである場合。

関連する問題