前回のサンプルから、少し改良
前回のやりかたは横着しすぎていた。
今回は、よりプログラマ好み(きっちりとコピー範囲やコピー方法をしている)と思う。
シートのコピーペーストよりも、ワークブック、ワークシート、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.CopySet 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 = TrueEnd Sub
コメント