【发布时间】:2017-08-03 17:48:06
【问题描述】:
我有一个包含宏的主工作簿和一个包含如下打开的数据的隐藏工作簿:
Dim ExcelApp As Object
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Visible = False
ExcelApp.ScreenUpdating = False
ExcelApp.DisplayAlerts = False
ExcelApp.EnableEvents = False
Dim creditsWorkbook As Workbook
Set creditsWorkbook = ExcelApp.Application.Workbooks.Open("P:\2017\" & DATA & ".xlsx")
稍后在代码中,我在该数据工作簿中选择一个范围并将其复制,然后将其粘贴到主工作簿中:
creditsWorkbook.Worksheets("List1").Range(creditsWorkbook.Worksheets("List1").Cells(5, 1), creditsWorkbook.Worksheets("List1").Cells(lastStr3, lastStb3)).Select
creditsWorkbook.Worksheets("List1").Activate
'creditsWorkbook.Worksheets("List1").Selection.Copy '<--- error
Selection.Copy <--- works, but copies from the Main workbook wrong stuff
Windows("Main.xlsm").Activate
Sheets("Credit portfolio").Select
Range("a4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
lastStr3 和lastStb3 只是包含要从creditsWorkbook 中选择的行数和列数的整数。选择工作正常(打开可见性时我可以看到它),但复制方法变得混乱。
我先尝试激活creditWorkbook,然后尝试像creditsWorkbook.Worksheets("List1").Selection.Copy 那样指定要复制的内容,但它只会给出错误object doesn't support this property or method。我不确定我应该怎么做才能获得所需的结果。
感谢任何帮助。
【问题讨论】:
-
为什么选择 > 激活 > 复制。将您的第一个选择更改为复制
creditsWorkbook.Worksheets("List1").Range(creditsWorkbook.Worksheets("List1").Cells(5, 1), creditsWorkbook.Worksheets("List1").Cells(lastStr3, lastStb3)).Copy -
@Tim Wilkinson,我按照您的建议将其更改为复制,但现在粘贴时出现错误:
Pastespecial method of range class failed。不知道为什么。如果它复制了范围,粘贴它有什么问题?