「Excel」批量导入某个目录下的CSV到同一Excel-csv文件怎么打开

前几天同事妹子突然在群里@我,问我懂不懂宏,她经常都要把导出来的一堆csv格式数据导入到同一个Excel里处理、保存。然后我就帮她写了个宏,但是她又不懂怎么用

于是就有了上一篇推文【office技巧】宏。

原本给她写的是通过【打开一个CSV,复制到ActiveSheet里。接着打开下一个CSV】循环。

但有个缺点:默认情况下CSV用Excel直接打开,长串数字会自动转成科学记数法存储,而且过长的后面全部变成0000了。。。

于是昨晚又彻夜不眠地改了一个通用型的版本,V2.0,哈哈哈。

1、宏代码

这个功能通过宏来实现,分两种模式:

1、导入到Excel的同一个工作表中;

2、导入到Excel的不同工作表,并以CSV名称命名sheet

Sub ImportMultiCSV()

Application.ScreenUpdating = False

Dim myFile$, myPath$, i Arraycol myArray() As Integer, independent/p>

With Application.FileDialog(msoFileDialogFolderPicker)

.Title = "选择目标文件夹"

If .Show = -1 Then

myPath = .SelectedItems(1)

Else

Exit Sub

End If

End With

myPath = myPath & "\"

myFile = Dir(myPath & "*.csv")

Arraycol = InputBox("导入的csv有几列:")

'myAPP.Visible = True '是否显示打开文档

ReDim myArray(Arraycol)

For i = 0 To Arraycol

myArray(i) = 2 '或xlTextFormat

Next

independent = MsgBox("『模式1』:导入到一张表=是" & Chr(10) & "『模式2』:分开各表=否", vbYesNo) 'Yes=6, No=7

i = 0

Do While myFile <> ""

If independent = 7 Then 'Split

Set sh = Sheets.Add(, Sheets(Sheets.Count))

Else

Set sh = ActiveSheet

End If

With sh.QueryTables.Add(Connection:="TEXT;" & myPath & myFile _

, Destination:=sh.Cells(i + 1, 1))

.TextFileParseType = xlDelimited

.TextFileCommaDelimiter = True

.TextFileColumnDataTypes = myArray

.Refresh

End With

If independent = 7 Then 'Split

sh.Name = Left(myFile, Len(myFile) - 4)

Else

If i > 0 Then ActiveSheet.Rows(i + 1).Delete 'delete title

i = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(3).Row 'update to newest end row

End If

myFile = Dir

Loop

Application.ScreenUpdating = True

MsgBox ("全部加载完毕!")

End Sub

2、使用教学

例如我要将【新建文件夹】内的CSV全部导入:

「Excel」批量导入某个目录下的CSV到同一Excel

傻瓜式步骤:

「Excel」批量导入某个目录下的CSV到同一Excel

静态步骤:

「Excel」批量导入某个目录下的CSV到同一Excel

然后选择导入的CSV数据有多少列(如原始列数有n列,则输入>=n的数字都可以。例如我的素材有8列,则输入8或以上数字都可以):

「Excel」批量导入某个目录下的CSV到同一Excel

『模式1』所有CSV数据汇总在同一个sheet中。

『模式2』每个CSV各自成一个sheet。

「Excel」批量导入某个目录下的CSV到同一Excel

「Excel」批量导入某个目录下的CSV到同一Excel

『模式1』结果:

「Excel」批量导入某个目录下的CSV到同一Excel

『模式2』结果:

「Excel」批量导入某个目录下的CSV到同一Excel

3、动图演示

「Excel」批量导入某个目录下的CSV到同一Excel

结束语

本次的【宏】可以运用到CSV、TXT在内的所有文本格式数据导入,只要将代码里的〖*.csv〗改成〖*.txt〗就行了。

原创不易,转载请保留出处。

推荐阅读