- ベストアンサー
エクセルのマクロ
以下のマクロを教えて下さい。 よろしくお願いします。 [1] Book1のSheet1のA列のデータを、Book2のSheet1のB列にコピーする(B列の先頭から)。 [2] Book1のSheet2のA列のデータを、Book2のSheet1のB列にコピーする([1]で貼り付けたものの次行から)。 [3] Book1のSheet3のA列のデータを、Book2のSheet1のB列にコピーする([2]で貼り付けたものの次行から)。 *A列はデータがない場合はありません。途中に空行があることもありません。 *[1][2][3]は一括処理で結構です。 *マクロ自体はBook3に作成する予定です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Book1.xls と Book2.xls は開いている Book1.xls の Sheet1~3 は一番左から並んでいる Book2.xls の Sheet1 は一番左にある 上記の前提で、Book3のマクロ Sub Test() Dim cBook As Workbook, pBook As Workbook Dim pR As Range Set cBook = Workbooks("Book1.xls") Set pBook = Workbooks("Book2.xls") For i = 1 To 3 With pBook.Worksheets(1).Range("A65536") If .End(xlUp).Row = 1 Then Set pR = .End(xlUp) Else Set pR = .End(xlUp).Offset(1, 0) End If End With With cBook.Worksheets(i) .Range("A1:A" & .Range("A65536").End(xlUp).Row).Copy pR.PasteSpecial xlPasteAll End With Next i Application.CutCopyMode = False End Sub
その他の回答 (4)
- papayuka
- ベストアンサー率45% (1388/3066)
#4 です。 B列だったようで、、 For i = 1 To 3 With pBook.Worksheets(1).Range("A65536") を For i = 1 To 3 With pBook.Worksheets(1).Range("B65536") に。
- imogasi
- ベストアンサー率27% (4737/17069)
値だけをコピーするで良ければ下記をどうぞ。 同時に書式も移すことは簡単でしょうが略。 (仮定等) (1)Book1(名前つけて保存したものを呼び出している)のSheet1のA列-->Book(名前をつけて保存する前)のSheet1へ書き出している。 (2)Book1(名前つけて保存したものを呼び出している)のSheet2-->Book(名前をつけて保存する前)のSheet1へ書き出している。 (3)質問ではSheet3も対象ですが、手抜き省略。 Dim、Setの追加、ForNext部コピーと手直しで直ぐ追加可能。 (4)質問ではBook2のB列に移しますが、私のは A列に移してます。”A”-->”B”に変えるだけです。 (5)Book3(第3のブック)にはマクロを作成してません。どうしてそうする必要があるのか。 非常に難しくなるかどうか判りません。 (6)物足りないロジックです(コピーメソッドも使っていません)。しかし他ブックの参照法や、保存前のブックを対象にするなど、他の面で私にとって手探りでテストした面があり、参考までに載せます。 このVBAは、新規ブックの側(BOOK1)に書いています。 Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Dim sh3 As Worksheet Set sh1 = Workbooks("Book1.xls").Worksheets("sheet1") Set sh2 = Workbooks("Book1.xls").Worksheets("sheet2") Set sh3 = Workbooks("Book1").Worksheets("sheet1") j = 1 For i = 1 To 65000 If sh1.Cells(i, "A") = "" Then GoTo p01 ' MsgBox sh1.Cells(i, "A") sh3.Cells(j, "A") = sh1.Cells(i, "A") j = j + 1 Next i p01: For i = 1 To 65000 If sh2.Cells(i, "A") = "" Then GoTo p02 ' MsgBox sh2.Cells(i, "A") sh3.Cells(j, "A") = sh2.Cells(i, "A") j = j + 1 Next i p02: End Sub
お礼
ありがとうございました。
- Hageoyadi
- ベストアンサー率40% (3145/7860)
マクロの記録でイケます。 「・・・で貼り付けたものの次行から」については A65536セルを選択して[Ctrl]+[↑]キーを押した操作で、そのセルの行をRowプロパティを使って取得することができます。 lastRow = Range("A65536").End(xlUp).Row ですね。
お礼
ありがとうございました。
- kotetsu2
- ベストアンサー率20% (1/5)
単純にBook1の各シートのA列データをBook2の シート1のB列に順番に貼り付けていく処理の ようですが >以下のマクロを教えて下さい。 ではなく「マクロを作ってくれ」的な内容のようです がご自分ではどの程度努力されて、不明な点はどの 部分なのでしょうか? 想像できる部分としては Book2 Sheet1のB列で[2]以降での処理の時の 貼り付け行の取得ぐらいですが・・・たぶん
お礼
ありがとうございました。