下面这段代码可以遍历指定文件夹下所有xls文件

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

下面这段代码可以遍历指定文件夹下所有xls文件,但:

1.文件夹下的xls文件可以返回到工A列,但子文件夹下的xls文件就不行

2.想同时在B列后能返回xls文件名下的工作表名称

Private Sub CommandButton1_Click()

Dim fn As String

Dim r As Long

fn =Dir(ThisWorkbook.Path & "\*.xls")

While fn <> ""

r = r + 1

Cells(r, 1) = fn

fn = Dir()

Wend

End Sub

Sub 汇总()

Dim sh As Worksheet, FileName As String, rng As Range, sht As Worksheet

Set sht = ActiveSheet

FileName = Dir(ThisWorkbook.Path & "\*.xls") '待汇总文件

Do

If FileName <> Then '如果当前文件不是汇部表,则处理此文件Set rng = sht.Range("A5").End(xlDown) '确定合计最上方的空单元格

If rng = "合计" Then '如果当前单元格是“合计”项

rng.EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove '插入空行

Set rng = rng.Offset(-2, 0) '调整单元格的位置

End If

Set sh = Workbooks.Open(ThisWorkbook.Path & "\" & FileName).Worksheets("Sheet1") '打开待汇总文件

rng.Offset(1, 0) = sh.[M4] '填充编号

rng.Offset(1, 1) = sh.[C4] '填充姓名

rng.Offset(1, 2) = sh.[M18] '填充总价

sh.Parent.Close (False) '关闭文件

End If

FileName = Dir() '遍历下一个文件

Loop While FileName <> ""

End Sub

这段小程序就把一个EXCEL文件中每个工作表的A1单元格填上了a

Sub tt()

For i = 1 To ActiveWorkbook.Worksheets.Count

ActiveWorkbook.Worksheets(i).Cells(1, 1).Value = "a"

Next

End Sub

多个格式相同的EXCEL文件合并(每个EXCEL都有多个SHEET),网上找了一代码,修改了下,但还需要进一步处理,可是我不会,所以来这请教高手们了。1:我从第2到第N张表,表头内容就不复制了,但是下面关键代码有错,不知道怎么改,谢谢了。

Workbooks(dirname).Sheets(3).Range("A2", Cells.SpecialCells(xlCellTypeLastCell)).Copy _ Sheets(3).Range("a65536").End(xlUp).Offset(1, 0)

2:还有遍历EXCEL文件家所有SHEET,能不能写成循环呀.

不然

'复制新打开工作簿的第2个工作表的已用区域到当前工作表

Workbooks(dirname).Sheets(2).UsedRange.Copy _

Sheets(2).Range("a65536").End(xlUp).Offset(1, 0) 这段代码导致我有几个SHEET就要写几次,好麻烦呀.....

Sub UnionWorksheets() 大家如果有更好的函数,或者代码能实现多个EXCEL文件数据合并的,也可以贴出.

谢谢大家了。

Dim i As Long ' 循环变量

i = 0

Dim insert_row As Long ' 合并文件中的粘贴位置Application.ScreenUpdating = False

Dim lj As String

Dim dirname As String

Dim nm As String lj = ActiveWorkbook.Path

nm =

dirname = Dir(lj & "\*.xls") Cells.Clear Do While dirname <> ""

If dirname <> nm Then

i = i + 1 Workbooks.Open filename:=lj & "\" & dirname Workbooks(nm).Activate '复制新打开工作簿的第一个工作表的已用区域到当前工作表'大哥们这个能不能写成循环,不然一个sheet来做一次好麻烦呀. Workbooks(dirname).Sheets(1).UsedRange.Copy _

Sheets(1).Range("a65536").End(xlUp).Offset(1, 0)

'复制新打开工作簿的第2个工作表的已用区域到当前工作表

Workbooks(dirname).Sheets(2).UsedRange.Copy _

Sheets(2).Range("a65536").End(xlUp).Offset(1, 0)

'复制新打开工作簿的第3个工作表的已用区域到当前工作表

If i = 1 Then

Workbooks(dirname).Sheets(3).UsedRange.Copy _

相关文档
最新文档