繁体   English   中英

计划MS Access模块

[英]Schedule MS Access Module

MS Access计划模块内部是否有可能每天在特定时间运行? 如果不可能的话,安排每天在MS Access中运行模块的最佳和最简便的方法是什么?

脚本用于将表格从MS Access导出到xls文件,如下所示

 Dim outputFileName As String
 outputFileName = CurrentProject.Path & "\Export_" & Format(Date, "yyyyMMdd") & ".xls"
 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "bolnickiracun", outputFileName, True

2解决方案


表单计时器

此解决方案要求您始终让Access Application打开。

建立表格

在表单事件中:

  • 将计时器间隔设置为60000

  • 进行一个On Timer过程,在其中调用模块的子模块

该表格应打开以触发计时器。 您可以在选项/当前数据库/显示表单中启动应用程序时将其打开


Windows计划任务

我认为这种解决方案更好,因为它不需要运行MS Access应用程序。

在Access应用程序中:

  1. 创建一个新的宏并将其命名为“ AutoExec”,以便在应用程序启动时将被触发。

  2. 在设计视图中打开宏,然后添加一个RunCode类型的新操作,在Function Name下,添加模块的主要子或函数。

  3. 在模块的子代码末尾添加此代码,以在执行代码后关闭MS Access应用程序: docmd.Quit

在Windows中:

  1. 在任何地方创建批处理文件(名为anything.bat新文件)

  2. 编辑您的批处理文件并将此代码添加到其中(当然,相应地,请输入适应路径/ accdb名称)

     start "" "C:\\pathToTheApplication\\MSAccessAppName.accdb" Exit 
  3. 在Windows Task Scheduler(开始菜单并搜索Task Scheduler )中创建一个任务,该任务将在需要时触发批处理文件。 Google如何做到这一点,或者只是在这里寻找一些想法

使用Windows Task Scheduler打开Access。

http://www.sevenforums.com/tutorials/11949-elevated-program-shortcut-without-uac-prompt-create.html

dim accessApp
set accessApp = createObject("Access.Application")
accessApp.visible = true

accessApp.UserControl = true

accessApp.OpenCurrentDataBase("C:\path.accdb")
accessApp.Run "myLinker"

同样,一旦通过任务计划程序打开Access,您就可以控制其他事件。

打开

打开发生在Load之前,允许您取消使其不打开。 它还允许访问OpenArgs。 如果您的表单需要用户输入,这将很有帮助。 如果未提供,则可以取消Form.Open或提示用户输入所需的值。

Private Sub Form_Open(Cancel As Integer)
     If "" & OpenArgs = "" Then
         Cancel = True
         Msgbox "Open Arguments are required"
     End If 
End Sub

加载

加载发生在Open之后,并且缺少Open提供的任何控件。

Private Sub Form_Load()
    Me.Caption = Date
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM