Excel 解析文件夹中的所有工作簿并创建主工作表
我有许多excel文件,每个文件只有一个工作表,在一个包含5个来源数据的文件夹中。源文件位于L列。我想通读所有文件的每一行,并创建5个主工作表。我认为源的数量不应该仅限于5个源,宏应该只读取所有文件中的所有行,并根据单元格L中的值将行复制到主工作表。开始行是3,用于读取和写入。我想我有阅读每个文件和工作表的工作代码,但在读和写行方面有问题Excel 解析文件夹中的所有工作簿并创建主工作表,excel,vba,Excel,Vba,我有许多excel文件,每个文件只有一个工作表,在一个包含5个来源数据的文件夹中。源文件位于L列。我想通读所有文件的每一行,并创建5个主工作表。我认为源的数量不应该仅限于5个源,宏应该只读取所有文件中的所有行,并根据单元格L中的值将行复制到主工作表。开始行是3,用于读取和写入。我想我有阅读每个文件和工作表的工作代码,但在读和写行方面有问题 Sub ParseByDevice() Dim Path As String Dim FileName As String Dim Wkb As Workb
Sub ParseByDevice()
Dim Path As String
Dim FileName As String
Dim Wkb As Workbook
Dim wbThis As Workbook
Dim ws As Worksheet
Dim Pws As Worksheet 'Parsed Worksheet based on Column L (i, 12)
Dim a As Range
Dim b As Range
Dim rw As Range
Dim cl As Range
Dim MyBook As Workbook
Dim newBook As Workbook
Dim FileNm As String
Application.EnableEvents = False
Application.ScreenUpdating = False
Path = "C:\xml\vac" 'Change as needed
FileName = Dir(Path & "\livevalues*.xls", vbNormal)
'
'ALL FILES IN FOLDER LOOP
'
Do Until FileName = ""
Set Wkb = Workbooks.Open(FileName:=Path & "\" & FileName)
'
'ALL EACH WORKSHEET IN WORKBOOK LOOP
'
'next worksheet in file;
'only expect one worksheet but maybe more in the future
'
For Each ws In Wkb.Worksheets
'
' FOR EACH ROW IN WORKSHEET LOOP
'
rw = 3 'first row after header
For Each rw In ws
MsgBox Wkb.Sheets(ws).row(rw, 12).Value 'this is temporary, just a visual check that things are going well
cl = Wkb.Sheets(ws).row(rw, 12).Value
Wkb.Sheets(ws).row(rw, 12).Copy Pws.Sheets(cl)
Next rw 'next row in worksheet
Next ws 'next worksheet in file;
Wkb.Close False
FileName = Dir()
Loop 'Do next file in folder
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
一种方法:
Application.EnableEvents = False
Application.ScreenUpdating = False
Path = "C:\xml\vac" 'Change as needed
FileName = Dir(Path & "\livevalues*.xls", vbNormal)
Set MyBook = ThisWorkbook
Do Until FileName = ""
Set Wkb = Workbooks.Open(FileName:=Path & "\" & FileName)
For Each ws In Wkb.Worksheets
rw = 3 'first row after header
Do
tmp = ws.Cells(rw, 12).Value
If Len(tmp) = 0 Then Exit Do
Set Pws = Nothing
On Error Resume Next
Set Pws = ThisWorkbook.Sheets(tmp)
On Error GoTo 0
If Pws Is Nothing Then
Set Pws = MyBook.Worksheets.Add( _
after:=MyBook.Sheets(MyBook.Sheets.Count))
Pws.Name = tmp
End If
ws.Rows(rw).Copy Pws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
rw = rw + 1
Loop
Next ws 'next worksheet in file;
Wkb.Close False
FileName = Dir()
Loop 'Do next file in folder
Application.EnableEvents = True
Application.ScreenUpdating = True
你的问题是?有人能帮我处理工作表循环吗?我想读很多工作簿,在第3行之后阅读每一行,单元格L的内容将是我想写这一行的主工作表的名称。工作表循环用于读取由Pws.Sheetsc1标识的行,并将行写入主工作表。