Excel 中用VBA批量导入
多个.csv格式的数据分别按名称导入Excel 对应工作表中。比如:桌面的 文件夹F 中有10个类似A_Aug1.csv,B_Aug1.csv,C_Aug1.csv的测试源文件,要批量导入到Excel文件中(一个源文件分一个工作表),要求按文件名对应导入相应名称的工作表中(10个工作表已经按A_Aug1……命名)。
或者能批量直接在原Excel文件最后一个工作表后按A_Aug1……顺序导入分成生成10个工作表
Excel 中用VBA批量导入 多个.csv格式的数据分别按名称导入Excel 对应工作表
答案:1 悬赏:20 手机版
解决时间 2021-01-31 16:53
- 提问者网友:星軌
- 2021-01-31 10:47
最佳答案
- 五星知识达人网友:怀裏藏嬌
- 2021-01-31 11:10
答:以下代码是在原Excel文件后面新增工作表的方法导入CSV文件,每个工作表名对于CSV文件名。CSV文件与运行宏的这个文件在同一个文件夹里。
Sub Demo()
Dim Filename As String
Dim r As Long, c As Integer
Dim txt As String, Char As String * 1
Dim Data
Dim i As Integer
Dim NewSheet As Worksheet
Dim NewCell As Range
On Error Resume Next
Filename = Dir(ThisWorkbook.Path & "\*.CSV")
Do While Filename <> ""
Set NewSheet = Worksheets.Add(after:=Sheets(Sheets.Count))
NewSheet.Name = Filename
Set NewCell = NewSheet.Range("A1")
Open ThisWorkbook.Path & "\" & Filename For Input As #1
r = 0
c = 0
txt = ""
Application.ScreenUpdating = False
Do Until EOF(1)
Line Input #1, Data
For i = 1 To Len(Data)
Char = Mid(Data, i, 1)
If Char = "," Then
NewCell.Offset(r, c) = txt
c = c + 1
txt = ""
ElseIf i = Len(Data) Then
If Char <> Chr(34) Then txt = txt & Char
NewCell.Offset(r, c) = txt
txt = ""
ElseIf Char <> Chr(34) Then
txt = txt & Char
End If
Next i
c = 0
r = r + 1
Loop
Close #1
Filename = Dir
Loop
Application.ScreenUpdating = True
End Sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯