プロが教える店舗&オフィスのセキュリティ対策術

他ブックのシートの範囲を選択しコピーした内容を、別ブックのシート
に貼り付けするマクロを作成しています。
現在の情報であれば、下記のマクロで解決できます。

Sub Test1()
Dim myCellall As Range
Dim myCellsom As Range
Dim myCelluri As Range

  Set myCellall = Sheets("すべて").Range("A1")
Set myCellsom = Sheets("総務").Range("A1")
Set myCelluri = Sheets("売上").Range("A1")

With Workbooks.Open("\")
.Worksheets("すべて").Range("A1:K17").Copy myCellall
.Worksheets("総務").Range("A1:K88").Copy myCellsom
.Worksheets("売上").Range("A1:K81").Copy myCelluri
.Close False
End With
End Sub

ただ、他ブックのシートのデータは変動するため、行と列の変更を行わなければいけません。行と列の増減があっても、自動的に対応できるマクロを書きたいと思います。
どのようなマクロを追加すればよろしいでしょうか。

よろしくお願いいたします。

A 回答 (2件)

A1から始まる範囲をA1から始まる範囲にコピーするだけなら,



ケース1)
workbooks("元.xls").worksheets("すべて").cells.copy thisworkbook.worksheets("すべて").range("A1")
でも十分です。

ケース2)
application.displayalerts = false
thisworkbook.worksheets("すべて").delete
workbooks("元.xls").worksheets("すべて").copy before:=thisworkbook.worksheets(1)
とか,
あるいは所定のシートをひっくるめにしてコピーしてしまっても良いかもしれません。
workbooks("元.xls").worksheets(array("すべて","総務","売上")).copy before:=thisworkbook.worksheets(1)


ケース3)
セル番地をちゃんと指定しないとどうしてもキモチワルイなら
with workbooks.open("~")
with .worksheets("全て")
.range(.range("A1"), .cells.specialcells(xlcelltypelastcell)).copy mycellall
end with
end with
などのような手もありますね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。ケース3)を活用させていただきました。知らないメソッドでもあり勉強になりました。

お礼日時:2010/04/07 21:51

>ただ、他ブックのシートのデータは変動するため、行と列の変更を行わなければいけません。


行列の変更の条件は何でしょう?
条件が分らなければ回答が出来ませんよ

例えば
値のあるすべてのセルを選択するなら
次のようになります

Sub Test1()
Dim myCellall As Range
Dim myCellsom As Range
Dim myCelluri As Range

Set myCellall = Sheets("すべて").Range("A1")
Set myCellsom = Sheets("総務").Range("A1")
Set myCelluri = Sheets("売上").Range("A1")

With Workbooks.Open("\")
.Worksheets("すべて").UsedRange.Copy myCellall
.Worksheets("総務").UsedRange.Copy myCellsom
.Worksheets("売上").UsedRange.Copy myCelluri
.Close False
End With
End Sub

参考まで
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。詳細な条件を記載せず、申し訳ございませんでした。UsedRangeプロパティは知らなかったので勉強になりました。

お礼日時:2010/04/07 21:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!