Board logo

標題: [發問] 如何更改網頁中的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,是可以改到「報表類型」成年報,但資料沒有更新。
  1. Sub getData()
  2.     Dim URL As String, A As Object, B As Object, i As Integer
  3.     URL = "http://stock.finance.sina.com.cn/hkstock/finance/00001.html"
  4.     With CreateObject("InternetExplorer.Application")
  5.         .Visible = True     '  是否顯示 IE
  6.         .Navigate URL
  7.         Do While .readyState <> 4
  8.             DoEvents
  9.         Loop
  10.         Set A = .document.getelementsbytagname("SELECT")
  11.         A.Item(1).Value = "zero"    '年報
  12.         Cells(1, 1) = .document.body.innerhtml
  13.         .Quit
  14.     End With
  15. End Sub
複製代碼
但假如我在「Set A = .document.getelementsbytagname("SELECT")」這句暫停程式,手動更改「報表類型」,結果是可以拿到八年結果。請問各位大大可以指教我嗎?謝謝大家。

另外,我找到方法可以用excel內置功能把簡體轉繁體,但是這功能要我先儲存WORKBOOK或手動確定「轉換時未儲存」,為了能夠批次執行,所以我加上了thisworkbook.save這句,請問除了這方法外,有沒有不用儲存、不用確認的轉換方法?謝謝大家。
  1.     Set ConvertObj = Application.COMAddIns("TCSCConv.SharedAddin.14").Object
  2. thisworkbook.save
  3.     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有點問題:
  1. Sub Ex()
  2.     Dim my_url As String, A As Object
  3.     my_url = "http://stock.finance.sina.com.cn/hkstock/finance/00001.html"
  4.     With CreateObject("InternetExplorer.Application")
  5.         .Visible = True
  6.         .Navigate my_url
  7.         Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  8.         Set A = .document.getElementsByTAGName("SELECT")
  9.         A.Item(1).Value = "zero"    '年報
  10.         A.fireEvent ("onchange")
  11.         Cells(1, 1) = A.document.body.innerhtml
  12.    End With
  13. 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/)