|
|
| Excel VBA Macro ・ ブックシート ・ FAQ |
|
演算の終ったシートだけを別名ブックとして保存するには?
|
|
|
|
Question 14.2 |
|
 |
 |
|
|
マクロののかったエクセルブックで、ボタンなどを押すことによって何か演算を行い、その結果を別名で保存させようとしたとします。
そうすると、その別名で保存したブックからマクロにより演算結果のシート以外のシートを削除しようとしても(マクロのシートも含む)、裏でまだマクロが動いていて、別名で保存したブックのマクロと間違えてしまうのか、マクロのシートだけ削除できないのです。
どうしたらいいでしょうか? エクセル95を使ってます。
|
|
Answer |
Copyright (C) 1999.1.5 永井善王 |
|
|
演算を行ったブックは、元のままにしておいて、運算結果を別のブックとして保存するようにしたいのですね。
あなたが考えられた方法は、そっくり別名で保存してから不要のシートを削除する手法ですが、「裏でマクロが動いている」という、やっかいな問題が出てしまいましたね。
「押してダメなら引いてみな」という言葉があります。必要なシートだけを新規のブックとして保存する方法に変えて、解決してはどうでしょうか。
右図の「シートの移動またはコピー」を使ってハンドで行う方法はご存知ですね。
これと「名前を付けて保存」を、組み合わせてマクロに組みます。
注意点としては、どのフォルダに保存するかの書き方くらいです。
下記のマクロを参考にしてください。
新しいブックの名前をインプットボックスで入力し、
現在開いているブックと同じフォルダに、保存するようにしました。
'-----------------------------------------------------------------------------------------
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)で保存される
|
|
|
|
| |
|
|