2013-02-22 68 views
0

我有一個excel書名爲Can Opener由我的任務調度程序打開。它會在我的任務計劃程序無法訪問的共享驅動器上打開另一個工作簿,然後自行關閉.. Can Opener正常工作。我遇到的問題是,其他工作簿的代碼在打開時,如果是晚上7點,系統時間執行更新宏以從服務器獲取新數據。一旦完成,文件保存並關閉。數據工作簿打開,但沒有更新正在發生,並且不會自動保存並關閉。我打破了代碼,所以至少會更新,而且這也不起作用。我檢查了幾個論壇和其他地點,我仍然無法弄清楚問題所在。我可以得到一些幫助嗎?自動打開用於執行與VBA的另一個宏

Sub DataBook_Open() 

Application.EnableCancelKey = xlDisabled 

    If Hour(Now) = 7 And Weekday(Now, vbSunday) < 7 Then 

     Run_Update 

      Me.Save 

      Application.Quit 

    Else: Me.Save 
      Application.Quit 

    End If 



End Sub 

Run_Update是我的模塊中的宏的名稱,僅僅是執行創造與服務器的連接並運行SQL的模塊中的其他宏。這工作正常,如果手動運行,或運行一個按鈕,所以我知道錯誤不在這裏。此外,我正試圖在晚上7點每晚運行此代碼。

我真的很感謝任何幫助,我可以讓傢伙。

+0

此代碼--test_data.xlsm--看起來執行時間上午7系統時間。如果您刪除或註釋掉「If ... Else ... End If」,並且只是讓它「Run_Update Me.Save Application.Quit」會發生什麼情況? – 2013-02-22 14:36:53

+0

@DavidZemens說,下午7點你的小時(現在)應該等於19 – scott 2013-02-22 15:23:25

+0

我昨晚評論說,它仍然沒有執行更新。 – William 2013-02-22 15:56:59

回答

2

你確定DataBook_Open()執行嗎? 它可能不會,除非你從Auto_Open()或Workbook_Open()調用它。

試試這個最小的測試文件。用您的實際文件夾替換路徑。

--can_opener.xlsm--

Sub OpenOtherWorkbook() 

    Dim sWbkPath As String 
    sWbkPath = ThisWorkbook.Path & "\" & "test_data.xlsm" 

    Dim wbkData As Workbook 
    Set wbkData = Workbooks.Open(sWbkPath) 

End Sub 

在ThisWorkbook對象

Private Sub Workbook_Open() 

    If Hour(Now) = 9 Then 'replace with your condition 
     UpdateData 
     ThisWorkbook.Save 
     DoEvents 
    Else 
     DoEvents 
    End If 

    ThisWorkbook.Close 
    'Application.Quit 

End Sub 

Sub UpdateData() 

    ThisWorkbook.Sheets(1).Range("A1").Value = Format(Now, "yyyy-mm-dd:hh\hmm") 

End Sub 
+0

我在我的數據手冊中使用了您的Workbook_Open子部分,現在看來完美工作。我非常感謝幫助 – William 2013-02-22 16:44:00

相關問題