2017-08-03 80 views
0

我有一个包含宏和包含其打开这样的数据隐藏工作簿中的主要工作簿:Excel的VBA selection.copy不起作用

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 

lastStr3lastStb3只是包含的行和列的数量从creditsWorkbook选择的整数。选择工作正常(打开可见性时我可以看到它),但复制方法变得混乱。

我试着首先激活creditWorkbook,试图指定要拷贝的内容像这样creditsWorkbook.Worksheets("List1").Selection.Copy,但它只是给出了一个错误object doesn't support this property or method。我不知道该怎么做才能获得所需的结果。

任何帮助表示赞赏。

+1

为什么选择> activate> copy。更改第一个选择来复制'creditsWorkbook.Worksheets(“List1”)。范围(creditsWorkbook.Worksheets(“List1”)。单元格(5,1),creditsWorkbook.Worksheets(“List1”)。单元格(lastStr3,lastStb3)) .Copy' –

+0

@Tim Wilkinson,我改变了你的建议,但是我现在在粘贴时出现错误:'Pastespecial方法的范围类失败'。不知道为什么。如果它复制范围,粘贴它有什么问题? – Ans

回答

1

尽可能避免使用Select

With creditsWorkbook.Worksheets("List1") 
    .Range(.Cells(5, 1), .Cells(lastStr3, lastStb3)).Copy 
End With 
Windows("Main.xlsm").Sheets("Credit portfolio").Range("A4").PasteSpecial_ 
    Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
+0

它在这行提供了一个错误:Windows(“Main.xlsm”)。表(“Credit portfolio”)。Range(“A4”)。PasteSpecial_ Paste:= xlPasteValues,Operation:= xlNone,SkipBlanks:= False ,Transpose:= False':'对象不支持这个属性或方法。 – Ans

+0

而不是'Windows(“Main.xlsm”)。表(“信用组合”)...'尝试'ThisWorkbook.Worksheets(“信用组合”)。范围...'。这是假设你的宏是在** Main.xlsm ** – Zac

+0

@Zac,现在我得到一个'pastespecial方法的范围类失败'错误... – Ans