我在 MS Access 2010 中有一个表,我想将查询结果导出到文本文件中(用户指定了一个路径,这个文本文件应该保存在这个路径中)
这是我的查询:
SELECT Name FROM MyTable
我想将每个名字放在文本文件的单独行中。我怎样才能在VBA中做到这一点?
在这种特殊情况下,最直接的方法是这样的:
Sub ExportToText()
Dim rst As DAO.Recordset
Open "C:\__tmp\names.txt" For Output As #1
Set rst = CurrentDb.OpenRecordset("SELECT [Name] FROM MyTable", dbOpenSnapshot)
Do While Not rst.EOF
Print #1, rst!Name
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Close #1
End Sub
您可以使用 DoCmd.TransferText 方法来完成此操作。喜欢:
DoCmd.TransferText acExportDelim,"mySpecification","myView","C:\DATA\myfile.csv",True
首先,您手动执行一次,然后保存规范(您可以在其中决定导出哪些列、类型等)。
MyView 是您创建为“SELECT Name FROM myTable”的视图
30-40 年前,当 MS Access 2.0 版本时,我是 MS Access 的专家,我确信我使用了没有导出规范的 DoCmd.TransferText,并且使用在代码中动态构造的 SQL 来导出选定的结果,但是最新版本的Access 似乎需要预先保存的导出规范,该规范不允许代码动态选择要导出的记录。 谷歌搜索似乎仍然提供了我会使用的解决方案,例如 将 qQuery 调暗为 DAO.QueryDef 将 sSQL 变暗为字符串
Set qQuery = CurrentDb.CreateQueryDef(TMP_EXPORT_QUERYDEF)
sSQL = "Select * from [Export Stock Easy Formated Price Data] where [Date] = " & (format some date)
qQuery.SQL = sSQL
DoCmd.TransferText acExportQuery, , "ExportQuery", "d:\temp\file1.txt"
但它不起作用,因为它现在需要导出规范,所以有些事情发生了变化。
找不到当前的解决方案,所以有人可以告诉我现在如何动态导出选定的结果
Access 仍然是一款出色的产品,但与 Microsoft 的其他产品一样,尤其是 Word,该产品过于智能,不利于其自身的利益。