質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コピー

元のオブジェクトを破壊することなく、オブジェクトの複製を生成することをコピーと呼びます。

Q&A

解決済

1回答

25838閲覧

Excel別Book間のコピーをし、貼り付け時にずらしたい

pandatati

総合スコア9

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コピー

元のオブジェクトを破壊することなく、オブジェクトの複製を生成することをコピーと呼びます。

0グッド

0クリップ

投稿2016/10/06 10:39

###前提・実現したいこと
別ExcelBook間のコピペをしたい
手順1
コピー元ファイルのシート1のある範囲をコピー
コピー先のシート1のA2に貼り付ける
手順2
コピー元ファイルのシート2のある範囲をコピー
コピー先のシート1のB2に貼り付ける
・・・以下コピー元ファイルに存在するシートの数だけ繰り返す

ある範囲:開始場所は同じで最終行の場所が変化
コピー元のシート名:毎回異なる

###発生している問題・エラーメッセージ
見よう見まねで下記コードを作成しましたが、
コピー元のシート1のある範囲をコピーし
コピー先のシート1に変数分貼り付け
コピー元のシート2のある範囲をコピーし
コピー先のシート1に変数分貼り付け
この様な状況になってしまいます。
同じ数字が並び、上書きされている状況です。

下記コードは試運転の為、シートの変数(K)は2つ、ずらす分の変数(i)は10としてます。

###該当のソースコード
Sub test1の繰り返しシート別()
Dim k As Long
For k = 1 To 2
Dim i As Long
For i = 0 To 10

Workbooks("コピー元.xlsx").Worksheets(k).Activate
Range("a1", Range("a1").End(xlDown)).Copy ThisWorkbook.Worksheets("sheet1").Cells(2, i + 1)
Next
Next
End Sub

###試したこと```
色々と試してお手上げ状態でここに書かせて頂きました。

###補足情報(言語/FW/ツール等のバージョンなど)
VBA
Excel2013

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

おそらく今の動きはコピー元ブックの1シート目のコピー内容をコピー先ブックのSheeet1のA2~J2まで貼り付けて、コピー元ブックの2シート目のコピー内容をコピー先ブックのSheeet1のA2~J2まで貼り付ける(上書きしてしまう)、というものではないでしょうか。

コピー元ブックのn番目のシートの内容をコピー先ブックのcells(2, n)に貼り付ける、と言うことですよね。
なので、変数iと変数iのループ部分が不要です。
コピー&ペースト部分は以下の通りとなります。

Range("a1", Range("a1").End(xlDown)).Copy ThisWorkbook.Worksheets("sheet1").Cells(2, k)

投稿2016/10/06 12:00

編集2016/10/07 04:27
ynakano

総合スコア1894

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pandatati

2016/10/07 00:49

ynakano様 回答、有難う御座いました。 教えて頂いたコードで上手く出来ました。 変数を同じにする点、考えつきませんでした。
pandatati

2016/10/07 01:58

すみません。 複数列を選択して、貼り付け先のセル列を一個飛ばしで貼り付け これを応用でやってみたのですが、 Range("a1:B1", Range("a1:B1").End(xlDown)).Copy ThisWorkbook.Worksheets("sheet1").Cells(2, k + 1) これではBとCにシート1を貼り付けた後、CとDにシート2を貼り付けてしまいます。 何かアイディア頂けますでしょうか?
ynakano

2016/10/07 02:02

シート1の場合cells(2,1) シート2の場合cells(2,3) シート5の場合cells(2,9) … と考えていくと cells(2, k * 2 - 1) だと思います。
pandatati

2016/10/07 04:07

ynakano様 度重なるご回答、本当に有難う御座います。 上手く走りました。 これからは見よう見まねではなく、しっかりと勉強していきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問