演算の終ったシートだけを別名ブックとして保存するには?

Question 14.2 Previous Next
マクロののかったエクセルブックで、ボタンなどを押すことによって何か演算を行い、その結果を別名で保存させようとしたとします。
そうすると、その別名で保存したブックからマクロにより演算結果のシート以外のシートを削除しようとしても(マクロのシートも含む)、裏でまだマクロが動いていて、別名で保存したブックのマクロと間違えてしまうのか、マクロのシートだけ削除できないのです。
どうしたらいいでしょうか? エクセル95を使ってます。
Answer   Copyright (C) 1999.1.5 永井善王
演算を行ったブックは、元のままにしておいて、運算結果を別のブックとして保存するようにしたいのですね。
あなたが考えられた方法は、そっくり別名で保存してから不要のシートを削除する手法ですが、「裏でマクロが動いている」という、やっかいな問題が出てしまいましたね。

「押してダメなら引いてみな」という言葉があります。必要なシートだけを新規のブックとして保存する方法に変えて、解決してはどうでしょうか。
入力シート1
右図の「シートの移動またはコピー」を使ってハンドで行う方法はご存知ですね。
これと「名前を付けて保存」を、組み合わせてマクロに組みます。
注意点としては、どのフォルダに保存するかの書き方くらいです。
下記のマクロを参考にしてください。
新しいブックの名前をインプットボックスで入力し、
現在開いているブックと同じフォルダに、保存するようにしました。
'------------------------------------------------------------------------------
Sub 演算の終ったシートだけを別名ブックとして保存する()
    Sheets("SSS").Select                        'シートをアクティブにする ※1
    パス = ActiveWorkbook.Path                  'パスを取得する ※2
    別名 = Application.InputBox(prompt:="拡張子(.xls)は不要です", _
        Title:="    演算結果保存用のブック名を入力してください", Type:=2) '別名を入力
    別名 = パス & "\" & 別名 & ".xls"            'パスと拡張子を付ける
    Sheets("SSS").Copy                          'シートを新規ブックへコピー ※1
    ActiveWorkbook.SaveAs Filename:=別名        '別名を付けてブックを保存する
    ActiveWorkbook.Close                        '別名ブックを閉じる
End Sub
'------------------------------------------------------------------------------
<コメント>
※1 SSSにはシート名を記入
※2 これをしないとExcelオプションのカレントフォルダ名の既定値(My Documents)で保存される

 

Excel VBA Macro