別シートや別ブックにデータ転記をするにはどう書くか. 13回

別シートや別ブックにデータ転記をするにはどう書くか.

マクロ講座 動画編 13回
マクロ講座

動画で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 今回は以上です

コード解説

  1. データのあるブックから転記用のブックにデータを転記するコードです。
    以下のマクロを実行する前に、同じフォルダに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

  2. 動画の最後のコードは練習用ですので、別ブックを保存せずに転記の確認しただけで閉じています。
    そうしないと次の練習時にエラーとなるためです。
    ' 確認ダイアログを表示せず 保存しないで閉じる
    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日")

    NAMAE1
  3.   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
    
    NAMAE2
  4. NAMAE3
  5. NAMAE4
  6. NAMAE5