【发布时间】:2017-04-10 05:23:23
【问题描述】:
朋友们,你们好, 每当我尝试遍历所有打开的工作簿以复制并粘贴到主工作簿时,都会收到错误消息。 对于我的生活,我无法弄清楚如何纠正它,你们中的任何人都可以帮忙吗?
Sub LoopCopyPaste()
Dim wb As Workbook
Dim Lastrow As Long
For Each wb In Application.Workbooks
If wb.Name <> "MasterDatabase.xlsx" & "MacrosExcelFile.xls" Then
Lastrow = wb.Worksheets(1).Cells(Rows.Count, 2).End(xlUp).Row
wb.Worksheets(1).Range("B7:J" & Lastrow).Copy
''
Windows("MasterDatabase.xlsx").Activate
Range("B" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
End If
Next wb
End Sub
错误是“1004,应用程序定义或对象定义的错误”,它指向“Lastrow = wb.Worksheets(1).Cells(Rows.Count, 2).End(xlUp).Row”句子。 我能做些什么来解决这个问题? 提前致谢。
【问题讨论】:
-
我没有仔细查看它是否与您的问题有关,但
If wb.Name <> "MasterDatabase.xlsx" & "MacrosExcelFile.xls" Then相当于If wb.Name <> "MasterDatabase.xlsxMacrosExcelFile.xls" Then。你想要If wb.Name <> "MasterDatabase.xlsx" And wb.Name <> "MacrosExcelFile.xls" Then -
我猜您的问题实际上与不合格的
Rows.Count和Range有关。尝试更改它们以包含您所指的电子表格。 (第一个是Lastrow = wb.Worksheets(1).Cells(wb.Worksheets(1).Rows.Count, 2).End(xlUp).Row,这可能是导致问题的原因,但后一个也应该更改以确保安全。)哎呀 - 没有充分阅读你的问题 -那个不合格的Rows.Count绝对是你的问题。 -
这绝对是问题所在!代码我看了一千遍还是搞不懂,多谢朋友!