Excel 中用VBA批量导入 多个.csv格式的数据分别按名称导入Excel 对应工作表

Excel中用VBA批量导入多个.csv格式的数据分别按名称导入Excel对应工作表中。比如:桌面的文件夹F中有10个类似A_Aug1.csv,B_Aug1.csv,C_... Excel 中用VBA批量导入
多个.csv格式的数据分别按名称导入Excel 对应工作表中。比如:桌面的 文件夹F 中有10个类似A_Aug1.csv,B_Aug1.csv,C_Aug1.csv的测试源文件,要批量导入到Excel文件中(一个源文件分一个工作表),要求按文件名对应导入相应名称的工作表中(10个工作表已经按A_Aug1……命名)。

或者能批量直接在原Excel文件最后一个工作表后按A_Aug1……顺序导入分成生成10个工作表
展开
 我来答
mzz9060
2017-08-23 · TA获得超过1319个赞
知道小有建树答主
回答量:770
采纳率:85%
帮助的人:227万
展开全部

答:以下代码是在原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
追问
char(34)什么意思,可以大概解释下?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式