請問如何用 MSXML2.XMLHTTP 捉 臺灣證券交易所 個股月成交資訊
- 帖子
- 161
- 主題
- 26
- 精華
- 0
- 積分
- 187
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2010
- 閱讀權限
- 20
- 性別
- 男
- 來自
- TW
- 註冊時間
- 2011-1-2
- 最後登錄
- 2022-2-16
|
請問如何用 MSXML2.XMLHTTP 捉 臺灣證券交易所 個股月成交資訊
請問如何用 MSXML2.XMLHTTP 捉
臺灣證券交易所 個股月成交資訊
http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY/STOCK_DAYMAIN.php
的資料
謝謝
例如:
http://social.msdn.microsoft.com/Forums/en-US/bd0ee306-7bb5-4ce4-8341-edd9475f84ad/excel-2007-use-vba-to-download-save-csv-from-url?forum=isvvba |
|
|
|
|
|
|
- 帖子
- 161
- 主題
- 26
- 精華
- 0
- 積分
- 187
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2010
- 閱讀權限
- 20
- 性別
- 男
- 來自
- TW
- 註冊時間
- 2011-1-2
- 最後登錄
- 2022-2-16
|
回復 2# GBKEE
謝謝 G 大
再請問 xml.ResponseBody 可以直接貼在工作表嗎
找了很久都找下到 謝謝 |
|
|
|
|
|
|
- 帖子
- 161
- 主題
- 26
- 精華
- 0
- 積分
- 187
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2010
- 閱讀權限
- 20
- 性別
- 男
- 來自
- TW
- 註冊時間
- 2011-1-2
- 最後登錄
- 2022-2-16
|
回復 4# GBKEE
謝謝 G 大
我要做個股成交量有無暴量,程式可要研究一段時間,再請教 G 大
非常感激 |
|
|
|
|
|
|
- 帖子
- 161
- 主題
- 26
- 精華
- 0
- 積分
- 187
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2010
- 閱讀權限
- 20
- 性別
- 男
- 來自
- TW
- 註冊時間
- 2011-1-2
- 最後登錄
- 2022-2-16
|
回復 4# GBKEE
G 大 您好
我想將工作表1的個股找出出量股 放再工作表2中
是否用太多資源了 出了如下圖的錯誤
為什麼 set CreateObject("InternetExplorer.Application") = Nothing 不可用
請教 G 大如何修改
謝謝- Option Explicit
- Sub Index()
- Dim i As Integer, I2 As Integer
- Dim x, y, XX, YY, ZZ
- Dim k
- Const AA As Integer = 5
- 工作表3.Activate
- '工作表3.Select
- If Int(Split(Date, "/")(2)) < 6 Then '是不過6天運算,不過加上月份
- Application.ScreenUpdating = False
- With 工作表1
- k = 2
- For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
- I2 = .Cells(i, 1).Value
- Debug.Print I2
- Call Ex_2(Split(Date, "/")(0) & Format((Split(Date, "/")(1) - 1), "00"), Split(Date, "/")(0) & Format((Split(Date, "/")(1)), "00"), I2)
-
- y = 工作表3.Range("J" & 工作表3.Rows.Count).End(xlUp).Row - 3 - 1 ' 這月份要用的平均數
- x = AA - y
- YY = 工作表3.Range("J" & 工作表3.Rows.Count).End(xlUp).Row - y
- XX = 工作表3.Range("A" & 工作表3.Rows.Count).End(xlUp).Row - x + 1
- ZZ = (WorksheetFunction.Sum(工作表3.Cells(YY, 11).Resize(y)) + WorksheetFunction.Sum(工作表3.Cells(XX, 2).Resize(x))) / AA
- On Error Resume Next
- If 工作表3.Cells(工作表3.Range("J" & 工作表3.Rows.Count).End(xlUp).Row, 11) > ZZ * 5 Then
- 工作表2.Cells(k, 1).Resize(, 2).Value = .Cells(i, 1).Resize(, 2).Value
- k = k + 1
- Debug.Print k
- End If
-
-
- Next
- End With
- Application.ScreenUpdating = True
- Else
- With 工作表1
- ''''''''未測試
- For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
-
- Call Ex_1(Split(Date, "/")(0) & Format((Split(Date, "/")(1)), "00"), I2)
- Next
- '''''''未測試
- End With
- End If
- End Sub
- Sub Ex_1(SS As String, MM As Integer)
- Dim i As Integer, S As Integer, k As Integer, A As Object, II, j
- ' 工作表3.Select
- With CreateObject("InternetExplorer.Application")
- ' .Visible = True
- .Navigate "http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY/STOCK_DAY_print.php?genpage=genpage/Report" & SS & "/" & SS & "_F3_1_8_" & MM & ".php&type=list"
- Do While .Busy Or .readyState <> 4: DoEvents: Loop
- Ep .document.getElementsByTagName("table")(1).outerHTML
- On Error Resume Next
- .Quit '關閉網頁
- End With
-
- End Sub
- Sub Ex_2(SS As String, SS2 As String, MM As Integer)
- Dim i As Integer, S As Integer, k As Integer, A As Object, II, j
- ' 工作表3.Select
- With CreateObject("InternetExplorer.Application")
- ' .Visible = True
- .Navigate "http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY/STOCK_DAY_print.php?genpage=genpage/Report" & SS & "/" & SS & "_F3_1_8_" & MM & ".php&type=list"
- Do While .Busy Or .readyState <> 4: DoEvents: Loop
- Ep .document.getElementsByTagName("table")(1).outerHTML
- On Error Resume Next
- .Quit '關閉網頁
- End With
- With CreateObject("InternetExplorer.Application")
- ' .Visible = True
- .Navigate "http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY/STOCK_DAY_print.php?genpage=genpage/Report" & SS2 & "/" & SS2 & "_F3_1_8_" & MM & ".php&type=list"
- Do While .Busy Or .readyState <> 4: DoEvents: Loop
- Ep2 .document.getElementsByTagName("table")(1).outerHTML
- On Error Resume Next
- .Quit '關閉網頁
- End With
- End Sub
- Sub Ep(S As String)
- Dim D As New DataObject
- 'DataObject 物件 在進行轉換動作時,做為格式化文字資料的暫存區域。其也可以暫存和儲存在 DataObject 的文字片段相關的格式。
- '宣告 Dim D As New DataObject '須在工具-> 設定引用項目加入 新增引用 Microsoft Forms 2.0 Object Library ,或於專案 加入一表單即可
- With D
- .SetText S
- .PutInClipboard
- With ActiveSheet
- .UsedRange.Clear
- .Range("a1").Select
- .PasteSpecial Format:="Unicode 文字"
- End With
- End With
- End Sub
- Sub Ep2(S As String)
- Dim D As New DataObject
- 'DataObject 物件 在進行轉換動作時,做為格式化文字資料的暫存區域。其也可以暫存和儲存在 DataObject 的文字片段相關的格式。
- '宣告 Dim D As New DataObject '須在工具-> 設定引用項目加入 新增引用 Microsoft Forms 2.0 Object Library ,或於專案 加入一表單即可
- With D
- .SetText S
- .PutInClipboard
- With ActiveSheet
- ' .UsedRange.Clear
- .Range("j1").Select
- .PasteSpecial Format:="Unicode 文字"
- End With
- End With
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 161
- 主題
- 26
- 精華
- 0
- 積分
- 187
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2010
- 閱讀權限
- 20
- 性別
- 男
- 來自
- TW
- 註冊時間
- 2011-1-2
- 最後登錄
- 2022-2-16
|
本帖最後由 wufonna 於 2014-10-4 11:39 編輯
回復 7# GBKEE
G 大大 您好
我改了程式 執行了如下錯誤
請問如何改進 謝謝- Option Explicit
- Dim IE As Object '宣告為這模組的私用變數(這模組中的程序可呼叫的變數)
- Sub Index()
- Dim i As Integer, I2 As Integer
- Dim x, y, XX, YY, ZZ
- Dim k
- Set IE = CreateObject("InternetExplorer.Application")
- Const AA As Integer = 5
- 工作表3.Activate
- '工作表3.Select
- If Int(Split(Date, "/")(2)) < 6 Then '是不過6天運算,不過加上月份
- Application.ScreenUpdating = False
- With 工作表1
- k = 2
- For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
- I2 = .Cells(i, 1).Value
- Debug.Print I2
- Call Ex_2(Split(Date, "/")(0) & Format((Split(Date, "/")(1) - 1), "00"), Split(Date, "/")(0) & Format((Split(Date, "/")(1)), "00"), I2)
-
- y = 工作表3.Range("J" & 工作表3.Rows.Count).End(xlUp).Row - 3 - 1 ' 這月份要用的平均數
- x = AA - y
- YY = 工作表3.Range("J" & 工作表3.Rows.Count).End(xlUp).Row - y
- XX = 工作表3.Range("A" & 工作表3.Rows.Count).End(xlUp).Row - x + 1
- ZZ = (WorksheetFunction.Sum(工作表3.Cells(YY, 11).Resize(y)) + WorksheetFunction.Sum(工作表3.Cells(XX, 2).Resize(x))) / AA
- On Error Resume Next
- If 工作表3.Cells(工作表3.Range("J" & 工作表3.Rows.Count).End(xlUp).Row, 11) > ZZ * 5 Then
- 工作表2.Cells(k, 1).Resize(, 2).Value = .Cells(i, 1).Resize(, 2).Value
- k = k + 1
- Debug.Print k
- End If
-
-
- Next
- End With
- Application.ScreenUpdating = True
- Else
- With 工作表1
- ''''''''未測試
- For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
-
- Call Ex_1(Split(Date, "/")(0) & Format((Split(Date, "/")(1)), "00"), I2)
- Next
- '''''''未測試
- End With
- End If
- IE.Quit '在Sub Index() 程式結束前關閉網頁
- End Sub
- Sub Ex_1(SS As String, MM As Integer)
- Dim i As Integer, S As Integer, k As Integer, A As Object, II, j
- ' 工作表3.Select
- With IE
- ' .Visible = True
- .Navigate "http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY/STOCK_DAY_print.php?genpage=genpage/Report" & SS & "/" & SS & "_F3_1_8_" & MM & ".php&type=list"
- Do While .Busy Or .readyState <> 4: DoEvents: Loop
- Ep .document.getElementsByTagName("table")(1).outerHTML
- On Error Resume Next
- .Quit '關閉網頁
- End With
-
- End Sub
- Sub Ex_2(SS As String, SS2 As String, MM As Integer)
- Dim i As Integer, S As Integer, k As Integer, A As Object, II, j
- ' 工作表3.Select
- With IE
- ' .Visible = True
- .Navigate "http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY/STOCK_DAY_print.php?genpage=genpage/Report" & SS & "/" & SS & "_F3_1_8_" & MM & ".php&type=list"
- Do While .Busy Or .readyState <> 4: DoEvents: Loop
- Ep .document.getElementsByTagName("table")(1).outerHTML
- ' On Error Resume Next
- .Quit '關閉網頁
- End With
- With IE
- ' .Visible = True
- .Navigate "http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY/STOCK_DAY_print.php?genpage=genpage/Report" & SS2 & "/" & SS2 & "_F3_1_8_" & MM & ".php&type=list"
- Do While .Busy Or .readyState <> 4: DoEvents: Loop
- Ep2 .document.getElementsByTagName("table")(1).outerHTML
- ' On Error Resume Next
- .Quit '關閉網頁
- End With
- End Sub
- Sub Ep(S As String)
- Dim D As New DataObject
- 'DataObject 物件 在進行轉換動作時,做為格式化文字資料的暫存區域。其也可以暫存和儲存在 DataObject 的文字片段相關的格式。
- '宣告 Dim D As New DataObject '須在工具-> 設定引用項目加入 新增引用 Microsoft Forms 2.0 Object Library ,或於專案 加入一表單即可
- With D
- .SetText S
- .PutInClipboard
- With ActiveSheet
- .UsedRange.Clear
- .Range("a1").Select
- .PasteSpecial Format:="Unicode 文字"
- End With
- End With
- End Sub
- Sub Ep2(S As String)
- Dim D As New DataObject
- 'DataObject 物件 在進行轉換動作時,做為格式化文字資料的暫存區域。其也可以暫存和儲存在 DataObject 的文字片段相關的格式。
- '宣告 Dim D As New DataObject '須在工具-> 設定引用項目加入 新增引用 Microsoft Forms 2.0 Object Library ,或於專案 加入一表單即可
- With D
- .SetText S
- .PutInClipboard
- With ActiveSheet
- ' .UsedRange.Clear
- .Range("j1").Select
- .PasteSpecial Format:="Unicode 文字"
- End With
- End With
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 161
- 主題
- 26
- 精華
- 0
- 積分
- 187
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2010
- 閱讀權限
- 20
- 性別
- 男
- 來自
- TW
- 註冊時間
- 2011-1-2
- 最後登錄
- 2022-2-16
|
回復 7# GBKEE
謝謝 G 大大
程式如圖的錯誤
我註解了副程式的
' .Quit '關閉網頁
主程式加 Set IE = Nothing
就可了
非常感謝 G 大大
我再改看看 不懂再請教 大大
^_^ |
|
|
|
|
|
|
- 帖子
- 161
- 主題
- 26
- 精華
- 0
- 積分
- 187
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2010
- 閱讀權限
- 20
- 性別
- 男
- 來自
- TW
- 註冊時間
- 2011-1-2
- 最後登錄
- 2022-2-16
|
回復 10# GBKEE
感謝 GBKEE 大大
讓我學到很多知識
謝謝
^_^ |
|
|
|
|
|
|