使用VBScript

时间:2015-11-10 16:05:47

标签: vbscript ms-access-2007

我需要使用VBScript将数据库从DB Access 2007导出到带有 ; 的分隔txt文件。

我的代码如下:

   Set accDB = CreateObject("Access.Application")       
      accDB.visible = true
      accDB.automationsecurity = 1
      accDB.OpenCurrentDatabase("D:\Users\db2015.mdb")        
      accDB.DoCmd.TransferText acExportDelim, ";", "tb2015", "D:\Users\tb2015.txt", False 
      accDB.CloseCurrentDatabase
      accDB.Quit          
   Set accDB = Nothing 

但我有错误:找不到tb2015.txt

我尝试在我的代码中添加:

  accDB.DoCmd.OpenQuery "SelectQuery", acNormal, acEdit
  accDB.DoCmd.OutputTo acOutputTable, "tb2015", "txt", "D:\Users\tb2015.txt"

在这种情况下,我没有错误,但tb2015.txt的分隔符为 | ,而不是 ;

请帮帮我。

提前谢谢。

编辑#1

这是新代码,但我有错误:

   Set accDB = CreateObject("Access.Application")       
      accDB.visible = true
      accDB.automationsecurity = 1
      accDB.OpenCurrentDatabase("D:\Users\db2015.mdb") 
      Const acExportDelim = 2     
      accDB.DoCmd.TransferText acExportDelim, , "tb2015", "D:\Users\tb2015.txt", False 
      accDB.CloseCurrentDatabase
      accDB.Quit          
   Set accDB = Nothing 

编辑#2

解决方案是这段代码:

   Const acExportDelim = 2
   Set accDB = CreateObject("Access.Application")
      accDB.visible = true
      accDB.automationsecurity = 1
      accDB.OpenCurrentDatabase("D:\Users\db2015.mdb")        
      accDB.DoCmd.OpenQuery "myView", acNormal, acEdit  
      accDB.DoCmd.TransferText acExportDelim, "tb2015", "tb2015", "D:\Users\tb2015.txt"
      accDB.CloseCurrentDatabase
      accDB.Quit
   Set accDB = Nothing 

1 个答案:

答案 0 :(得分:0)

这里发生的是:

VBScript不知道acExportDelim,因此它被解释为未知变量,值为0.

DoCmd.TransferText,0 = acImportDelim

的上下文中

因此它尝试导入tb2015.txt,并且您收到“找不到文件”错误。

从Access对象目录中复制Const acExportDelim = 2,并将其添加到您的脚本中。并删除“;” SpecificationName参数。

注意:acOutputTable = 0,这就是你的DoCmd.OutputTo运行(偶然)的原因。

为避免此类错误,请将Option Explicit添加到脚本的顶部,它会强制执行变量声明。