2

我一直在研究这个问题,以获得答案或至少一个模板。

我正在使用 MS Access 2007。我需要将查询导出为具有固定宽度规格的文本文件(已经完成)。我遇到的问题是我必须在导出后附加一个特定的页眉和页脚。标头必须具有当前日期,而尾标必须具有要导出的总项目。

诚然,我有点不知所措,但通常会偶然发现一些做类似事情的 VBA 代码。

任何人都可以帮忙吗?

4

2 回答 2

1

没有任何方法可以在导出中定义额外的文本行。

我假设您正在使用 TransferSpreadsheet 方法以固定宽度格式导出查询。这通常是生成固定宽度内容的正确方法,无论是否带有字段标题。

但是如果你想在数据内容之前和之后向文件中添加行,那么你需要打开现有文件,创建一个新文件,附加标题行,然后将现有文件中的数据附加到新文件中,然后附加页脚行,然后关闭这两个文件。

您可以使用内置的 VBA 函数来处理文件,但我发现 Scripting.Runtime 库提供了更直观、面向对象的文件处理方式。

您需要在工具中添加对 Microsoft 脚本运行时库的引用.. 参考..

Sub EnhanceExportedFile()

  Const exportedFilePath As String = "C:\Foo.txt"
  Const newFilePath As String = "C:\NewFoo.txt"

  Dim fso As Scripting.FileSystemObject
  Dim exportedFile As TextStream
  Dim newFile As TextStream
  Dim rowCount As Long

  Set fso = New Scripting.FileSystemObject

  Set exportedFile = fso.OpenTextFile(exportedFilePath, ForReading, False)
  Set newFile = fso.CreateTextFile(newFilePath, True)

  'Append the date in ISO format
  newFile.WriteLine Format(Now, "yyyy-mm-dd")

  'Append each line in the exported file
  Do While Not exportedFile.AtEndOfStream
    newFile.WriteLine exportedFile.ReadLine
    rowCount = rowCount + 1
  Loop
  'Append the total exported lines
  newFile.WriteLine rowCount

  'Close both files
  exportedFile.Close
  newFile.Close

End Sub
于 2016-09-11T00:46:19.153 回答
0

使用联合查询。假设您的查询具有字段 ID(自动编号、长)、名字、姓氏,并且您的表名是 tablexx。如果您有顺序 ID,则可能是这样的:

创建查询。选择 0 作为 id,format(date(),"dd/mm/yyyy") 作为名字,"" 作为姓氏,"" 作为 nextfield 等从 tablexx order by id 中选择;

和一个查询
选择 9999999999(比您预期的 id 大得多)作为 id,(从 tablexx 中选择 count(id))作为名字,“”作为姓氏,“”作为 nextfield 等,从 tablexx 中按 id 排序;

现在做三者的联合。甚至可以放入空行(id = 1 等)。

于 2016-09-14T07:06:07.890 回答