我有一个脚本可以将数据库中的数据下载到一系列CSV文件中。下载后,必须将它们加载到Access数据库进行报告(我使用DoCmd.TransferText,并具有保存的文本导入规范)。每次我运行生成数据并下载到CSV的作业时,我通常需要加载到Access数据库的未填充版本的新副本。有没有办法在批处理脚本中自动执行此操作?
简而言之,我需要能够:
答案 0 :(得分:2)
我认为你可以使用VBScript来做你需要的事情。
将未填充的Access文件复制到时间戳为的新文件中 名字
FileSystemObject.CopyFile“c:\ somefolder \ template.mdb”,“c:\ dest \ new.mdb”
请参阅CopyFile Method。
您可以检查CSV文件夹的Files Collection,确定哪些文件名与目标模式匹配,然后使用每个匹配的文件名运行DoCmd.TransferText。
您将从Access应用程序实例运行DoCmd.TransferText:
Option Explicit
Dim appAccess
Dim strMdb
Const cstrFolder = "c:\dest\"
strMdb = "new.mdb"
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase cstrFolder & strMdb, False
所以,从该实例变量中执行Transfertext:
appAccess.DoCmd.TransferText [your options]
编辑:这对我来说在VBA中创建和测试会更快。所以我想我会使用它而不是VBScript。
在模板MDB的标准模块中创建一个函数SnarfCSV。然后创建一个宏mcrSnarfCSV,其中SnarfCSV函数作为其runcode操作。然后,在将模板MDB复制到新MDB后,使用/x
命令行开关打开新模板以运行宏。
"Path to MSACCESS.EXE" "Path to your db file" /x mcrSnarfCSV