別シートや別ブックにデータ転記をするにはどう書くか.
動画でExcel 別シートや別ブックにデータ転記をするにはどう書くか.
別シートや別ブックにデータ転記をするにはどう書くか.
動画版「マクロ講座」です。
別シートへコピーしたデータを転記したい時に、どのようにコードを書いたらいいのか、
他のブックへの転記の場合は、どう書くのかということで
悩まないようにしたい方のために、オブジェクトの関係を説明しています。
これを理解すると、コードを書くのがかなり楽になります。
(サンプルファイルは、こちらです。 別シートや別ブックにデータ転記をするにはどう書くか、サンプル13回)
マクロ動画 別シートや別ブックにデータ転記をするにはどう書くか.
【Chapter】
0:00 マクロ講座超入門13回
1:00 他のシートに転記する
2:15 Range("A1").CurrentRegion
2:53 コードを他のシートににコピーして張り付ける
3:54 オブジェクトの親子関係を意識したコード
9:15 COPYメソッドとPastSpecialメソッド
10:25 別ブックにするときは
10:59 ワークブックを開くにはWorkbooksコレクション Open メソッド
12:28 コード
20:54 違うブックを開く
21:46 今回は以上です
コード解説
-
データのあるブックから転記用のブックにデータを転記するコードです。
以下のマクロを実行する前に、同じフォルダにotherbook.xlsxを作成してください。Sub Copy_OtherBook() Dim sourceRng As Range, targetRng As Range, wb As Workbook Dim filename As String filename = ThisWorkbook.Path & "\otherbook.xlsx" Set wb = Workbooks.Open(filename) Set sourceRng = ThisWorkbook.Worksheets("sh_sorce").Range("A1").CurrentRegion Set targetRng = wb.Worksheets("sheet1").Range("A1") sourceRng.Copy targetRng.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False MsgBox "転記しました" wb.Close savechanges:=False End Sub
動画の最後のコードは練習用ですので、別ブックを保存せずに転記の確認しただけで閉じています。
そうしないと次の練習時にエラーとなるためです。
' 確認ダイアログを表示せず 保存しないで閉じる
wb.Close SaveChanges:=False
' 確認ダイアログを表示せず 保存して閉じる
wb.Close SaveChanges:=True
もし、実務でデータを保存するのでしたら、
新規シートをwbに作成するように変更したらよいかと思います。
Dim ws As Worksheet Set ws = wb.Sheets.Add(After:=wb.Sheets(wb.Sheets.Count)) Set targetRng = ws.Range("A1")
またシート名の変更もしておいた方が良いかもしれませんね。
'以下のコードでとりあえず、シート名を今日の日付に設定します。
ws.Name = Format(Date, "yyyy-mm-dd")
シート名を”売上7月7日”にする場合は、文字列と結合してください。
ws.Name = "売上" & Format(Date, "m月d日")-
Sub Copy_OtherBookNewSheet() Dim sourceRng As Range, targetRng As Range, wb As Workbook, ws As Worksheet Dim filename As String filename = ThisWorkbook.Path & "\otherbook.xlsx" Set wb = Workbooks.Open(filename) Set sourceRng = ThisWorkbook.Worksheets("sh_sorce").Range("A1").CurrentRegion '新規シートを作成 Set ws = wb.Sheets.Add(After:=wb.Sheets(wb.Sheets.Count)) 'シート名を今日の日付に設定 ws.Name = Format(Date, "yyyy-mm-dd") Set targetRng = ws.Range("A1") sourceRng.Copy targetRng.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False MsgBox "転記しました" '変更を保存してワークブックを閉じます。 wb.Close savechanges:=True End Sub
-
-
-