VBA - 命令:docmd.TransferText - 将表导出到 CSV 文本文件 - 使用 ; 分隔数据代替 ,

问题描述 投票:0回答:1

祝大家好运,:)

我正在尝试将 Access 表导出到 CSV 文件,但我想要使用的分隔符是 ;,尽管默认为 ,

我有一张桌子,tUsuarias,像这样,

enter image description here

嗯,为了将该表导出到 CSV 文件,我使用了按下表单按钮时启动的 VBA 宏,如下所示,

Private sub cmdExportar_Microdatos_Click()
  Dim oCSV as String
  oCSV = CurrentProject.Path & "\microdatos_Usuarias.csv"
  doCmd.TransferText acExportDelim, , "tUsuarias", oCSV, True
  MsgBox "Exportacion realizada OK", vbInformation, "Microdatos exportados"
End Sub

并且,在同一个文件夹中,我想放置导出上述 tUsuarias 表的结果 CSV 文件,我制作了一个 schema.ini 文件,试图更改 CSV 格式文件,以通过 分隔所有行的数据; 代替 ,

[microdatos_Usuarias.csv]
ColNameHeader=True
Format=Delimited(;)
DecimalSymbol=","

但是,当我将表导出到 microdatos_Usuarias.csv 文件时,结果是这样的,

"cId";"cApellidos";"cNombre";"cAltura"
1,"Garcia Hernando","Raul",172
2,"Martin Castro","Alicia",158
3,"Gonzalez Navarro","Ana",182
4,"Peyrona Perez","Alberto",165
5,"Garcia Fierro","Angel",175

....将 , 替换为 ; 仅适用于标题行(字段名称行)y,保留默认 CSV 格式(带有 , 分隔符)文件的其余行(“数据”行...)。

但我想要的是将 , 替换为 ;所有行的分隔符。我的答案是我为了获得唯一标题行格式更改的结果而犯的错误(并且,在我省略标题行的情况下(使用 ColNameHeader=False 命令...),none of 行导出的格式已更改...),以及如何才能获得更改所有行格式

的所需结果

问候!!

excel vba csv ms-access
1个回答
1
投票

我建议进行手动导出,并在执行此操作时创建导出“规范”。

因此,在导航页面中选择表格,然后从“导出”下的功能区中,选择文本文件。

因此:

enter image description here

然后在下一个面板上,点击高级:

enter image description here

enter image description here

将分隔符更改为“;”,然后单击“另存为”以保存导出规范。

在下一页上,检查第一行的包含字段名称。

因此:

enter image description here

现在,请仔细注意,系统会再次提示您更新/保存规范。

因此:

enter image description here

现在,我们已经保存了导出规范。

因此有了这段代码,我们仍然要求 has 字段名称为“true”。

Dim sFile       As String

sFile = "c:\test\myhotels.txt"

DoCmd.TransferText acExportDelim, "myexport", "tblHotelsA", sFile, True

因此,尝试使用导出向导,然后保存导出规范。一旦手动过程按预期工作,并且您对更新导出规范回答“是”,那么在 VBA 中,导出规范应该尊重您的设置。

© www.soinside.com 2019 - 2024. All rights reserved.