用VBA合并csv文件中的问题
1个回答
展开全部
很多时候,我们要从CSV文件中提取某些数据,就可以使用ADO SQL语句。
与用ADO连接ACCESS主要的不同是连接字符,如下所示:
Source=c: \temp\;Extended Properties=""text; HDR=Yes; FMT=Delimited (,)""
Source : CSV文件保存的文件夹
Extended Properties: Text (表示文本文件), HDR =Yes (如果文本文件中首行是字段名称),
FMT=Delimited(,) (表示是以逗号分割的文件)
其次不同是sql语句:
sQuery = "Select * From VBA.csv ORDER BY ID"
我们在连接字符里只指定了文件路径。这里我们指定文件名称即(vba.csv 文件的名称为vba)
下面的代码需要引用Microsoft ActiveX Data Objects library
Sub Sort_CSV()
Dim cN As ADODB.Connection '* Connection String
Dim RS As ADODB.Recordset '* Record Set
Dim sQuery As String '* Query String
On Error GoTo ADO_ERROR
cN = New ADODB.Connection
cN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp\;Extended Properties=""text;HDR=Yes;FMT=Delimited(,)"";Persist Security Info=False"
cN.ConnectionTimeout = 40cN.Open()RS = New ADODB.Recordset
sQuery = "Select * From VBA.csv ORDER BY ID"
RS.ActiveConnection = cN
RS.Source = sQueryRS.Open()If RS.EOF <> True Then
While RS.EOF = False
Open "c:\temp\vba_sorted.csv" For Append As 1
Print #1, RS.Fields(0) & "," & RS.Fields(1)
RS.MoveNext()Close #1End WhileEnd IfIf RS.State <> adStateClosed ThenRS.Close()End IfIf Not RS Is Nothing Then RS = Nothing
If Not cN Is Nothing Then cN = NothingADO_ERROR:If Err <> 0 Then
Debug.Assert(Err = 0)
Resume NextEnd IfEnd Sub对csv文件进行排序操作不太容易。一种方法是在EXCEL中打开文件,操作后保存。尽管如此,一旦行数超过EXCEL可以容纳的数量,你就可能要使用ADO对文件操作,然后回存为CSV文件。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询