用VBA合并csv文件中的问题

 我来答
众神军团影歌83
2013-12-10 · 超过69用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:162万
展开全部
很多时候,我们要从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文件。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式