- 帖子
- 23
- 主題
- 0
- 精華
- 0
- 積分
- 73
- 點名
- 125
- 作業系統
- XP
- 軟體版本
- Office 2003
- 閱讀權限
- 20
- 註冊時間
- 2012-4-21
- 最後登錄
- 2025-5-20
           
|
50#
發表於 2015-7-27 13:41
| 只看該作者
回復 46# lcctno
是這樣嗎- Option Explicit
- Sub Ex()
- Dim E As Object, AR(), i As Integer, o As Object, k As Integer
- AR = Array("http://www.yuantaetfs.com/#/RtNav/Index", "http://www.yuantaetfs.com/#/Home/Index")
- 'Ar = Array(網址:即時淨值,網址:國內指數) 網址置入陣列
- ActiveSheet.UsedRange.Clear
- For i = 0 To 1
- With CreateObject("InternetExplorer.Application")
- .Visible = True
- .Navigate AR(i)
- Do While .Busy Or .readyState <> 4: DoEvents: Loop
- If i = 0 Then '國內指數:不需按下同意鍵
- Do
- Set E = .Document.getElementByid("Agree")
- Loop Until Not E Is Nothing
- E.Click
- End If
- Do
- Do
- Set E = .Document.getElementsByTagName("TABLE")(21 + i)
- '即時淨值 第21個 "TABLE" ,'國內指數 第22個 "TABLE"
- Loop Until Not E Is Nothing
- 'Loop Until E.all.Length >= IIf(i = 0, 431, 150) '
- Loop Until InStr(1, E.outerHTML, IIf(i = 0, "00638R", "電子類加權股價指數")) '改用相關字串確認是否有資料
-
- '刪除▲ ▼ 符號並加上數字負號顯示
- If 0 = i Then
- For Each o In E.getElementsByClassName("ng-binding upcolor")
- If InStr(1, o.innerText, "▲ ▼") Then
- o.innerHTML = Mid(o.innerText, 5)
- End If
- Next
- For Each o In E.getElementsByClassName("ng-binding downcolor")
- If InStr(1, o.innerText, "▲ ▼") Then
- o.innerHTML = "-" & Mid(o.innerText, 5)
- Else
- o.innerHTML = "-" & o.innerText
- End If
- Next
- Else
- '將指數漲跌及漲跌幅%字串分開並加上負號顯示
- For Each o In E.getElementsByClassName("ChangesText2 upcolor")
- k = InStr(1, o.innerText, "(")
- If 0 < k Then
- o.outerHTML = "<td>" & Mid(o.innerText, 1, k - 1) & "</td><td>" & Replace(Mid(o.innerText, k + 1), ")", "</td>")
- End If
- Next
- For Each o In E.getElementsByClassName("ChangesText2 downcolor")
- k = InStr(1, o.innerText, "(")
- If 0 < k Then
- o.outerHTML = "<td>-" & Mid(o.innerText, 1, k - 1) & "</td><td>-" & Replace(Mid(o.innerText, k + 1), ")", "</td>")
- End If
- Next
- End If
- .Document.body.innerHTML = Replace(E.outerHTML, "<span class=""ng-hide"" ng-show=""o.price == 0"">0</span>", "") ' 去除 [折溢價] 數字後面多餘的0
- '.Document.body.innerHTML = E.outerHTML
- 'Stop
- .ExecWB 17, 2 ' Select All
- .ExecWB 12, 2 ' Copy selection
- With ActiveSheet
- .Range("A" & IIf(i = 0, 1, 27)).Select
- .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
- With .Range(IIf(i = 0, "D16:D17", "C27:C28")).Interior
- .ColorIndex = 35
- .Pattern = xlSolid
- End With
- End With
- .Quit '關閉網頁
- End With
- Next
- End Sub
複製代碼 |
|