Board logo

標題: [發問] excel時間觸發事件 [打印本頁]

作者: yeh2010    時間: 2010-5-28 00:25     標題: excel時間觸發事件

想要在某個時間點叫excel去做某件事,但不知要如何寫起.

例如:我想要在每個星期一到星期五的早上9點整,
       將檔案內sheet1活頁簿內A1到C1範圍內的儲存格資料,
       固定每天一筆一筆的分次記錄到sheet2活頁簿內的儲存格,
       謝謝!
作者: Min    時間: 2010-5-28 06:58

windows中 有一個"工作排程" 可以設定幾點啟動...
將您的excel放入"工作排程" 就可以在您設定的時間啟動!

需注意的重點如下:
1.excel 巨集安全性須設定為低 這樣才能順利啟動
2.vba sub需撰寫auto_open... auto_close... 這樣才能自動執行 自動關閉...
3.最後就是將windows工作排程設定好 己可! 可以手動啟動工作排程 來驗證測試設定無誤~
作者: yeh2010    時間: 2010-5-28 23:45

謝謝,了解您的意思,但不是我想要的,我的目的主要是在搜集某一個時間點的資料,
因此我的excel是不會關閉的,只要在excel內設定的時間到了,即開始根據條件做記錄.
作者: Hsieh    時間: 2010-5-28 23:58

回復 3# yeh2010


    試試看Sheet1模組
  1. Private Sub Worksheet_Calculate()
  2. If Weekday(Date, 2) < 6 And Format(Now, "hh:mm:ss") = "09:00:00" Then Sheet2.[A65536].End(xlUp).Offset(1, 0).Resize(, 4) = Array(Date, [A1], [B1], [C1])
  3. End Sub
複製代碼

作者: GBKEE    時間: 2010-5-29 19:03

謝謝,了解您的意思,但不是我想要的,我的目的主要是在搜集某一個時間點的資料,
因此我的excel是不會關閉的, ...
yeh2010 發表於 2010-5-28 23:45

將程序複製到ThisWorkbook 模組 存檔後
重新開啟一次檔案即可
Private Sub Workbook_Open()
    Application.OnTime TimeValue("09:00"), "thisworkbook.mywork"
End Sub
Private Sub MyWork()
    If Weekday(Date, 2) < 6 Then
        With Sheet2.[A65536].End(xlUp).Offset(1)
            .Value = Date
            .Offset(, 1).Resize(, 3) = Sheet1.[A1].Resize(, 3).Value
        End With
    End If
    Application.OnTime TimeValue("09:00"), "thisworkbook.mywork"
End Sub
作者: victorl    時間: 2010-6-4 08:34

【個人經驗】因有可能9:00事件觸發時,同時開了多個Excel files & Activeworkbook並不是此欲執行的檔案而導致執行錯誤問題,因此在Private Sub MyWork()
開始處加一判斷式並指定Activeworkbook就可避免執行錯誤問題了。
For Each wb In Workbooks
    If InStr(wb.Name, "*****") > 0 Then    '*****->Excel檔名
        wb.Activate
        .
        .
        .
    End If
Next




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