在循环结束的第一行写入文件

时间:2016-10-21 08:35:44

标签: vba

我有一个简单的问题,在从记录集读取并在循环结束时写入ti文件后,我需要在第一行(rowcount)代码中编写如下:

   sFileName = "C:\filename.csv"

RowCount = 0
Open sFileNameFor Output As #1
Do While Not rst.EOF
    'Print #1, rst!Name
    Print #1, rst.Fields(0).Value & "|" & rst.Fields(1) ... rst.Fields(n).Value
    RowCount = RowCount + 1
    rst.MoveNext
Loop
    '--header and rowcount
      Print #1, "Header Line" & RowCount

我没有找到如何在文件的第一行“C:\ filename.csv”中添加标题

提前致谢

2 个答案:

答案 0 :(得分:0)

Afaik,记录集中没有每个Field.Name的集合。相反,您必须遍历集合Fields并获取每个项目.Name - 属性如下:

For i = 1 To rst.Fields.Count
    Debug.Print rst.Fields(i - 1).Name
Next i

生成一个字符串,让我们说,像这样:

Dim strHeader as String
strHeader = rst.Fields(0).Name
For i = 1 To rst.Fields.Count - 1
    strHeader = strHeader & "|" & rst.Fields(i).Name
Next i

计算i显然有点奇怪,bc,你知道,VBA中的0-based数组。

希望有所帮助。

答案 1 :(得分:0)

我发现这个代码完成了这项工作 - 在Loop命令下面添加它:

Dim sFileContents As String

Close #1
Open sFileNameFor For Binary As 1
sFileContents = Space$(LOF(1))
Get #1, 1, sFileContents
Put #1, 1, "Header Line " & RowCount & vbCrLf
Put #1, , sFileContents
Close #1

来源: http://www.pcreview.co.uk/threads/how-write-into-text-file-at-first-and-last-line-with-excel-vba.4046562/