自动化访问2003应用程序

时间:2014-09-12 14:46:33

标签: vba ms-access

我有一个访问应用程序(VBA)(访问2003),它按下4个相应的不同按钮,在特定路径上根据数据库生成4个不同的文本文件。

但这是手动的,我每天都会为文件生成做。

我需要自动化。例如,我的文件应该在任何特定时间自动生成。

其中一个按钮的事件过程如下:

我尝试在VB脚本的帮助下做,但这是错误的。

“无法找到提供商。可能未正确安装”

 Set objAccess = CreateObject("Access.Application") 
 Set conn = CreateObject("ADODB.Connection")
 strConnect = "Provider=Microsoft.JETs.OLEDB.12.0;
 Data Source=E:\Project\test.mdb"
 conn.Open strConnect


 test()

function test()
objAccess.DoCmd.Hourglass True
objAccess.DoCmd.SetWarnings False
objAccess.DoCmd.RunSQL ("INSERT INTO Table1 ( name, FileName, [DateTime] ) SELECT Environ(""UserName"") AS name, ""test.mdb Generate ABCD File"" AS FileName, Format(Now(),""yyyyMMddhhmmss"") AS [DateTime];")
objAccess.DoCmd.OpenQuery ("qry_ABCD")
objAccess.DoCmd.TransferText acExportDelim, "qry_ABCD_Formatted Export Specification", "qry_ABCD_Formatted", "E:\Ouputs\" & Format(Now(), "yyyymmdd") & ".txt", False
objAccess.DoCmd.SetWarnings True
objAccess.DoCmd.Hourglass False
End function

我不知道如何解决这个问题。或者还有其他更好的解决方法。

1 个答案:

答案 0 :(得分:0)

您无需在脚本中设置或创建某些连接字符串。打开Access后,您就可以使用该应用程序中的所有表。事实上,在您的示例中,您创建了一个连接对象,但它并不是真正需要的。

因此,我们假设您要运行的VBA代码为:

Sub MyExport()

  Dim strSQL     As String
  strSQL = "INSERT INTO Table1 ( name, FileName, [DateTime] ) " & _
           "SELECT Environ(""UserName"") AS name, ""test.mdb Generate ABCD File"" AS FileName, " & _
           "Format(Now(),""yyyyMMddhhmmss"") AS [DateTime];"

  CurrentDb.Execute strSQL

  DoCmd.TransferText acExportDelim, "qry_ABCD_Formatted Export Specification", _
                     "qry_ABCD_Formatted", _
                     "E:\Ouputs\" & Format(Now(), "yyyymmdd") & ".txt", _
                     False

End Sub

假设上述代码在STANDARD MS Access VBA代码模块中保存为子(不是函数)。

现在,您的VBS脚本可以像这样调用上面的代码:     昏暗的accessApp      set accessApp = createObject(“Access.Application”)      accessApp.OpenCurrentDataBase(“C:\ some path name \ someMdb.accDB”)

 accessApp.Run "MyExport"
 accessApp.Quit

现在运行上述VBS脚本现在很简单。这样的脚本也应该通过Windows任务调度程序运行良好。如上所示,有一点需要将SQL和代码放在VBS脚本中。你最好让VBA中的子工作,并确保它的工作原理。多次测试,然后然后你就创建了VBS cript来调用那个sub。所以FIRST让日常工作,让它工作WITHOTU任何提示等。您可以通过将光标放在该例程中的VBA编辑器中调用并测试VBA子,然后按F5运行子。一旦你按照你想要的方式工作,那么你使用上面的第二个VBS(不是VBA脚本来调用+运行那个你现在100%的工作子,它确实可以正常运行)