ADO在vba(vbs)中:查询插入INTO文本文件不起作用,锁定文件

时间:2016-04-11 09:11:50

标签: vba excel-vba vbscript ado excel

我正在尝试查询文本文件,csv文件并将查询结果返回给文本文件。我尝试了这个看起来很有前途的apporoach https://stackoverflow.com/a/581638/3480717,将数据直接从SQL命令返回到文件,跳过创建记录集。 提示它可能是,我无法使它工作,这是我的版本:

Sub test()

Dim db: db = "C:\Databases\"
Dim exportFile: exportFile = "C:\Databases1\Exp.txt"


Dim cn: Set cn = CreateObject("ADODB.Connection")

cn.Open _
    "Provider = Microsoft.ACE.OLEDB.12.0;" & _
          "Data Source=" & db & ";" & _
          "Extended Properties=""text;HDR=YES;FMT=Delimited(,)"""


cn.Execute "SELECT [Surname INTO [text;HDR=Yes;Database=" & exportDirFile & _
   ";CharacterSet=65001]  FROM PhoneList.csv"

cn.Close

End Sub

PhoneList.csv - 我的数据是带有Surname,Name和PhoneNumber的三列文件。对于测试,我试图提取PhoneNumber列。

代码在cn.Execute

上停止

我收到错误消息说"无法更新。数据库或对象是只读的。

我在做什么(非常)错了?我可以访问文件/可以打开并保存它们。似乎问题出在其他地方。

VBS的外观如何? (代码不需要Excel来可视化任何东西)。

非常感谢您的评论。

1 个答案:

答案 0 :(得分:0)

  1. 我成功了以下(在VBA和VBS中):

    Dim db:db =" C:\ Users \ jkotows2 \ Desktop \ sql_script \"

    Dim cn:设置cn = CreateObject(" ADODB.Connection")

    cn.Open _     "提供商= Microsoft.ACE.OLEDB.15.0;" &安培; _           "数据源=" &安培; db& &#34 ;;" &安培; _           "扩展属性=""文本; HDR = YES; FMT =定界(;)"""

    cn.Execute" INSERT INTO [exp.csv] SELECT [Surname],[Name],[No] FROM [PhoneList.csv]"

  2. cn.Close

    1. 我必须确保脚本以32位模式执行(显然我的系统是64位,Office是32位)。
    2. 我必须创建一个Schema.ini文件,其中包含对参与查询的表的描述。
相关问题