【EXCEL VBA】ワークシート(自分自身)を、新規ワークブックにコピーするサンプル2

前回のサンプルから、少し改良

前回のやりかたは横着しすぎていた。

今回は、よりプログラマ好み(きっちりとコピー範囲やコピー方法をしている)と思う。

シートのコピーペーストよりも、ワークブック、ワークシート、Range をきちんと握って値コピーをする方が

エラーがすくないだろうし。

Sub CopyToNWorkbook2()

Dim srcWb As Workbook
Dim dstWb As Workbook
Dim srcWs As Worksheet
Dim dstWs As Worksheet
Dim srcR As Range
Dim dstR As Range

‘アラート抑制
Application.DisplayAlerts = False
 
‘新規ワークブックを作成し、自分自身をコピー
Set srcWb = ThisWorkbook      ‘これはいらいないかも
Set srcWs = Me
Set srcR = srcWs.Range("A:G") ‘範囲指定
srcR.Copy

Set dstWb = Workbooks.Add
Set dstWs = dstWb.Worksheets(1)
Set dstR = dstWs.Range("A1")
dstR.PasteSpecial xlPasteValues  ‘値コピー

dstWs.Name = srcWs.Name  ‘シート名を変更

‘新規ワークブックで自動的に作成されるシートを削除
Dim ws As Worksheet
For Each ws In dstWb.Sheets
    If ((ws.Name = "Sheet1") Or _
        (ws.Name = "Sheet2") Or _
        (ws.Name = "Sheet3")) Then
        ws.Delete
    End If
Next ws

‘コピーした新規ワークブックを、名前を付けて保存
dstWb.SaveAs ThisWorkbook.Path & "\test_" & Me.Name

‘後処理
dstWb.Close
Application.DisplayAlerts = True

End Sub

コメント

タイトルとURLをコピーしました