質問: 選択したexcelのシートをコピーして作業を行うマクロを組んでいます。コピーしたexcelのシートを保存する時、マクロ実行用シート(シート名:マクロ実行)を除いたシート全部をを1つの新規BOOKに保存し、その後、マクロを実行しているexcelのマクロ実行用シート以外のシートを削除したいのですが...どういった方法をとればよいでしょうか。 1.指定のシートを除くすべてのシートを保存する方法 2.指定のシート以外のシートの削除する方法 どちらかでもわかる方教えていただけると嬉しいです。
回答: 別のブックに移動したいシートのシート名を配列に格納してSelectしてMoveして Moveした先のブックをSaveAsで保存する感じで。 ざっくりとイメージはこんな。 ``` Dim ws As Worksheet 'Worksheetオブジェクトを操作するための変数 Dim SheetNames() As String '選択したシート名を保持する配列 Dim i As Integer '配列の添え字変数 i = 1 For Each ws In Worksheets 'すべてのワークシートを調べる If ws.Name <> "マクロ実行" Then 'ワークシート名が"マクロ実行"でなければ ReDim Preserve SheetNames(1 To i) '配列変数をRedim Preserveステートメントを使って内容を保持したまま要素数を増やす SheetNames(i) = ws.Name '配列変数に移動するシートのシート名を格納 i = i + 1 End If Next Sheets(SheetNames).Select '配列変数に格納されたシート名のシートを選択 ActiveWindow.SelectedSheets.Move '選択したシート(つまり"マクロ実行"以外)をすべて別の新しいブックに移動 ActiveWorkbook.SaveAs Filename:="newfile" '新しいブックがActiveなので、名前を付けて保存 ``` エラーチェックなんかは随所に足してあげてください。 たとえばこのままだとnewfile.xlsxが存在していた時にアラートが出ます。