【问题标题】:Create .csv file from query through vba通过 vba 从查询创建 .csv 文件
【发布时间】:2018-05-07 14:19:24
【问题描述】:

我创建了一个调用已保存导出菜单的宏,以便可以将查询导出为 .csv 文件,以便导入到另一个数据库。

不过,我想减少用户的步骤数 - 不仅避免必须单击确定等,而且导出的文件还具有附加到某些数据的货币格式。

到目前为止,我的代码如下所示:

Public Function ExportProducts()
DoCmd.TransferText acExportDelim, "ExportSpecs", "ActProductInfo", _
"T:\Documents\Isaac Reefman\Product List", -1
MsgBox "Remember to clear formatting in the .csv file before importing it into Act", _
vbExclamation, "Export Reimnder"
End Function

这给我留下了两个问题。

  1. 我收到一条错误消息,指出数据库或对象是只读的。据我所知,事实并非如此。因此它拒绝执行。
  2. 看起来它将以 格式导出它(其中一些具有货币格式)。我需要它最终没有任何格式的数据库。

【问题讨论】:

  • Rene 已经解决了第一个问题 - 我在文件名中留下了扩展名......我傻了。
  • 你能把他的答案标记为正确吗?
  • 他在那个答案中解决了问题的第一部分,但第二部分的答案仍然只在 cmets 中。我说如果他将那个元素放入答案本身,我会接受这个答案是正确的,但他没有这样做 - 如果答案不能完全回答问题,我觉得我不能选择一个已接受的答案...

标签: ms-access vba


【解决方案1】:

至于错误,您应该添加文件的扩展名,例如:

"T:\Documents\Isaac Reefman\Product List.csv"

至于格式化,您可以在使用导出向导时选择退出格式化,例如,不要勾选此框:

使用格式和布局导出数据

您可能还需要使用 CDbl() 重新格式化查询。 或者 Gustav 建议的 Str() (这是一个更好的建议!)。

所以:Str([tblTable].[Field1]) AS NameOfExportColumn, Str([tblTable].[Field2]) AS SecondColumnName

然后导出查询而不是表。

【讨论】:

  • 第一次就很棒。如此明显,不敢相信我做到了。至于格式,我没有勾选那个框,但货币字段仍然导出为 .csv 中的货币格式。
  • 在再次关闭整个文件之前,我是否必须编写一些代码才能打开 .csv 文档、选择文本并删除格式?这看起来很笨拙......
  • 根据您的表创建查询。包括所有列。使用 CDbl 函数转换您的货币列。保存您的查询。导出您的查询而不是您的表格。
  • 你是什么意思?我已将其添加到查询的 sql 中(它已经是一个查询),如下所示:CDbl([qryAddCodes].[Cost]) AS Cost, CDbl([qryAddCodes].[Price]) AS Price 但这并没有延续到 .csv...
  • 为我工作。您可能必须转储并重新创建您的导出规范。
猜你喜欢
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
  • 2013-10-18
  • 2012-01-15
  • 2014-06-30
相关资源
最近更新 更多