2017-04-03 1 views
0
Sub MakeTables() 
    Dim wbTarget As Object 

    Set wb = Workbooks.Open("C:\Users\A9900899\Desktop\Desmond\VBAProject\GenerateTablesFormulas.xlsx") 
    Set wbTarget = Workbooks.Open("C:\Users\A9900899\Desktop\Desmond\VBAProject\USDReport.xlsx") 

    With wb.Sheets("Sheet1").UsedRange 
    .Copy 

    ' Create the new sheet and name it at the end 

     With wbTarget.Sheets("HK").Range("D82:X97") 
     .PasteSpecial xlValues 
     .PasteSpecial xlFormats 
     End With 
    End With 

End Sub 

Kann mir jemand sagen, welchen Fehler ich hier gemacht habe. Es gibt mir den Fehler, dass Bereichsklasse fehlgeschlagen ist. DankePaste spezielle Methode der Range-Klasse fehlgeschlagen vba

+0

Sie können nicht 'Mit wbTarget.Sheets haben ("HK")' innerhalb eines 'Mit wb.Sheets ("Sheet1")' ', dass ein anderer Worksheet' in einem anderen' Workbook' Objekt ist. Sie sollten das erste 'With.Sheets (" Sheet1 ") schließen. UsedRange' mit' End With' und erst dann das zweite 'WithWbTarget.Sheets (" HK "). Range (" D82: X97 ") ' –

+0

Ich glaube nicht, dass das das Problem ist. Ich habe es schon getrennt, aber immer noch den gleichen Fehler – Desmond

+0

bei welcher Zeile bekommen Sie Ihren Fehler? –

Antwort

0

, wenn Sie die kopiert Bereich Größe behalten wollen, dann:

With wb.Sheets("Sheet1").UsedRange 
    .Copy 

    ' Create the new sheet and name it at the end 

    With wbTarget.Sheets("HK").Range("D82") '.Resize(.Rows.Count, .Columns.Count) '<--| you can omit the 'Resize' part but it can be useful to make it clear (code can be read in years to come) you want to stick to copied range size 
     .PasteSpecial xlValues 
     .PasteSpecial xlFormats 
    End With 
End With 
Application.CutCopyMode = False '<--| empty clipboard 

sonst, wenn Sie den kopierten Bereich der Größe der zu-klebte eine, dann auf force wollen:

' Create the new sheet and name it at the end 

With wbTarget.Sheets("HK").Range("D82:X97") '<--| reference range you want to paste values to and keep sizes of 
    wb.Sheets("Sheet1").UsedRange.Resize(.Rows.Count, .Columns.Count).Copy '<--| copy the source sheet range with same sizes as referenced range 

    .PasteSpecial xlValues 
    .PasteSpecial xlFormats 
End With 
Application.CutCopyMode = False '<--| empty clipboard 
+0

@ Desmond; Hast du irgendeine dieser Lösungen versucht? – user3598756

Verwandte Themen