2013-02-22 131 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

相关问题