使用页眉和页脚将导出查询作为文本进行访问

时间:2016-09-09 19:49:24

标签: access-vba ms-access-2007 text-files export-to-text header-fields

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

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

我无可否认地在我的头脑中,但通常会偶然发现一些类似的VBA代码。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

您需要在Tools .. References ..中添加对Microsoft Scripting Runtime库的引用。

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

答案 1 :(得分:0)

使用联合查询。 假设您的查询具有字段ID(自动编号,长),名字,姓氏和您的tabelname是tablexx。如果你有连续的id,它可能是这样的:

创建查询。 选择0作为id,格式(日期()," dd / mm / yyyy")作为名字,""作为姓氏,""作为nextfield等来自tablexx的id;

和查询
选择9999999999(远大于您预期的ID)作为id,(从tablexx中选择count(id))作为firstname,""作为姓氏,""作为nextfield等来自tablexx的id;

现在做三人联盟。甚至可以放入空白行(id = 1等)。