安排MS Access Module

时间:2016-12-01 12:25:03

标签: vba ms-access scheduled-tasks

是否可以在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 个答案:

答案 0 :(得分:4)

2解决方案

表单计时器

此解决方案要求您始终打开Access应用程序。

创建表单

在表单事件中:

  • 将定时器间隔设置为60000

  • 制作On Timer程序,在其中调用模块的子

表格应该打开以触发计时器。当应用程序以选项/当前数据库/显示形式

启动时,您可以将其打开

Windows计划任务

我认为此解决方案更好,因为它不需要MS访问应用程序运行。

在Access应用程序中:

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

  2. 在设计视图中打开宏并添加 RunCode 类型的新操作,在功能名称下添加模块的主要子功能。

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

  4. 在Windows中:

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

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

      start "" "C:\pathToTheApplication\MSAccessAppName.accdb"
      Exit
      
    3. 在Windows任务计划程序(开始菜单并搜索任务计划程序)中创建一个任务,该任务将在您需要时触发批处理文件。谷歌如何做到这一点或只是看here一些想法

答案 1 :(得分:0)

使用Windows任务计划程序打开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后,您可以控制其他事件。

打开

在加载之前打开并允许您取消,因此它不会打开。它还允许访问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