- 締切済み
エクセルVBAで他のbookのセルcellsで参照
エクセルVBAで他のbookのセルの値(一定の範囲)を参照したいのですが、変数を使いたいため、cellsを使用したいのですがうまくいきません。方法はないでしょうか。 下記に例を示します。 rangeを使用すればすべてok((2)(5))(この場合はset文を使用しなくてもok(5))。同じbookならcells使用ok(4)。 他のbookをcells文使用する方法はないでしょうか(もちろんできれば、Thisbookの方もcellsを使用したい)。 よろしくお願いします。 sub test() Dim ThisBook As Workbook Dim Workbook2 As Workbook 'マクロを実行しているワークブック Set ThisBook = ThisWorkbook '他のワークブック Set Workbook2 = Workbooks("test11.xlsx") ' 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value '(1)だめ 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range("a1:b2").Value '(2) OK 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test11.xlsx").Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value '(3) だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test1.xlsm").Worksheets(1).Range(Cells(3, 3), Cells(4, 4)).Value '(4)だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:ii8000").Value = Workbooks("test11.xlsx").Worksheets(1).Range("a1:ii8000").Value '(5) ok End Sub
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- watabe007
- ベストアンサー率62% (476/760)
Withを使ってWorkbook2.Worksheets(1)を参照する回答は出ていますので別安です。 ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Cells(1, 1).Resize(2, 2).Value
- keithin
- ベストアンサー率66% (5278/7941)
ブック,シートを指定していないrangeやcellsは,いずれも現在のアクティブシートのそのセルと指定されます。 結果してrangeはあっちのシートなのに,中のcellsがこっちの(アクティブな)シートのように不整合していて,よく失敗します。 sub 作成例() ’たとえばこちらをアクティブにしてみると workbook2.activate workbook2.worksheets(1).select with thisworkbook.worksheets(1) ’↓ ↓アクティブでないシートのrangeやcellsの指定を漏れなく行う .range(.cells(1, 1), .cells(2,2)).value = range(cells(1,1), cells(2,2)).value end with end sub
お礼
ありがとうございました。 よく理解できました。
- kybo
- ベストアンサー率53% (349/647)
(1)は以下の様にします。 ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range(Workbook2.Worksheets(1).Cells(1, 1), Workbook2.Worksheets(1).Cells(2, 2)).Value 長いので、Withを使い簡略化するとよいです。 With Workbook2.Worksheets(1) ThisBook.Worksheets(1).Range("A1:B2").Value = .Range(.Cells(1, 1), .Cells(2, 2)).Value End With
お礼
すぐにお返事いただきありがとうございました。 よく理解できました。 ありがとうございました。
お礼
理解できました。 ありがとうございました。