批量提取多個Excel文件內指定單元格的數據(文件名和數據)
例如收集了excel表格統一格式的個人簡歷,從中抽取個人基本信息,生成數據表。
將源數據excel文件放在同一個文件夾下。
新建一個shouji.xls也放在該文件夾下。
原表格數據
1.xls
---------------
A B
3 60 101
---------------
2.xls
3.xls
打開shouji.xls,按住Alt+F11進入宏界面,點擊菜單的插入->模塊,在代碼窗口粘貼如下代碼:
VBA代碼如下:
-----------------------------
Sub find()
Application.ScreenUpdating = False
Dim Mydir As String
Dim i As Integer
i = 2
Mydir = ThisWorkbook.Path & "\"
ChDrive Left(Mydir, 1)
ChDir Mydir
Match = Dir$("*.xls")
Do
If Not LCase(Match) = LCase(ThisWorkbook.Name) Then
Workbooks.Open Match, 0, 1
ThisWorkbook.ActiveSheet.Range("A" & i) = Match
ThisWorkbook.ActiveSheet.Range("B" & i) = ActiveWorkbook.Sheets("Sheet1").Range("A3")
ThisWorkbook.ActiveSheet.Range("C" & i) = ActiveWorkbook.Sheets("Sheet1").Range("B3")
ActiveWorkbook.Close 0
i = i + 1
End If
Match = Dir$
Loop Until Len(Match) = 0
Application.ScreenUpdating = True
End Sub
----------------------------------------------
F5運行宏
在shouji.xls表格自動生成數據,如下:
A B C
2 1.xls 60 101
3 2.xls 70 130
4 3.xls 80 100
-----------------------------------
如果需要採集A3、B3的其他單元格數據,可以繼續添加代碼:
ThisWorkbook.ActiveSheet.Range("X" & i) = ActiveWorkbook.Sheets("Sheet1").Range("X3")
如果原數據表的單元格和目標單元格有規律,可以用循環語句解決。