Excel2010添加vba代码,但只能运行到黄色句,运行下一句就会跳错,请大神帮忙~这段代码从百
Excel2010添加vba代码,但只能运行到黄色句,运行下一句就会跳错,请大神帮忙~这段代码从百度经验里抄下来的,为什么别人能运行成功?在线等...
Excel2010添加vba代码,但只能运行到黄色句,运行下一句就会跳错,请大神帮忙~这段代码从百度经验里抄下来的,为什么别人能运行成功?在线等
展开
展开全部
这段代码有两个方面可以优化:
一是:With Workbooks(1).ActiveSheet 为何不一开始就定义
dim totalSheet as workheet
set totalSheet= activesheet
...
with totalsheet
...
不过这个问题不是主要问题,最大的漏洞是将所有工作表合并到一张表中可能会存在溢出。即超过.xls格式的65536行。 这种情况其实在excel中非常容易出现, 有的excel使用的不规范或其他情况,导致第65536行有单元格格式被修改,这样的话即便有大范围的行数没有数据(通过肉眼来看是空的,但是使用usedrange判断依然被视为非空。 应该是这个问题导致了你的运行错误。很明显这段代码执行时,你用来测试的excel工作簿会对结果造成影响。
一是:With Workbooks(1).ActiveSheet 为何不一开始就定义
dim totalSheet as workheet
set totalSheet= activesheet
...
with totalsheet
...
不过这个问题不是主要问题,最大的漏洞是将所有工作表合并到一张表中可能会存在溢出。即超过.xls格式的65536行。 这种情况其实在excel中非常容易出现, 有的excel使用的不规范或其他情况,导致第65536行有单元格格式被修改,这样的话即便有大范围的行数没有数据(通过肉眼来看是空的,但是使用usedrange判断依然被视为非空。 应该是这个问题导致了你的运行错误。很明显这段代码执行时,你用来测试的excel工作簿会对结果造成影响。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
更多追问追答
追问
这个和我抄的一样呀,为什么我的不能运行?
追答
可以正常运行
新建一个工作表,命名后保存到和与合并的N个文件同一个文件夹里,运行代码。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把acivatesheet改为指定工作表。还不行发我邮箱yhchen@gc.omron.com
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询