我一直在研究这个问题的高低,以获得答案或至少要有一个模板。
我正在使用MS Access 2007.我需要将查询导出为具有固定宽度规范的文本文件(已经完成)。我遇到的问题是,我必须在导出后附加一个特定的页眉和页脚。标题必须具有当前日期,预告片必须具有导出的总项目。
我无可否认地在我的头脑中,但通常会偶然发现一些类似的VBA代码。
有人可以帮忙吗?
答案 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等)。