首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于通过VBA执行另一个宏的自动打开

用于通过VBA执行另一个宏的自动打开
EN

Stack Overflow用户
提问于 2013-02-22 22:23:09
回答 1查看 1.3K关注 0票数 0

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

代码语言:javascript
运行
复制
    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点运行这个代码。

我真的很感谢你们能帮我的忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-22 23:00:34

您确定DataBook_Open()会执行吗?除非您从Auto_Open()或Workbook_Open()调用它,否则它可能不会。

尝试这个最小的测试文件。将路径替换为实际的文件夹。

--can_opener.xlsm--

代码语言:javascript
运行
复制
Sub OpenOtherWorkbook()

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

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

End Sub

--test_data.xlsm--在ThisWorkbook对象中

代码语言:javascript
运行
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15026296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档