在记录之间插入空行并输出到CSV

时间:2011-08-25 15:00:08

标签: vba csv ms-access replace

我需要修改两个CSV文件中的字符串。我使用的是Windows XP。

文件名为 pi_jobs.csv pi_offices.csv

我在每条记录之间需要两个空格,然后在最后一条记录之后需要两个空白行。

文件由基于Access的应用程序生成,我已经能够通过SQL语句在输出中创建空行(基本上,查询中的最后一个字段连接两组Chr(10)和Chr(13)个字符,给我两个换行符和两个回车符。)

但是,当我将文件输出到CSV时,它将那些回车符和换行符作为记录中的单独字段包含在内,从而在字段前放置一个逗号,并在字段周围加引号。

我在下面提供了一个例子。注意第一和第二条记录之间的差距。第一条记录末尾有一个逗号和引号,第二条记录开头前有一个右引号:

  

“经认可的医疗协助计划,有资格获得AAMA或AMT认证;需要高中文凭或GED;至少三年医疗或相关业务办公室工作经验;静脉切开术和注射给药的工作知识。期望:会员学位。“,”
  
  
  “
  “TBP20113105-82792”,“chicago-edgewater”,“9999999”,“TBP医疗助理”

我在这里对页面格式非常小心 - 这正是行间距的样子。该间距有三个线间隙。但是,它应该是这样的:

  

“经认可的医疗协助计划,有资格获得AAMA或AMT认证;需要高中文凭或GED;至少三年医疗或相关业务办公室工作经验;静脉切开术和注射给药的工作知识。期望:合作学位。“   
  

  “TBP20113105-82792”,“chicago-edgewater”,“9999999”,“TBP医疗助理”

1 个答案:

答案 0 :(得分:1)

这是一个纯粹的Access解决方案。

步骤1:在数据库中添加对Microsoft Scripting Runtime库的引用

enter image description here

步骤2:创建一个将打开表/查询并逐行读取记录并输出到.csv文件的函数

Function OutputToCsv()
Dim fs As FileSystemObject
Dim ts As TextStream
Dim rs As Recordset

On Error GoTo lberr

'use this if you query a single table
Set rs = CurrentDb.OpenRecordset("Select Column1, Column2, Column3 From NewTable")

'use this if your query DOES NOT have any parameters
'Set rs = CurrentDb.OpenRecordset("Select Column1, Column2, Column3 From NewQuery")

'use this if you use query WITH parameter(s)
'Dim qdf As QueryDef
'Set qdf = CurrentDb.QueryDefs("NewQuery")
'qdf.Parameters("Parameter1") = "" 'set the value for the parameter(s)
'Set rs = qdf.OpenRecordset

If (rs.RecordCount = 0) Then Exit Function

Set fs = New FileSystemObject
Set ts = fs.CreateTextFile("C:\NewFile.csv", True, False) 'this will overwrite the file each time

rs.MoveFirst

Do While Not rs.EOF
    'Chr(34) is a quotation mark "
    ts.WriteLine (Chr(34) & rs("Column1") & Chr(34)) 'format your record output
    'ts.WriteLine (Chr(34) & rs("Column1") & Chr(34) & "," & Chr(34) & rs("Column2") & Chr(34)) 'in case you need to output more than one column
    ts.WriteBlankLines (2) 'Add as many empty lines as you need
    rs.MoveNext
Loop

ts.Close

MsgBox "Success!"

Exit Function
lberr:
    MsgBox Err.Description
End Function

而且,这就是输出文件的样子:

enter image description here