2017-04-03 5 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 

ここで私が間違ったことを教えてもらえますか?それは私にレンジクラスが失敗したというエラーを与える。あなたはコピー範囲の大きさを維持したい場合は、その後、あなた範囲クラスの特殊なメソッドをペーストできませんでした。

+0

あなたは別の 'Workbook'オブジェクト内の別の' Worksheet'ある '' 'wb.Sheetsと( "シート1")の内側wbTarget.Sheets( "HK")では'持つことができません。範囲( "D82:X97")を使用して、最初の 'With wb.Sheets(" Sheet1 ")。UsedRange'を' End With'で閉じてから、 'wbTarget.Sheets(" HK ") ' –

+0

私はそれが問題だとは思わない。私はすでにそれを分けたが、まだ同じエラーがある – Desmond

+0

あなたはあなたのエラーを取得していますか? –

答えて

0

ありがとう:

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 

そうでなければ、その後に-貼り付けることがにコピーされた範囲の大きさをforceしたい場合:

' 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

;あなたはこれらの解決策を試しましたか? – user3598756

関連する問題