700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > VBA实现合并多个 Excel 工作簿工作表成为一个工作表

VBA实现合并多个 Excel 工作簿工作表成为一个工作表

时间:2019-11-15 22:06:50

相关推荐

VBA实现合并多个 Excel 工作簿工作表成为一个工作表

'函数作用:将该文件夹下所有工作簿的工作表合并到该文件的单一工作表,包括后缀是xls、xlsx、xlsm等的所有文件。

'******'Option Explicit 语句在模块级别中使用,强制显示声明模块中的所有变量。Option Explicit 语句必须写在模块的所有过程之前。

'如果模块中使用了 Option Explicit,则必须使用 Dim、Private、Public、ReDim 或 Static 语句来显式声明所有的变量。

'如果使用了未声明的变量名在编译时会出现错误。

'如果没有使用 Option Explicit 语句,除非使用 Deftype 语句指定了缺省类型,否则所有未声明的变量都是 Variant 类型的。

'注意:使用 Option Explicit 可以避免键入已有变量时拼错,

'在变量的范围不是很清楚的代码中使用该语句可以避免混乱。

'编译器的默认设置将是 Option Explicit On。

Option Explicit '所有变量必须先定义后使用Sub 该文件夹下所有工作簿的工作表合并到该文件的单一工作表()Dim MyPath$, MyName$, sh As Worksheet, sht As Worksheet, m&, IsSheetEmpty As BooleanSet sh = ActiveSheetMyPath = ThisWorkbook.Path & "\"MyName = Dir(MyPath & "*.xls")Application.ScreenUpdating = FalseCells.ClearContentsDo While MyName <> "" ' 如果_pathname_找不到,将返回零长度字符串 ("") 。'/zh-cn/office/vba/language/reference/user-interface-help/dir-functionIf MyName <> ThisWorkbook.Name Then '不统计含有该VBA程序的excel文件With GetObject(MyPath & MyName)For Each sht In .Sheets If IsSheetEmpty = IsEmpty(sht.UsedRange) Then '如果sht.UsedRange是空的,则IsEmpty返回True m = m + 1 If m = 1 Then sht.[a1].CurrentRegion.Copy sh.[a1] Else sht.[a1].CurrentRegion.Offset(0).Copy sh.[a65536].End(xlUp).Offset(1) End If End If Next.Close False End With End If MyName = Dir LoopApplication.ScreenUpdating = TrueMsgBox "已完成 该文件夹下所有工作簿的工作表合并到该文件的单一工作表。"End Sub

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。