这个Access VBA代码可以由Access宏执行吗?

时间:2013-08-14 12:54:08

标签: ms-access

我已经成功创建了一个VBS文件,Windows任务计划程序可以通过触发Access宏来从我的数据库中导出数据。现在我需要导入 - 大多数步骤都很简单,可以在Access宏中实现,但我需要先重新创建表链接(字段名称和位置经常在源文件中更改,除非我先删除和重新创建链接。) 这是VBA代码 - 我错过了相应的宏动作吗?

'delete and recreate links to Account and Company
Dim db As DAO.Database

' Re-link the CSV Table
Set db = CurrentDb
On Error Resume Next:   db.TableDefs.Delete "Contact":   On Error GoTo 0
db.TableDefs.Refresh
DoCmd.TransferText TransferType:=acLinkDelim, TableName:="Contact", _
    FileName:="c:\db\contact.csv", HasFieldNames:=True
db.TableDefs.Refresh

On Error Resume Next:   db.TableDefs.Delete "Account":   On Error GoTo 0
db.TableDefs.Refresh
DoCmd.TransferText TransferType:=acLinkDelim, TableName:="Account", _
    FileName:="c:\db\account.csv", HasFieldNames:=True
db.TableDefs.Refresh

db.Close
Set db = Nothing

1 个答案:

答案 0 :(得分:1)

是的,您错过的宏观操作称为Run Code

唯一需要注意的是Run Code只能调用VBA函数。因此,您不能只将代码粘贴到宏中。相反,您需要将其放入MS Access模块​​中的VBA函数,如下所示:

Public Function ReCreateTableLinks()

    'delete and recreate links to Account and Company
    Dim db As DAO.Database

    '... paste the rest of your code here

End Function

顺便说一句,你是说你正在使用Windows任务计划程序,它调用一个VBS文件,打开Access数据库并执行宏?

我是否正确理解这一点? 如果是:如果除了打开Access数据库之外什么都不做,则根本不需要VBS文件 您可以直接使用Windows任务计划程序执行Access数据库 如果您命名宏autoexec,它将在Access数据库打开时自动执行。