Board logo

標題: [發問] 使用陣列代碼帶入股票 [打印本頁]

作者: s13983037    時間: 2014-12-28 19:29     標題: 使用陣列代碼帶入股票

各位前輩 我想要把陣列加入資料 ,讓9946可以帶入我所定義股票列表...
如紅色區塊

9946-->取代成StockArr..

Dim StockArr As variable
StockArr = Array(9946,2330,2317,5522)'等等的股票



Dim E As Object, i As Integer, ii As Integer, k As Integer
    Dim xadte As Date
    xadte = DateAdd("yyyy", -1, Date)  '日期(起):
    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .Navigate "http://www.cnyes.com/twstock/intro/9946.htm"
        Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
        Set E = .document.getElementsByTAGName("TABLE")(4)
        ActiveSheet.UsedRange.Clear
        For i = 0 To E.Rows.Length - 1
            k = k + 1
            For ii = 0 To E.Rows(i).Cells.Length - 1
                Cells(k, ii + 1) = E.Rows(i).Cells(ii).INNERTEXT
            Next
        Next
        .Quit        '關閉網頁
    End With
   
    Dim yadte As Date
    yadte = DateAdd("yyyy", -1, Date)  '日期(起):
    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .Navigate "http://pchome.megatime.com.tw/stock/9946.html"
        Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
        Set E = .document.getElementsByTAGName("TABLE")(4)
        For i = 0 To E.Rows.Length - 1
            k = k + 1
            For ii = 0 To E.Rows(i).Cells.Length - 1
                Cells(k, ii + 1) = E.Rows(i).Cells(ii).INNERTEXT
            Next
        Next
        .Quit        '關閉網頁
    End With
       
       
        Dim R As Range, Rng As Range
    For Each R In ActiveSheet.Range("A:A").SpecialCells(xlCellTypeConstants).Rows
    'ActiveSheet(作用工作表) SpecialCells(xlCellTypeConstants "包含常數的儲存格")
         If Not IsError(Application.Match("相關權證", R, 0)) Then
            '工作表函數Match 尋找到0 傳回數字,找不到0 傳回錯誤值 #N/A
            If Rng Is Nothing Then Set Rng = R Else Set Rng = Union(R, Rng)
            'Union 方法 傳回兩個或多個範圍的合併範圍。
        End If
   Next
   If Not Rng Is Nothing Then Rng.EntireRow.Delete   '範圍整欄刪除
作者: luhpro    時間: 2014-12-29 00:43

回復 1# s13983037
可依下式參照修改 :
  1. Dim StockArr, v
  2. StockArr = Array(9946, 2330, 2317, 5522) '等等的股票
  3. For Each v In StockArr
  4.   Debug.Print "http://www.cnyes.com/twstock/intro/" & v & ".htm"
  5. Next
複製代碼

作者: GBKEE    時間: 2014-12-29 07:22

回復 1# s13983037
試試看
  1. Option Explicit
  2. Private Sub CommandButton1_Click()
  3.     Dim E As Object, i As Integer, ii As Integer, k As Integer
  4.     Dim StockArr(), A As Variant, Sh As Worksheet
  5.     StockArr = Array(9946, 2330, 2317, 5522) '等等的股票
  6.     Set Sh = ActiveSheet
  7.     Sh.UsedRange.Clear
  8.     With CreateObject("InternetExplorer.Application")
  9.         .Visible = True
  10.         k = 1
  11.         For Each A In StockArr
  12.             .Navigate "http://www.cnyes.com/twstock/intro/" & A & ".htm"
  13.             Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  14.             Sh.Cells(k, 1) = Split(.document.Title, "_")(0)  '股票:名稱代號
  15.             Set E = .document.getElementsByTAGName("TABLE")(4)
  16.             For i = 0 To E.Rows.Length - 1
  17.                 k = k + 1
  18.                 For ii = 0 To E.Rows(i).Cells.Length - 1
  19.                     Sh.Cells(k, ii + 1) = E.Rows(i).Cells(ii).INNERTEXT
  20.                 Next
  21.             Next
  22.             '**************************************************************
  23.            .Navigate "http://pchome.megatime.com.tw/stock/sid" & A & ".html"
  24.             Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  25.             Set E = .document.getElementsByTAGName("TABLE")(4)
  26.             For i = 0 To E.Rows.Length - 1
  27.                 k = k + 1
  28.                 For ii = 0 To E.Rows(i).Cells.Length - 1
  29.                     Sh.Cells(k, ii + 1) = E.Rows(i).Cells(ii).INNERTEXT
  30.                 Next
  31.             Next
  32.             k = k + 2
  33.         Next
  34.         .Quit        '關閉網頁
  35.     End With
  36.     With Sh.Range("a:a")
  37.         .Replace "相關權証", "=500/0"   '產生錯誤的公式
  38.         If Not .Find("#DIV/0!", LookIn:=xlValues) Is Nothing Then
  39.             .SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete
  40.         End If
  41.     End With
  42. End Sub
複製代碼

作者: s13983037    時間: 2014-12-29 19:48

回復 3# GBKEE

GBKEE 前輩你好
我想在加上一個陣列表,當儲存格有找到Array的清單就把該ROW刪除..
Array = {漲跌,本益比,同業,平均本益比,總市值,投資報酬率,今年以來,最近一週,最近,一個月}
附上另一個檔案....

再麻煩您了...非常感謝...
作者: GBKEE    時間: 2014-12-30 06:52

回復 4# s13983037

請自行帶入你的程式
  1. '**************************************************************
  2.             .Navigate "http://jsjustweb.jihsun.com.tw/z/zc/zcx/zcx_" & A & ".asp.htm"
  3.             Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  4.             Set E = .document.getElementsByTAGName("TABLE")(12)
  5.             For i = 10 To E.Rows.Length - 1   '*** 挑選你要的資料***
  6.                 k = k + 1
  7.                 For ii = 0 To E.Rows(i).Cells.Length - 1
  8.                 Debug.Print i, E.Rows(i).Cells(ii).INNERTEXT  '可得知你要的資料 在哪一個Rows中
  9.                     Sh.Cells(k, ii + 1) = E.Rows(i).Cells(ii).INNERTEXT
  10.                 Next
  11.             Next
  12.             k = k + 2
  13.         Next
  14.         .Quit        '關閉網頁
  15.     End With
  16.     '/////// 有挑選你要的資料這段的程式碼可以不要了
  17.     With Sh.Range("a:a")
  18.         .Replace "相關權証", "=500/0"   '產生錯誤的公式
  19.         If Not .Find("#DIV/0!", LookIn:=xlValues) Is Nothing Then
  20.             .SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete
  21.         End If
  22.     End With
  23.     '////////////////////////////////////////////////
複製代碼

作者: s13983037    時間: 2014-12-30 19:51

回復 5# GBKEE


    感謝GBKEE大大 !! 我已經加入程式碼中了 感謝您的大力幫忙




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)