Auto Open用于使用VBA执行另一个宏

时间:2013-02-22 14:23:09

标签: excel excel-vba scheduled-tasks vba

我有一本名为Can Opener的excel书,由我的任务调度程序打开。它在我的任务调度程序无法访问的共享驱动器上打开另一个工作簿,然后自行关闭.. Can Opener工作正常。我遇到的问题是,其他工作簿的代码在打开时,如果是7pm系统时间执行更新宏以从服务器获取新数据。完成此操作后,文件将保存并关闭。数据工作簿打开,但不进行更新,并且不会自动保存和关闭。我已经打破了代码,所以它至少会更新,这也不起作用。我检查了几个论坛和其他位置,我仍然无法弄清楚问题是什么。我能得到一点帮助吗?

    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点尝试运行此代码。

我真的很感谢能得到帮助的人。

1 个答案:

答案 0 :(得分: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对象中的test_data.xlsm--

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