[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『20080522180917のはとさんの質問の改造』(にゃごまる)
はとさんの質問の、回答LISTを実行すると、bookが追加されますが
同じbookの中に作るにはどうしたらいいでしょうか?
===================================
追加です。
そのときのMOOKさんの回答です。
Option Explicit
Const tmpSheetName = "TMP" '--- 作業用テンプレートシート名
Const masterSheetName = "ALL" '--- 元データシート名 Const checkRow = "E" '--- 元データの分割判定を行う列 Const checkLastRow = "I" '--- 各シートの最終列を判定する列 Const rowUnitSize = 2 '--- コピー行単位 Const dataStartLine = 3 '--- 各シートのデータ開始行(ヘッダ行+1)
'================================= Sub Grouping() '================================= Dim i&, lastRow Dim dstWB As Workbook
Application.ScreenUpdating = False With ThisWorkbook.Worksheets(masterSheetName) lastRow = .Range(checkRow & Rows.Count).End(xlUp).Row .Copy Set dstWB = ActiveWorkbook dstWB.Worksheets(masterSheetName).Name = tmpSheetName dstWB.Worksheets(tmpSheetName).Rows(dataStartLine & ":" & Rows.Count).Clear
For i = dataStartLine To lastRow If .Cells(i, checkRow).Value <> "" Then AddLine dstWB, i, .Cells(i, checkRow).Value End If Next End With Application.DisplayAlerts = False dstWB.Worksheets(tmpSheetName).Delete Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
'================================= Sub AddLine(dstWB As Workbook, lineNum&, sheetName$) '================================= ' コピー先シートにデータをコピー '================================= Dim lastLine%
checkAndMake dstWB, sheetName lastLine = dstWB.Worksheets(sheetName).Range(checkLastRow & Rows.Count).End(xlUp).Row + 1 ThisWorkbook.Worksheets(masterSheetName).Rows(lineNum & ":" & lineNum + rowUnitSize - 1).Copy dstWB.Worksheets(sheetName).Rows(lastLine).Insert Shift:=xlDown End Sub
'================================= Sub checkAndMake(dstWB As Workbook, sheetName$) '================================= ' コピー先シートがあるかチェックしなければ作成 '================================= Dim tmpWS As Worksheet On Error Resume Next Set tmpWS = dstWB.Worksheets(sheetName) If tmpWS Is Nothing Then dstWB.Worksheets(tmpSheetName).Copy after:=dstWB.Worksheets(dstWB.Worksheets.Count) dstWB.Worksheets(dstWB.Worksheets.Count).Name = sheetName End If On Error GoTo 0 End Sub (Mook)
[[20080522180917]] 『マクロ:種別毎に各シートへ転記(振り分け)した』(はと)
懐かしいコードですね。 最初の方の .Copy Set dstWB = ActiveWorkbook dstWB.Worksheets(masterSheetName).Name = tmpSheetName を .Copy after:=Worksheets(Worksheets.Count) Set dstWB = ThisWorkbook dstWB.Worksheets(Worksheets.Count).Name = tmpSheetName に変えれば、自ブック内での処理になると思います。 (Mook)
このような重複を避けるために、オリジナルでは新規ブックに作成するように しています。 2番目以降のシートをすべて削除するなら、下記を処理の最初に実行します。 Application.DisplayAlerts = False For w = 2 To Worksheets.Count ThisWorkbook.Worksheets(w).Delete Next Application.DisplayAlerts = True (Mook)
ii = Worksheets.Count
For w = ii To 2 Step -1 ThisWorkbook.Worksheets(w).Delete Next w
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.