返回列表 上一主題 發帖

[分享] 關於DDE動態連結問題

Hsieh板大你好
以前我在學校時所教的 一開始必先要開啟DDE的股票軟體
我以日盛為例 所以要先開啟他裡面的一個 Excel DDE 之後再開啟 EXCEL 才能啟動

然後我們會在EXCEL 一開啟時 check 是否連線成功

之後再寫入下面程式

Sub 載入日盛DDE()
  With ThisWorkbook.Worksheets("外部資料")
    .Cells.Clear
    '寫入時間
    .Range("B1").Formula = "=DDEEXCEL|FUTURETXF" & NearMonth & NearYear & "!時間"
  end  with

至於DDEEXCEL|FUTURETXF" & NearMonth & NearYear & "!時間 是看個DDE軟體定義的
以日盛為例 當開啟EXCEL DDE 把他拖曳到 EXCEL上時 就會出現上面  之後裡面的年月再設變數

如此 至於要擷取他變動的資料 則是使用DDE傳送資料到EXCEL 觸發的calculate 事件特性
去判斷新傳來的值與舊的值是否有相同 如果不相同就記錄

Dim NewVolume As Long
  Dim nRow As Long
  With ThisWorkbook.Worksheets("台指期DDE")
    If IsNumeric(.Range("A1")) = True Then
      NewVolume = .Range("A1")
      If NewVolume <> TXoldVolume Then
        '將即時價差及台指期即時成交價逐行寫入各欄
        With ThisWorkbook.Worksheets("繪圖資料")
          nRow = .Range("B65536").End(xlUp).Row
          If nRow = 1 And .Range("B1") = "" Then
            .Cells(1, 1) = Time
            .Cells(1, 2) = ThisWorkbook.Worksheets("外部資料").Range("C3") '台指期價格
            With ThisWorkbook.Worksheets("外部資料")
              If IsNumeric(.Range("C3")) And IsNumeric(.Range("C11")) And _
                 IsNumeric(.Range("C19")) Then
                ThisWorkbook.Worksheets("繪圖資料").Cells(1, 5) = _
                      CalSpread(.Range("C11"), .Range("C19"), .Range("C3")) '目前價差
              End If
            End With
GinBow

TOP

        靜思自在 : 有多少力量就做多少事,不要心存等待,等待才會落空。
返回列表 上一主題