多xls文件批量处理总结

  • A+
所属分类:安全闲碎

     最近一段时间特别忙,所以公众号文章发的比较少,技术一直都在研究和进步。今天主要分享一种数据处理方法,在后续日常工作中可能会经常遇到。

1.利用场景

      通过渗透下载或者获取了批量相同类型文件,文件的结构基本相同,但文件数量比较大,少则几十,多则上千。笔者遇到的情况是表头非标准,无法通过程序直接进行导入,需要将多个文件的内容进行整合。比如下面的图片:

多xls文件批量处理总结

表头是由两行组合而成的,通过程序也非常麻烦。

2.解决思路

       通过XLS的VBA功能自动对文件夹下的所有文件进行复制处理,处理完毕后在一个文件中,但唯一的限制是行只能65535行,也就是处理文件数=65535/每个文件的行数,因此有文件行数的限制。

3.具体操作

(1)将所有的xls文件复制到一个文件夹

(2)文件夹中新建一个xls文件

(3)对sheet1表标签中右键单击查看代码

多xls文件批量处理总结

(4)在代码窗口中复制以下代码

Sub 合并当前目录下所有工作簿的全部工作表()

Dim MyPath, MyName, AWbName

Dim Wb As Workbook, WbN As String

Dim G As Long

Dim Num As Long

Dim BOX As String

Application.ScreenUpdating = False

MyPath = ActiveWorkbook.Path

MyName = Dir(MyPath & "" & "*.xls")

AWbName = ActiveWorkbook.Name

Num = 0

Do While MyName <> ""

If MyName <> AWbName Then

Set Wb = Workbooks.Open(MyPath & "" & MyName)

Num = Num + 1

With Workbooks(1).ActiveSheet

.Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)

For G = 1 To Sheets.Count

Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)

Next

WbN = WbN & Chr(13) & Wb.Name

Wb.Close False

End With

End If

MyName = Dir

Loop

Range("B1").Select

Application.ScreenUpdating = True

MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"

End Sub

多xls文件批量处理总结

(5)运行程序

    如图所示,直接按F5快捷键也可以,运行后程序会自动进行文件的合并处理。

多xls文件批量处理总结

(6)提示合并结果

   如图所示,程序会自动显示累计合并多少个文件。

多xls文件批量处理总结

4.文件的进一步处理

(1)打开并保存处理后的xls文件,将其中的内容复制到记事本文件中。

(2)通过ultraedit进行排序去重

(3)将不需要保留的信息全部删除

(4)将列字段添加到首行

(5)xls中建议选择全部,设置表格为文本,默认是常规。

(6)将文件复制回xls中,形成一个方便处理的xls文件。

(7)可以将xls或者文本文件导入的mysql中进行数据分析。

      欢迎关注本公众号,后续将尽量每周分享一篇原创实用内容给大家。

本文始发于微信公众号(小兵搞安全):多xls文件批量处理总结

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: