2017-12-19 5 views
1

私はむしろVBAの新人です。私は次の問題を解決するために努力しています。私は通常、10-20枚のシートを使ってExcelファイルを取得します。次に、1枚のブックから同じシート構造を持つ別のブックに、すべてのシートの同じ範囲のセル(i76:i133)をコピーします。1つの本から別の本まで、同じシートのセルを同じ範囲にコピー/貼り付けます。

これを簡単にコーディングするためのループを作成しようとしていますが、失敗しています。

Sub copy() 

Dim Sourcebook As Workbook 
Dim Destinationbook As Workbook, mysheet As Worksheet 

Set Sourcebook = Workbooks("Quarterly.xlsx") 
Set Destinationbook = Workbooks("Master.xlsx") 

For Each mysheet In Sourcebook.Worksheets 
    Sourcebook.Sheets(mysheet).Range("I76:I133").Copy 
    Destinationbook.Sheets(mysheet).Range("I76").Paste 
Next 

End Sub 

私は任意のヘルプは非常に歓迎されるでしょうSourcebook.Sheets(mysheet).Range("I76:I133").Copy

実行時エラー13、型の不一致

を入手!

+0

両方のワークブックはすでに開いていますか?そうしないと問題が発生します。 – Vityata

答えて

3

お客様のmySheet変数は、Stringとして使用しようとしているうちに、Worksheet typeです。ここでループが改善されました:

For Each mysheet In Sourcebook.Worksheets 

    'Sourcebook.Sheets(mysheet).Range("I76:I133").Copy 'instead of this... 
    mysheet.Range("I76:I133").Copy '...use this 

    Destinationbook.Sheets(mysheet.Name).Range("I76").Paste 

Next 
+2

'Destinationbook.Sheets(mysheet)'?あなたは 'Destinationbook.Sheets(mysheet.Name)'を意味しないのですか?あなたは括弧(またはインデックス)の中に 'String'を持つ必要があります –

+0

@ShaiRado、ありがとうございます、私はそれを逃しました... –

+0

@ShaiRadoこれはまだ清潔です。 'mysheet.name'でもそれも釘付けになりました。 – L42

関連する問題