vba 读取csv文件生成Excel文件
现在有csv文件:检索条件1:动物
检索条件2:鸟类
检索结果:
鸟名,种类,大小
猫头鹰 ,夜行,中等
画眉 ,日行,小
由于检索结果的条数特别的多,用行赋值的话特别的满,想用块赋值,不知道读取csv该怎么读取
DoEvents 'Windows
StrMemory = MyTS.ReadLine
StrMemory = Replace(StrMemory, "&", vbLf)
StrMemory = Replace(StrMemory, Chr(44), vbTab)
StrHeader = Split(StrMemory, vbTab, -1, vbBinaryCompare)
Worksheets(C_sSheetNm).Cells(iCnt - 1, 1).Value = StrHeader(0)
vba 读取csv文件生成Excel文件 --------------------编程问答-------------------- 搜索schema.ini的用法。利用ADO进行格式化文本的读取,用sql做检索,整块赋值进Excel,速度比较快。
给你个例子:
'*****************************************************************
'功能:利用ADO格式化读取TxT文本文件到Excel中
'******************************************************************
Private Sub 按格式读取文本文件到Excel中(sTxt As String, sPath As String, sDelimited As String)
' sTxt:文本文件名称,sPath:文件所在文件夹路径,sDelimited:分隔符
Dim rst As Object
Dim sCnn As String
Dim Free As Long
sTxt = "a.csv" '文本文件名称
sPath = "H:\新建文件夹\" '文件所在文件夹路径
Free = FreeFile
Open sPath & "schema.ini" For Output As #Free '创建 schema.ini 文件
'schema.ini 文件说明
'Schema.ini用于提供文本文件中记录的构架信息,在读取文本文件时优先扫描该文件,并按此架构读取文本文件
'在Schema.ini文件中可以预置文件名称,标题,字段分隔符,字段性质等信息
'所以我们可以创建它 , 然后KILL它, 当然也可以不删
'Schema.ini用于提供文本文件中记录的构架信息。每个 Schema.ini 项都用于指定表的五个特征之一:
'1 文本文件名
'2 文件格式
'3 字段名?字段长度?字段类型
'4 字符集
'5 特别数据类型转换
'具体举例如下
' ColNameHeader=True 'txt文件的第一行是否包含字段名。包含为True,从第二行开始读起,False为否,从文件第一行开始读起
' Format = TabDelimited '是 文本文件 字段以 TAB分隔符
' Format = CSVDelimited '是 文本文件 字段以 CSV文件形式
' Format = Delimited(*) '是 文本文件 字段以 * 分隔,*可为其它字符,如|
' Col1=Id Integer Width 4 'Id 是长度为 10 的整形字段
' Col2=Name Text Width 10 'Name 是长度为 10 的文本字段
' MaxScanRows = 0 '扫描整个文件
' CharacterSet = ANSI '指定字符集, CharacterSet 项有两个选择:ANSI | OEM
' 特别数据类型转换 '特别数据类型转换主要是定义比如日期?货币型数据如何转换或者如何显示的
Print #Free, "[" & sTxt & "]"
Print #Free, "ColNameHeader = False"
Print #Free, "Format = CSVDelimited"
Print #Free, "MaxScanRows = 0"
Close #Free
sCnn = "Driver={Microsoft Text Driver (*.txt; *.csv)};" & "DBQ=" & sPath & "\;Persist Security Info=False"
'也可以用下面这一句
'sCnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPath & ";Extended Properties=Text;"
sSql = "SELECT * FROM " & sTxt
Set rst = CreateObject("ADODB.Recordset")
rst.Open sSql, sCnn, 0, 1, 1
If Not rst.EOF Then
Sheet3.Cells.ClearContents: Sheet3.Range("A1").CopyFromRecordset rst
End If
rst.Close
Set rst = Nothing
Kill sPath & "schema.ini"
End Sub
Public Sub Read_Txt()
按格式读取文本文件到Excel中 "a.csv", "H:\新建文件夹\", "CSVDelimited"
End Sub
补充:VB , VBA