Vba 将动态字段从Access导出到csv(schema.ini?)

Vba 将动态字段从Access导出到csv(schema.ini?),vba,ms-access-2010,export-to-csv,Vba,Ms Access 2010,Export To Csv,我正在尝试在不使用文本限定符的情况下将交叉表查询从Access 2010导出到csv。我能够在其他导出中使用Transfer Text方法;这种方法的诀窍在于,字段的数量及其名称根据用户在表单上选择的内容而变化,但SpecificationName中的设置是静态的。如果我没有指明SpecificationName,我可以根据需要获得查询中运行的任何字段,但我会在文本字段周围获得引号,这是我不想要的。如果我设置了一个规范,将文本限定符设置为None,那么我就只能使用一组字段列表。设置规范时,我尝试

我正在尝试在不使用文本限定符的情况下将交叉表查询从Access 2010导出到csv。我能够在其他导出中使用Transfer Text方法;这种方法的诀窍在于,字段的数量及其名称根据用户在表单上选择的内容而变化,但SpecificationName中的设置是静态的。如果我没有指明SpecificationName,我可以根据需要获得查询中运行的任何字段,但我会在文本字段周围获得引号,这是我不想要的。如果我设置了一个规范,将文本限定符设置为None,那么我就只能使用一组字段列表。设置规范时,我尝试在FieldName区域中粘贴星号,但失败了

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

我真的很想在里面放一些精选的,但看起来不可能

随便看看,看起来我可能需要设置schema.ini?当然,这也需要是动态的。我找到了一个为Access 97:编写的资源,但它在Access 2010中似乎不起作用。即使在将db As数据库更新为db As DAO.Database之后,我仍然可以

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

在即时窗口中使用适当的文本子窗口运行以下命令时:

?CreateSchemaFile(True,"C:\MyFilepath","ExportFileName.txt","qryCrosstabs")
为了解决这个问题,我已经达到了极限。为dynamicschema.ini编写一个脚本似乎太过分了,因为它只是想去掉引号,但如果必须这样做,那么任何指向正确方向的指针都会非常好


谢谢

啊,好吧,我想起来了。我认为我必须在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。使用一个文本分隔符将是最节省的解决方案,但据我所知,这并不存在。我很高兴被纠正,如果它做,虽然

该错误建议您将模块命名为CreateSchemaFile,与过程名称相同。在这种情况下,请将模块重命名为其他名称。。。例如modCreateSchemaFile。。。这个错误应该消失。不幸的是,在此之后,我无法帮助您。@HansUp-尝试了此操作,但出现错误:3265项未在此集合中找到。单击确定后,立即窗口中将显示False。我在指定的目录中没有看到任何新文件。