【ExcelVBA】ワークシートのコピー
目次
基本編
先頭にコピーした後、シートの名前を変更
Sub Sample() ThisWorkbook.Worksheets("Sheet1").Copy Before:=ThisWorkbook.Worksheets(1) ActiveSheet.Name = "在庫" End Sub※名前の変更が不要であれば、5行目は削除
末尾にコピーした後、シートの名前を変更
Sub Sample() ThisWorkbook.Worksheets("Sheet1").Copy After:=ThisWorkbook.Worksheets(Worksheets.Count) ActiveSheet.Name = "在庫" End Sub※名前の変更が不要であれば、5行目は削除
別ブックの先頭にコピーした後、シートの名前を変更
Sub Sample() Dim TargetWB As String TargetWB = "Book2.xlsx" '別ブック名 ThisWorkbook.Worksheets("Sheet1").Copy Before:=Workbooks(TargetWB).Worksheets(1) ActiveSheet.Name = "在庫" End Sub※名前の変更が不要であれば、9行目は削除
別ブックの末尾にコピーした後、シートの名前を変更
Sub Sample() Dim TargetWB As String TargetWB = "Book2.xlsx" '別ブック名 ThisWorkbook.Worksheets("Sheet1").Copy After:=Workbooks(TargetWB).Worksheets(Workbooks(TargetWB).Worksheets.Count) ActiveSheet.Name = "在庫" End Sub※名前の変更が不要であれば、9行目は削除
応用編
「数式」「名前の定義」「データの入力規則」を複写させたくない
ワークシートを丸ごとコピーした場合は「数式」「書式」「名前の定義」「データの入力規則」等々もコピー先へ複写されます。また「数式」「名前の定義」「データの入力規則」は、複製元ブックの名前が参照先リンクに含まれてしまい、何かと都合が悪くなることがあります。
都合が悪いときの対応方法は、代表的に2パターンあります。
【1】シートコピーした後に、「数式」「名前の定義」「データの入力規則」等の不要なモノは片っ端から消す。
【2】別ブックに新しいシートを作成して、そこに値と書式のみ貼り付けをする。(おすすめ)
【1】シートコピーした後に、「数式」「名前の定義」「データの入力規則」等の不要なモノは片っ端から消す。
【2】別ブックに新しいシートを作成して、そこに値と書式のみ貼り付けをする。(おすすめ)
【1】シートを丸ごとコピーして、数式のみ除去する方法(数式以外の除去は割愛)
Sub Sample() Dim TargetWB As String Dim TargetWS As String TargetWB = "Book1.xlsx" '別ブック名 TargetWS = "在庫" ThisWorkbook.Worksheets("Sheet1").Copy Before:=Workbooks(TargetWB).Worksheets(1) ActiveSheet.Name = "在庫" '自身を値貼り付けして数式を除去 with Workbooks(TargetWB).Worksheets(TargetWS) .UsedRange.Value = .UsedRange.Value End With End Sub
【2】新しいシートを作成して、そこに値と書式のみ貼り付けをする方法
Sub Sample() Dim TargetWB As String Dim TargetWS As String TargetWB = "Book1.xlsx" '別ブック名 TargetWS = "在庫" '新規シート名 '別ブックのワークシート末尾に名前付き新規シート追加 Workbooks(TargetWB).Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = TargetWS ThisWorkbook.Worksheets("Sheet1").Cells.Copy With Workbooks(TargetWB).Worksheets(TargetWS).Cells(1, 1) .PasteSpecial Paste:=xlPasteValues '値貼り付け .PasteSpecial Paste:=xlPasteFormats '書式貼り付け End With End Sub
ディスカッション
コメント一覧
まだ、コメントがありません