【问题标题】:Export dynamic fields from Access to csv (schema.ini?)将动态字段从 Access 导出到 csv (schema.ini?)
【发布时间】:2015-05-12 20:18:53
【问题描述】:

我正在尝试将交叉表查询从 Access 2010 导出到没有文本限定符的 csv。我可以将Transfer Text 方法与我的其他导出一起使用;这个技巧是字段的数量(及其名称)根据用户在表单上选择的内容而变化,但 SpecificationName 中的设置是静态的。如果我没有指明规范名称,我可以适当地获取查询中运行的任何字段,但是我会在我的文本字段周围得到引号,这是我不想要的。如果我设置了一个规范来将文本限定符设置为无,我就会遇到一组字段列表。设置规范时,我尝试在 FieldName 区域添加星号,但得到了

您的导出规范中的字段数与您选择导出的表中的数字不匹配。

我真的很想里面有某种“SELECT *”,但看起来不可能?

四处寻找,看来我可能需要设置一个 schema.ini?当然,这也需要是动态的。我找到了一个为 Access 97 编写的资源:@​​987654321@,但它似乎在 Access 2010 中不起作用。即使将db As Database 更新为db As DAO.Database,我也得到了

预期的变量或过程,而不是模块

在立即窗口中运行以下命令时(插入适当的文本):

?CreateSchemaFile(True,"C:\MyFilepath","ExportFileName.txt","qryCrosstabs")

我已经达到了我(有限)VBA 印章的极限来解决这个问题。为动态 schema.ini 编写脚本似乎只是想摆脱引号,但如果这是必须发生的事情,那么任何指向正确方向的指针都会非常好。

谢谢!

【问题讨论】:

  • 该错误提示您将模块命名为 CreateSchemaFile,与过程名称相同。在这种情况下,将模块重命名为其他名称...例如 modCreateSchemaFile ...并且该特定错误应该消失。不幸的是,在那之后我无法帮助你。
  • @HansUp - 尝试过并得到“错误#:3265 在此集合中找不到项目。”单击“确定”后,“错误”将出现在“立即”窗口中。我在指定目录中没有看到任何新文件。

标签: vba ms-access-2010 export-to-csv


【解决方案1】:

啊,好吧,我想通了。我以为我必须在 Schema.ini 中指定列,但我错了。我只需要将标题设置为 true;这样它就会读取查询中发生的任何事情。将文本分隔符设置为无也是一个关键部分。

这是我在 Schema.ini 中需要的所有内容(只需与导出文件位于同一目录中):

[ExportFileName.txt]
Format=CSVDelimited
ColNameHeader=True
TextDelimiter="none"

还有代码:

Private Sub cmdExport_Click()
    Dim dbs As DAO.Database
    Set dbs = CurrentDb
    dbs.Execute "SELECT * INTO [text;database=C:\filepath].[ExportFileName.txt] FROM qryCrosstabs"

虽然这最终可行,但拥有一个外部 Schema.ini 文件比我想要的要笨重。我见过一些地方,向 dbs.Execute 行添加扩展属性将指示 csv(FMT=Delimited)和列标题(HDR=Yes)。为文本定界符设置一个将是最简洁的解决方案,但据我所知,这不存在。不过,如果确实如此,我很高兴得到纠正!

【讨论】:

    猜你喜欢
    • 2016-09-26
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多