標題:
[發問]
如何更改網頁中的OPTION作取得資料和轉換繁體中文問題
[打印本頁]
作者:
小俠客
時間:
2015-7-10 10:31
標題:
如何更改網頁中的OPTION作取得資料和轉換繁體中文問題
本帖最後由 小俠客 於 2015-7-10 10:33 編輯
大家好,我打算到SINA CN的網站取得財務資料:
http://stock.finance.sina.com.cn/hkstock/finance/00001.html
當中的資料已經排好,算是很好取得。但這網站的「報表類型」預設是「全部」,所以會同時顯示年報和中報資料,因為欄位所限(8個),只會顯示近四年的資料。如果把「報表類型」改成「年報」,我便可以取得近八年的資料。由放要更改網頁的SELECT OPTION,所以不能用QueryTables的方法。
我嘗試用以下CODING,是可以改到「報表類型」成年報,但資料沒有更新。
Sub getData()
Dim URL As String, A As Object, B As Object, i As Integer
URL = "http://stock.finance.sina.com.cn/hkstock/finance/00001.html"
With CreateObject("InternetExplorer.Application")
.Visible = True ' 是否顯示 IE
.Navigate URL
Do While .readyState <> 4
DoEvents
Loop
Set A = .document.getelementsbytagname("SELECT")
A.Item(1).Value = "zero" '年報
Cells(1, 1) = .document.body.innerhtml
.Quit
End With
End Sub
複製代碼
但假如我在「Set A = .document.getelementsbytagname("SELECT")」這句暫停程式,手動更改「報表類型」,結果是可以拿到八年結果。請問各位大大可以指教我嗎?謝謝大家。
另外,我找到方法可以用excel內置功能把簡體轉繁體,但是這功能要我先儲存WORKBOOK或手動確定「轉換時未儲存」,為了能夠批次執行,所以我加上了thisworkbook.save這句,請問除了這方法外,有沒有不用儲存、不用確認的轉換方法?謝謝大家。
Set ConvertObj = Application.COMAddIns("TCSCConv.SharedAddin.14").Object
thisworkbook.save
ConvertObj.DoSC2TC
複製代碼
作者:
jackyq
時間:
2015-7-10 15:17
簡繁轉換增益集
http://www.microsoft.com/zh-tw/download/details.aspx?id=18514
作者:
GBKEE
時間:
2015-7-11 06:00
回復
1#
小俠客
可參考這裡
作者:
小俠客
時間:
2015-7-13 09:08
回復
2#
jackyq
謝謝你,可是這個是FOR EXCEL 2003 ONLY,我現在是用EXCEL 2010,能夠使用嗎?
作者:
小俠客
時間:
2015-7-13 09:09
回復
3#
GBKEE
謝謝版大,沒有留意之前有類似的發問,我先研究,看看能否解決。
作者:
jackyq
時間:
2015-7-13 09:45
我沒有 2010
你可以試裝看看
如果可以裝卻看不見按鈕
https://support.microsoft.com/zh-tw/kb/2459493/zh-tw
作者:
小俠客
時間:
2015-7-13 10:29
回復
6#
jackyq
其實EXCEL 2010有內置的繁簡轉換功能,上面的代碼也是引用內置功能作轉換,可惜使用這功能時會提示用家文件未儲存,作LOOPING時有點麻煩。
由於我用的是公司電腦,要回家作能安裝附件,我回家試試吧,先謝謝你的幫忙。
作者:
小俠客
時間:
2015-7-13 10:33
回復
3#
GBKEE
GEKEE大,我公司電腦是用WIN 7 和IE 8 ,使用你介紹的POST中的CODING有點問題:
Sub Ex()
Dim my_url As String, A As Object
my_url = "http://stock.finance.sina.com.cn/hkstock/finance/00001.html"
With CreateObject("InternetExplorer.Application")
.Visible = True
.Navigate my_url
Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
Set A = .document.getElementsByTAGName("SELECT")
A.Item(1).Value = "zero" '年報
A.fireEvent ("onchange")
Cells(1, 1) = A.document.body.innerhtml
End With
End Sub
複製代碼
我用你的CODE改了網址,在執行「A.fireEvent ("onchange")」這句出現問題,是網站的設計問題嗎?
作者:
GBKEE
時間:
2015-7-13 10:51
回復
8#
小俠客
A.fireEvent ("onchange") 不行.
那裡還有討論再看看試試.
作者:
小俠客
時間:
2015-7-13 11:26
本帖最後由 小俠客 於 2015-7-13 11:35 編輯
回復
9#
GBKEE
對不起,fireEvent是沒問題,我修改了便可以了,謝謝GEKEE大大。
另外,簡繁轉換有沒有其他簡單解決方法?
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)