Excel精英培训网

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

[已解决]想来挑战下吗,试下这个题吧

[复制链接]
发表于 2013-1-5 22:28 | 显示全部楼层 |阅读模式
25学分
第一个运行时间小于30S的为最佳,因为原始数据有很多。
VBA求助,多工作薄重新组合1.rar (355.76 KB, 下载次数: 43)

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-1-6 09:37 | 显示全部楼层
2、新合并的工作薄里同样包含10张表,分别是这些人对评价的这个人的评价,然后命名为被评价人.xls。 不懂啥意思,能模拟个结果就好了。留个脚印。。。
回复

使用道具 举报

 楼主| 发表于 2013-1-6 13:14 | 显示全部楼层
zhoucs00 发表于 2013-1-6 09:37
2、新合并的工作薄里同样包含10张表,分别是这些人对评价的这个人的评价,然后命名为被评价人.xls。 不懂啥 ...

附件图片是模拟结果。



回复

使用道具 举报

发表于 2013-1-6 16:19 | 显示全部楼层    本楼为最佳答案   
试试看。
Sub test()
Dim ar()
f_p1$ = "e:\tmp\"   '源文件位置
f_p2$ = "e:\tmp\t\" '目标文件位置
f_n$ = Dir(f_p1 & "*.xls*")
Application.ScreenUpdating = 0
ReDim ar(1 To 5)
Do While f_n <> ""
i = i% + 1
If i > UBound(ar) Then ReDim Preserve ar(1 To i + 5)
ar(i) = f_n
f_n$ = Dir
Loop
For i2% = 1 To i
   Set wk = Workbooks.Open(f_p1 & ar(i2))
   For Each sht In wk.Sheets
       If Dir(f_p2 & sht.Name & ".xlsx") = "" Then
         sht.Copy
         i3% = 4
         If Right(ar(i2), 1) = "x" Then i3 = 5
         ActiveSheet.Name = Left(ar(i2), Len(ar(i2)) - i3)
         ActiveWorkbook.SaveAs Filename:=f_p2 & sht.Name & ".xlsx"
         ActiveWorkbook.Close
       Else
         Set wk2 = Workbooks.Open(f_p2 & sht.Name & ".xlsx")
         Set sht2 = wk2.Worksheets.Add(, wk2.Sheets(wk2.Sheets.Count))
         i3% = 4
         If Right(ar(i2), 1) = "x" Then i3 = 5
         sht2.Name = Left(ar(i2), Len(ar(i2)) - i3)
         sht.Cells.Copy sht2.[a1]
         wk2.Save
         wk2.Close
         Set wk2 = Nothing
         Set sht2 = Nothing
       End If
   Next
   wk.Close
Next
End Sub
就是一些打开关闭打开关闭
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 21:06 , Processed in 0.565390 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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