Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2635|回复: 7

[已解决]关于多工作簿中工作表合并问题

[复制链接]
发表于 2016-3-2 16:57 | 显示全部楼层 |阅读模式
本帖最后由 czl103 于 2017-8-7 16:17 编辑

各位大虾,请查看附件中“合并”表格,运行VBA程序之后合并了三个工作表,只是前两个都少了一行(最后一行),请大虾帮忙找出为啥少了一行,并修正代码加上这一行,感激。

Sub 合并文件夹下工作表到一个工作簿()
    Dim p$, f$
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Cells.Clear
    p = ThisWorkbook.Path & "\"
    f = Dir(p & "*.xlsx")
    Do While f <> ""
        With Workbooks.Open(p & f)
        .Sheets(1).Range("a1").CurrentRegion.Copy ThisWorkbook.Sheets(1).Range("a1048576").End(xlUp).Offset(1, 0)
        .Close
        End With
        f = Dir
    Loop
End Sub


最佳答案
2016-3-2 21:09
Wk.Sheets(1).Range(Wk.Sheets(1).Cells(1, 1), Wk.Sheets(1).Cells(Wk.Sheets(1).UsedRange.Rows.Count + 1, Wk.Sheets(1).UsedRange.Columns.Count)).Copy ThisWorkbook.Sheets("合并").Cells(s + 3, 1)


注意,红色处+1就可以了
多工作表合并.jpg

多工作表合并2.rar

54.96 KB, 下载次数: 0

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-3-2 17:12 | 显示全部楼层
本帖最后由 爱疯 于 2016-3-2 17:14 编辑

1)运行VBA程序之后,没有给出1楼说的VBA程序?
2)为什么合并后,表1和表2要少第4行?
回复

使用道具 举报

 楼主| 发表于 2016-3-2 17:20 | 显示全部楼层
本帖最后由 czl103 于 2016-3-2 17:29 编辑

爱疯 发表于 2016-3-2 17:12
1)运行VBA程序之后,没有给出1楼说的VBA程序?  
不好意思,这次应该有了
2)为什么合并后,表1和表2要少第4行?

不是要少第4行,正因为少了第4行,才来找大虾帮忙改正代码。


多工作表合并.rar

54.4 KB, 下载次数: 5

回复

使用道具 举报

发表于 2016-3-2 18:00 | 显示全部楼层
Sub test()
    Dim p$, f$
    Application.ScreenUpdating = False
    Cells.Clear
    p = ThisWorkbook.Path & "\"
    f = Dir(p & "*.xlsx")
    Do While f <> ""
        With Workbooks.Open(p & f)
        .Sheets(1).Range("a1").CurrentRegion.Copy ThisWorkbook.Sheets(1).Range("a65536").End(xlUp).Offset(1, 0)
        .Close
        End With
        f = Dir
    Loop
End Sub
多工作表合并2.rar (49.73 KB, 下载次数: 16)
回复

使用道具 举报

 楼主| 发表于 2016-3-2 20:32 | 显示全部楼层
爱疯 发表于 2016-3-2 18:00
Sub test()
    Dim p$, f$
    Application.ScreenUpdating = False

没问题,这么简单的代码就可以了?高手。。。
回复

使用道具 举报

 楼主| 发表于 2016-3-2 20:34 | 显示全部楼层
爱疯 发表于 2016-3-2 18:00
Sub test()
    Dim p$, f$
    Application.ScreenUpdating = False

有一个不情之请,能帮忙检查原有代码的错误吗?为啥少一行?
回复

使用道具 举报

发表于 2016-3-2 21:09 | 显示全部楼层    本楼为最佳答案   
Wk.Sheets(1).Range(Wk.Sheets(1).Cells(1, 1), Wk.Sheets(1).Cells(Wk.Sheets(1).UsedRange.Rows.Count + 1, Wk.Sheets(1).UsedRange.Columns.Count)).Copy ThisWorkbook.Sheets("合并").Cells(s + 3, 1)


注意,红色处+1就可以了
回复

使用道具 举报

 楼主| 发表于 2016-3-3 09:45 | 显示全部楼层
爱疯 发表于 2016-3-2 21:09
Wk.Sheets(1).Range(Wk.Sheets(1).Cells(1, 1), Wk.Sheets(1).Cells(Wk.Sheets(1).UsedRange.Rows.Count +  ...

可以,多谢了,大虾。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 00:25 , Processed in 0.303753 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表