返回列表 上一主題 發帖

DDE資料抓取,逐格顯示問題

回復 1# jackson184
傳檔來試試

TOP

回復 3# jackson184
如圖 插入一模組 將下列兩程序貼上

  1. Option Explicit             '在模組層次中強迫每個在模組�堛瘍僂くㄔ眸楨�確的宣告。
  2. Dim Rng As Range            ' 通用於模組(Module) 內的私用變數
  3. Private Sub AUTO_OPEN()     '此巨集於檔案開啟時會自動執行
  4.     With Sheets("90")
  5.         .UsedRange.Offset(1).Clear                '清除 前一日的數據
  6.         Set Rng = .Range("A2:A31,F2:F31,K2:K31")  '數據傳回的區域,為多重範圍.
  7.     End With
  8.     If Time < TimeValue("08:45") Then             '早於開盤時間
  9.         Application.OnTime TimeValue("08:45"), "MyDee"    '設定於08:45 執行 MyDee 程序
  10.     ElseIf Time >= TimeValue("08:45") And Time <= TimeValue("13:30") Then '於交易時間內
  11.         MyDee                                     ' 執行 MyDee 程序
  12.     End If
  13. End Sub
  14. Private Sub MyDee()
  15.     Dim A As Integer, Ar(), R As Integer, C As Integer
  16.      If Time > TimeValue("13:30") Then Exit Sub     ' 收盤時間後 停止執行
  17.     A = Application.CountA(Rng)             '計算 (數據傳回的區域)有資料儲存格的總數
  18.     If A <= 29 Then C = A + 1               'C 為  數據傳回的區域的列位
  19.     If A Mod 30 >= 0 Then C = (A Mod 30) + 1
  20.     R = Int(A / 30) + 1                     'R 為多重範圍的第幾個範圍
  21.     With Sheets("連結")
  22.         Ar = Array(Now, A + 1, .Range("I2"), .Range("J2"))
  23.         'Ar 為取得  1. 時間, 2.項次,3.最高價 ,4,最低價  '找不到 ->  收盤價找不到
  24.         'Ar = Array(Now, A + 1, .Range("I2"), .Range("J2"), 收盤價 ) '有收盤價
  25.     End With
  26.     Rng.Areas(R).Cells(C).Resize(1, 4) = Ar
  27.     'Rng.Areas(R).Cells(C).Resize(1, 5) = Ar   '有收盤價
  28.     Application.OnTime Now + TimeValue("00:10"), "MyDee"  '設定 10分後 執行 MyDee 程序
  29. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2011-4-1 16:52 編輯

回復 5# FAlonso
樓主是用看盤軟體的
試試看,可選擇股票,10秒紀錄一次.

股票紀錄.rar (14.88 KB)

TOP

回復 8# jackson184
依圖片在你excel的 vba視窗 插入一模組
回到 論壇  如圖
  按下 「複製代碼」後會顯示 [代碼已複製到剪貼簿] 的信息 ,回到 vba視窗貼上即可





回復 7# FAlonso
If Time > TimeValue("13:30") Then
Exit Sub
End If
'''''''''''''''''''''''''''''''''''''''''
If Time > TimeValue("13:30") Then  Exit Sub
此為簡化 都是可達到一樣的效果

TOP

回復 10# FAlonso
Private Sub MyDee()
    Dim Sh As Worksheet, Rng As Range, 代號 As String
    Static Run_Time As Date            'Static 陳述式宣告的變數,在程式執行期間,會一直保留內容
  ' If Time > TimeValue("13:30") Then Exit Sub     ' 收盤時間後 停止執行
    Set Sh = Sheets("紀錄")
    代號 = Sheets("紀錄").[C1]
    Sh.Activate
    With Sheets("匯入").QueryTables(1)
        .Connection = "URL;http://tw.stock.yahoo.com/q/q?s=" & 代號
       .Refresh False
        If InStr(.ResultRange.Rows(3).Cells(1), 代號) = 0 Then GoTo Refresh_Err:
       Application.EnableEvents = False
        Set Rng = Sh.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, .ResultRange.Columns.Count - 1)
        Rng.Value = .ResultRange.Rows(3).Value
        Application.EnableEvents = True
        Rng.Select
    End With
    Run_Time = Now + TimeValue("00:00:10")
    Application.OnTime Run_Time, "MyDee"  '設定 10秒後 執行 MyDee 程序
    Exit Sub
Refresh_Err:
    On Error Resume Next
    Application.OnTime Run_Time, "MyDee", , False  '清除先前設定的程序
    MsgBox "找不到 " & Sheets("紀錄").[C1] & " 股票"
End Sub

TOP

1 在這網頁查詢股票的代號,InStr(.ResultRange.Rows(3).Cells(1), 代號), 為比對 匯入的資料是否包含股票的代號  當此函數為0 時表示沒有這個股票代號
2 不用static,就是會出現問題...
  不用static,可在模組最上方 Dim Run_Time As Date  設為 模組的私用變數.

TOP

        靜思自在 : 君子立恆志,小人恆立志。
返回列表 上一主題