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

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

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

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

Q&A

1回答

4839閲覧

VBA 別ブックにコピー貼り付けをしたい

212111304

総合スコア4

VBA

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

1グッド

2クリップ

投稿2020/03/15 03:46

前提・実現したいこと

①データの入っているコピー側エクセルのH列、J列、K列、L列、M列、N列の7行目から最終行までをコピーする

②貼り付け側エクセルを開く

③すでにデータの入っている貼り付け側エクセルの最終行より下へ貼り付けをする
コピーした各列の貼り付け先は下記の通りです

H列(コピー元)をB列(貼り付け側)に、J列(コピー元)をG列(貼り付け側)に、K列(コピー元)をH列(貼り付け側)に、
L列(コピー元)をK列(貼り付け側)に、M列(コピー元)をN列(貼り付け側)に、N列(コピー元)をR列(貼り付け側)に、
貼り付けをしたいです

④貼り付けをする前にメッセージボックスで貼り付けしてもいいですかと表示したい

VBA初心者の為、悩むでいます。
アドバイスをよろしくお願い致します。

発生している問題・エラーメッセージ

H列(コピー元)をB列(貼り付け側)に貼り付けまではできましたが、複数のコピペが分かりません。

該当のソースコード

Sub 貼付()
Const xFld As String = "C:\Users\Owner\Desktop\識別表.xlsx"
With ActiveSheet
.Range("H7", .Cells(Rows.Count, 8).End(xlUp)).Copy
End With
With Workbooks.Open(xFld).Worksheets(1)
.Cells(Rows.Count, 2).End(xlUp).Offset(1).PasteSpecial
End With
Application.CutCopyMode = False
End Sub

s.k👍を押しています

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

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

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

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

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

meg_

2020/03/15 05:05

列が離れているので処理を繰り返し記述するのが簡単だと思います。
212111304

2020/03/15 10:56

ありがとうございます。 繰り返しの記述がわかなくて、教えて頂けると助かります。
guest

回答1

0

こんにちは。
難しく考えなくとも、以下の方法でいいのでは?と思いました。
私のほうでテストしてみて、うまくいきました。

vba

1Option Explicit 2 3Sub 貼付() 4 5 Const xFld As String = "C:\Users\Owner\Desktop\識別表.xlsx" 6 7 Dim YesNo As String 8 9 YesNo = MsgBox("貼り付けを開始してもいいですか?", vbYesNo) 10 If YesNo = vbNo Then 11 MsgBox ("中止します") 12 Exit Sub 13 End If 14 15 Dim CopySheet As Worksheet 16 Set CopySheet = ThisWorkbook.Worksheets("sheet1") 17 18 Dim PasteSheet As Worksheet 19 Set PasteSheet = Workbooks.Open(xFld).Worksheets("sheet1") 20 21 With CopySheet 22 'コピー側:H列⇒貼り付け側:B列 23 .Range("H7", .Cells(Rows.Count, 8).End(xlUp)).Copy 24 PasteSheet.Cells(Rows.Count, 2).End(xlUp).Offset(1).PasteSpecial 25 26 'コピー側:J列⇒貼り付け側:G列 27 .Range("J7", .Cells(Rows.Count, 10).End(xlUp)).Copy 28 PasteSheet.Cells(Rows.Count, 7).End(xlUp).Offset(1).PasteSpecial 29 30 'コピー側:K列⇒貼り付け側:H列 31 .Range("K7", .Cells(Rows.Count, 11).End(xlUp)).Copy 32 PasteSheet.Cells(Rows.Count, 8).End(xlUp).Offset(1).PasteSpecial 33 34 'コピー側:L列⇒貼り付け側:K列 35 .Range("L7", .Cells(Rows.Count, 12).End(xlUp)).Copy 36 PasteSheet.Cells(Rows.Count, 11).End(xlUp).Offset(1).PasteSpecial 37 38 'コピー側:M列⇒貼り付け側:N列 39 .Range("M7", .Cells(Rows.Count, 13).End(xlUp)).Copy 40 PasteSheet.Cells(Rows.Count, 14).End(xlUp).Offset(1).PasteSpecial 41 42 'コピー側:N列⇒貼り付け側:R列 43 .Range("N7", .Cells(Rows.Count, 14).End(xlUp)).Copy 44 PasteSheet.Cells(Rows.Count, 18).End(xlUp).Offset(1).PasteSpecial 45 End With 46 47End Sub 48

ご参考になれば幸いです。

投稿2020/03/18 01:31

AkiSaito

総合スコア110

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問