2017-08-03 5 views
0

を動作しません。私はこのような開かれたマクロやデータが含まれている隠されたワークブックが含まれている主なワークブックを持っている:エクセル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")。)セル(5,1)、クレジットワークブック。ワークシート( "リスト1")。セル(lastStr3、lastStb3)) .Copy' –

+0

@Tim Wilkinson、私はあなたの提案通りにコピーを変更しましたが、貼り付け時にエラーが発生しました。「範囲指定クラスの特殊メソッドが失敗しました。理由は分かりません。範囲をコピーした場合、それを貼り付けるのは何ですか? – 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 ")Sheets(" Credit portfolio ")範囲(" A4 ")PasteSpecial_ ペースト:= xlPasteValues、操作:= xlNone、SkipBlanks:= False 、Transpose:= False': 'オブジェクトはこのプロパティまたはメソッドをサポートしていません。 ' – Ans

+0

'Windows(" Main.xlsm ")ではなく、Sheets(" Credit portfolio ")...' try 'ThisWorkbook.Worksheets(" Credit portfolio ")。それはあなたのマクロが** Main.xlsm ** – Zac

+0

@Zacにあると仮定しています。今では、 'rangees failed'エラーの' pastespecialメソッドを取得しました... – Ans