すぐに役立つエクセルVBAマクロ集 すぐマク
すぐに役立つ Excel VBA マクロ集 Excel VBA Macro
FAQ
Google
 
Home |  What's New! |  Gallery |  Introduction |  Service |  Profile 500連発・組み方講座フォロー Big Color Pallet
[広告]
Excel VBA Macro
Excel DownLoad
© 1997 - 2007
永井善王.
All RightsReserved.
HappyTech & Co., Ltd.
www.happy500z.com
Excel VBA Macro ・ ブックシート ・ FAQ
演算の終ったシートだけを別名ブックとして保存するには? Click Here! Click Here!
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)で保存される
Click here to visit our sponsor