Excel精英培训网

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

[已解决]是一段合并多个单元格的程序,求解释

[复制链接]
发表于 2013-6-8 16:24 | 显示全部楼层 |阅读模式
本帖最后由 lyq123d 于 2013-6-17 18:12 编辑

是一段合并多个单元格的程序,现在自己复制过来可以使用了,但是不知道没一句的具体含义,为了提高自己,求各位高手解释一下每一句的含义:
Sub 合并当前目录下所有工作簿的全部工作表()
Dim MyPath, MyName, AWbName
Dim Wb As Workbook, WbN As String
Dim G As Long
Dim Num As Long
Dim BOX As String
Application.ScreenUpdating = False
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath & "\" & "*.xls")
AWbName = ActiveWorkbook.Name
Num = 0
Do While MyName <> ""
If MyName <> AWbName Then
Set Wb = Workbooks.Open(MyPath & "\" & MyName)
Num = Num + 1
With Workbooks(1).ActiveSheet
.Cells(.Range("A65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)
For G = 1 To Sheets.Count
Wb.Sheets(G).UsedRange.Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)
Next
WbN = WbN & Chr(13) & Wb.Name
Wb.Close False
End With
End If
MyName = Dir
Loop
Range("A1").Select
Application.ScreenUpdating = True
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
End Sub

最佳答案
2013-6-8 16:36
  1. 大概说一下:
  2. Dim MyPath, MyName, AWbName '定义了这几个变量
  3. Dim Wb As Workbook, WbN As String   '定义了这几个变量
  4. Dim G As Long  '变量
  5. Dim Num As Long'变量
  6. Dim BOX As String'变量
  7. Application.ScreenUpdating = False'关闭屏幕刷新,这样可以加快运行速
  8. MyPath = ActiveWorkbook.Path'MyPath的值为当前激活工作表
  9. MyName = Dir(MyPath & "" & "*.xls")''用了DIR,DIR返回指定路径文件的名称
  10. AWbName = ActiveWorkbook.Name'这里是给AWbName付值
  11. Num = 0
  12. Do While MyName <> ""'循环
  13. If MyName <> AWbName Then
  14. Set Wb = Workbooks.Open(MyPath & "" & MyName)’打开工作表,里面两个变量前面是有付值的,分别为路径与名字
  15. Num = Num + 1
  16. With Workbooks(1).ActiveSheet .Cells(.Range("A65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)'(.Range("A65536").End(xlUp).Row + 2, 1)最后一个单元格的行+2,第一列, Left为右截取函数,参数据分别为取哪个,取多长;
  17. For G = 1 To Sheets.Count'给G值值为,1到SHEET的个数据
  18. Wb.Sheets(G).UsedRange.Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)’UsedRange已用单元格
  19. Next
  20. WbN = WbN & Chr(13) & Wb.Name'chr(13) 可以生成回车符
  21. Wb.Close False
  22. End With
  23. End If
  24. MyName = Dir
  25. Loop
  26. Range("A1").Select
  27. Application.ScreenUpdating = True''开启屏幕刷新
  28. MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
复制代码
发表于 2013-6-8 16:36 | 显示全部楼层    本楼为最佳答案   
  1. 大概说一下:
  2. Dim MyPath, MyName, AWbName '定义了这几个变量
  3. Dim Wb As Workbook, WbN As String   '定义了这几个变量
  4. Dim G As Long  '变量
  5. Dim Num As Long'变量
  6. Dim BOX As String'变量
  7. Application.ScreenUpdating = False'关闭屏幕刷新,这样可以加快运行速
  8. MyPath = ActiveWorkbook.Path'MyPath的值为当前激活工作表
  9. MyName = Dir(MyPath & "" & "*.xls")''用了DIR,DIR返回指定路径文件的名称
  10. AWbName = ActiveWorkbook.Name'这里是给AWbName付值
  11. Num = 0
  12. Do While MyName <> ""'循环
  13. If MyName <> AWbName Then
  14. Set Wb = Workbooks.Open(MyPath & "" & MyName)’打开工作表,里面两个变量前面是有付值的,分别为路径与名字
  15. Num = Num + 1
  16. With Workbooks(1).ActiveSheet .Cells(.Range("A65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)'(.Range("A65536").End(xlUp).Row + 2, 1)最后一个单元格的行+2,第一列, Left为右截取函数,参数据分别为取哪个,取多长;
  17. For G = 1 To Sheets.Count'给G值值为,1到SHEET的个数据
  18. Wb.Sheets(G).UsedRange.Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)’UsedRange已用单元格
  19. Next
  20. WbN = WbN & Chr(13) & Wb.Name'chr(13) 可以生成回车符
  21. Wb.Close False
  22. End With
  23. End If
  24. MyName = Dir
  25. Loop
  26. Range("A1").Select
  27. Application.ScreenUpdating = True''开启屏幕刷新
  28. MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-6-17 18:11 | 显示全部楼层
suxiong 发表于 2013-6-8 16:36

搞明白了,谢谢。
回复

使用道具 举报

发表于 2013-6-17 18:59 | 显示全部楼层
lyq123d 发表于 2013-6-17 18:11
搞明白了,谢谢。

好吧!给最佳  
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 12:30 , Processed in 0.127072 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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