Board logo

標題: 將資料改為觸發型式 [打印本頁]

作者: wl02353427    時間: 2013-12-1 17:37     標題: 將資料改為觸發型式

本帖最後由 wl02353427 於 2013-12-1 17:38 編輯

我想將擷取資料改為觸發式或在設定期間內執行擷取,就是以一個控制器來啟動和停止,可是改來改去一直失敗...目前只會一直抓...然後得自己進入vba按停止...可否有大大可以幫幫忙
作者: Hsieh    時間: 2013-12-2 15:09

回復 1# wl02353427
  1. Public NameOfThisProcedure
  2. Public NextTime
  3. Sub Stop_Update()
  4. Yn = MsgBox("確定停止" & NameOfThisProcedure & "程序" & Chr(10) & NextTime & "的更新?", vbYesNo)
  5. If Yn = 6 Then Application.OnTime EarliestTime:=NextTime, Procedure:=NameOfThisProcedure, schedule:=False
  6. End Sub
  7. Sub Awesome()
  8. '****************************截取資料並記錄****************************'
  9.     Dim SG As SparklineGroup
  10.     Dim SL As Sparkline
  11.     Dim WSD As Worksheet
  12.     Dim WSL As Worksheet
  13.     Dim WSQ As Worksheet
  14.     Set WSQ = Worksheets("工作表1")
  15.    
  16.     hiji = Now()
  17.    
  18.     WaitSec = 30 '延遲時間
  19.     NameOfThisProcedure = "Awesome"
  20.    

  21.     NextTime = Now + TimeSerial(0, 0, WaitSec) ' 延遲
  22.    
  23.     Application.OnTime EarliestTime:=NextTime, Procedure:=NameOfThisProcedure ' 利用OnTime指令排定 Awesome 的執行時間
  24.    
  25.     WSQ.Range("B3").QueryTable.Refresh BackgroundQuery:=False '重新整理web查詢
  26.    
  27.     Application.Wait (Now + TimeValue("0:00:05")) ' 確認資料更新

  28.     NextRow = WSQ.Cells(Rows.Count, 2).End(xlUp).Row + 1
  29.     WSQ.Range("B3:K3").Copy WSQ.Cells(NextRow, 2)
  30.    
  31. '**********************************************************************'

  32. On Error Resume Next
  33.    Application.DisplayAlerts = False
  34.    Worksheets("工作表2").Delete
  35. On Error GoTo 0

  36. Set WSD = Worksheets("工作表1") ' 資料讀取
  37. Set WSL = ActiveWorkbook.Worksheets.Add ' 儀錶板輸出
  38.     WSL.Name = "工作表2"

  39. WSL.Select

  40. '***儀錶板大小***'
  41. With WSL.Range("B2")
  42.     .ColumnWidth = 100 ' 高度
  43.     .RowHeight = 100  ' 寬度
  44. End With

  45. '****標題名稱****'
  46. With WSL.Range("B1")
  47.     .Value = Array("張數")
  48.     .HorizontalAlignment = xlCenter
  49.     .ColumnWidth = 39
  50.     .Offset(1, 0).RowHeight = 200
  51. End With

  52. Set SG = WSL.Range("B2").SparklineGroups.Add(Type:=xlSparkLine, SourceData:="工作表1!G8:G" & NextRow)
  53.     SG.SeriesColor.Color = RGB(0, 0, 255) ' 線條顏色

  54. Set SL = SG.Item(1)

  55. '***背景顏色***'
  56. With WSL.Range("B2").Interior
  57.     .Color = RGB(255, 255, 255)
  58.     .TintAndShade = 0
  59. End With
  60.    
  61. Set SL = SG.Item(1)

  62. '***最大最小值***'
  63. Set AF = Application.WorksheetFunction
  64.     AllMin = AF.Min(WSD.Range("G8:G65536")) ' 指定區域中選出最小值
  65.     AllMax = AF.Max(WSD.Range("G8:G65536"))
  66.     AllMin = Int(AllMin) - AllMin ' 整數設定
  67.     AllMax = Int(AllMax)

  68. With SG.Axes.Vertical
  69.     .MinScaleType = xlSparkScaleCustom
  70.     .MaxScaleType = xlSparkScaleCustom
  71.     .CustomMinScaleValue = AllMin
  72.     .CustomMaxScaleValue = AllMax
  73. End With

  74. '***[A2]上下間距***'
  75. With WSL.Range("A2")
  76.      .Value = AllMax & vbLf & vbLf & vbLf & vbLf _
  77.             & vbLf & vbLf & vbLf & vbLf & vbLf & vbLf & vbLf & vbLf & vbLf & vbLf & vbLf & vbLf & vbLf & vbLf & AllMin
  78.      .HorizontalAlignment = xlRight
  79.      .VerticalAlignment = xlTop
  80.      .Font.Size = 8
  81.      .Font.Bold = True
  82.      .WrapText = True
  83.     End With

  84. '***其他設定***'
  85. Worksheets("工作表2").Range("B3") = "更新日期 : " & hiji

  86. Number = WSD.Range("G8:G" & NextRow).Count
  87. Worksheets("工作表1").Range("M2") = "資料筆數 :"
  88. Worksheets("工作表1").Range("N2") = Number

  89. Workbooks(1).Save

  90. Set WSQ = Nothing
  91. Set QSL = Nothing

  92. End Sub
複製代碼

作者: wl02353427    時間: 2013-12-4 18:22

回復 2# Hsieh

感謝超級版主:'( 一直嘗試寫一個控制器可是都失敗,萬分感謝。Orz
作者: ML089    時間: 2013-12-4 20:25

回復 2# Hsieh

我的EXCEL是2007版,執行後出現錯誤,不知道還要設定哪些東東

[attach]16962[/attach]
作者: stillfish00    時間: 2013-12-4 23:33

本帖最後由 stillfish00 於 2013-12-4 23:35 編輯

回復 4# ML089
SparklineGroup 是 Excel 2010 新增的物件,估計2007是沒辦法直接用了。
作者: ML089    時間: 2013-12-5 00:23

回復 5# stillfish00

了解! 謝謝你的回覆




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