2013-01-25 179 views
0

HTML Page Title in Excel VBAExcel VBA獲取網站標題從url

我知道這是相當古老,但我有這個困難。我構建了一個browswer歷史解析器,它可以在我們的用戶計算機(Office)上瀏覽來自Firefox,IE,Safari和Chrome的歷史數據,然後獲取不使用此代碼的頁面的標題。

即使應該隱藏,我也會從IE獲取彈出窗口。你是否想離開這個頁面,下載彈出窗口,安裝這個或那些我必須在他們出現時關閉的ActiveX。

有沒有辦法抑制這些或自動關閉這些從VBA?如果我不這樣做,電腦/ Excel最終會停止工作,因爲我結束了幾個未關閉的IE窗口或錯誤,因爲它不能再打開IE實例。

另外我覺得很不舒服,因爲知道IE正在打開我什麼都不知道的網站。我們在這個辦公室感染的病例比以往任何時候都要多。我們必須使用IE來運行公司軟件。

有沒有更好的方法來做到這一點,或者我們只是系統的受害者。我只是覺得,與OOo BASIC相比,MS Office VBA實際上做得很少。至少基本功能明智(redimensioning陣列,FTP支持)。

請爲猴子的愛讓有更好的方法。

我也試過....

Function fgetMetaTitle(ByVal strURL) As String 

Dim stPnt As Long, x As String 
Dim oXH As Object 
'Get URL's HTML Source 
Set oXH = CreateObject("msxml2.xmlhttp") 
With oXH 
    .Open "get", strURL, False 
    .send 
    x = .responseText 
End With 
Set oXH = Nothing 
'Parse HTML Source for Title 
If InStr(1, UCase(x), "<TITLE>") Then 
    stPnt = InStr(1, UCase(x), "<TITLE>") + Len("<TITLE>") 
    fgetMetaTitle = Mid(x, stPnt, InStr(stPnt, UCase(x), "</TITLE>") - stPnt) 
Else 
    fgetMetaTitle = "" 
End If 

End Function 

而這一次.....

Function getMetaDescription(ByVal strURL As String) As String 

'Requires Early Binding Reference to MSHTML Object Library 
Dim html1 As HTMLDocument 
Dim html2 As HTMLDocument 

Set html1 = New HTMLDocument 
Set html2 = html1.createDocumentFromUrl(strURL, "") 

Do Until html2.readyState = "complete": DoEvents: Loop 

getMetaDescription = html2.getElementsByTagName("meta").Item("Description").Content 

Set html2 = Nothing 
Set html1 = Nothing 

End Function 

幽冥工作過。

回答

3

試試這個。在MS Excel 2010中對我很好用

Dim title As String 
Dim objHttp As Object 
Set objHttp = CreateObject("MSXML2.ServerXMLHTTP") 
objHttp.Open "GET", "http://www.google.com/", False 
objHttp.Send "" 

title = objHttp.ResponseText 

If InStr(1, UCase(title), "<TITLE>") Then 
    title = Mid(title, InStr(1, UCase(title), "<TITLE>") + Len("<TITLE>")) 
    title = Mid(title, 1, InStr(1, UCase(title), "</TITLE>") - 1) 
Else 
    title = "" 
End If 

MsgBox title 
+0

+1。注意:如果在代理之後,這種方法可能會遇到一些麻煩,因爲它不會自動使用IE的代理設置。 – mkingston

+0

我添加了代碼來檢查http並添加它,如果需要和presto ...你先生是一個聖人。 –

+0

我遇到了返回的標題中的奇怪字符問題。剝離所有可能的ASCII的好手段? –