如何将MS Access查询对象导出到文本文件

Mic*_*r3D 3 ms-access vba ms-access-2013

在MS Access中,我需要将所有查询备份到文本文件

我可以很好地与其他Access对象一起使用,例如以下是将所有报告备份到文本文件的示例

Dim oApplication
Set oApplication = CreateObject("Access.Application")

For Each myObj In oApplication.CurrentProject.AllReports
        WScript.Echo "Report  " & myObj.fullname
        oApplication.SaveAsText acReport, myObj.fullname, sExportpath & "\" & myObj.fullname & ".report"
Next
Run Code Online (Sandbox Code Playgroud)

我尝试了以下备份所有查询

For Each myObj In oApplication.CurrentData.AllQueries
    WScript.Echo "Query  " & myObj.fullname
    oApplication.SaveAsText acQuery, myObj.Name, sExportpath & "\" & myObj.Name & ".query"
Next
Run Code Online (Sandbox Code Playgroud)

但是,生成的文本文件是查询输出.它绝对不是我正在寻找的查询定义.

这里要清楚的是我试图导出到文本的图像

在此输入图像描述

有没有人对如何实现这一点有任何想法?

Ste*_*itz 6

迭代QueryDefs应该适合你

Dim def As DAO.QueryDef
Dim defCol As DAO.QueryDefs

Set defCol = CurrentDb.QueryDefs

For Each def In defCol
    Debug.Print def.SQL
Next
Run Code Online (Sandbox Code Playgroud)


Chr*_*ton 5

这个怎么样(需要在VBA编辑器的Tools | References下选中'Microsoft Scripting Runtime'):

Dim Def As DAO.QueryDef
Def FSO As New Scripting.FileSystemObject, Stream As Scripting.TextStream
For Each Def In CurrentDb.QueryDefs
  Set Stream = FSO.CreateTextFile(sExportpath & "\" & Def.Name & ".query")
  Stream.Write(Def.SQL)
  Stream.Close
Next
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是VBScript:

Dim Def, FSO, Stream
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each Def In oApplication.CurrentDb.QueryDefs
  Set Stream = FSO.CreateTextFile(sExportpath & "\" & Def.Name & ".query")
  Stream.Write(Def.SQL)
  Stream.Close
Next
Run Code Online (Sandbox Code Playgroud)