[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シートに名前を付けて保存のキャンセルについて』(さみぞう)
どなたか詳しい方、教えていただけないでしょうか。 よろしくお願いいたします。 ネットで検索しながら次のマクロを組みました。
Sub シートの保存()
With ActiveSheet .Copy Application.Dialogs(xlDialogSaveWorkbook).Show .Name & "(月分).xls" End With
End Sub
この場合、シートを保存する場合は不都合はないのですが、ダイアログボックスをキャンセルで閉じた場合、コピーしたシートが保存されないまま残っています。
キャンセルした場合にシートが残らないようにするにはどうしたらよいでしょうか?
環境です。
Excel2003
WindowsXP
GetSaveAsFilename メソッドで先に保存先を指定させておいて キャンセルならFalseが返るので、それで判定 保存はSaveAs メソッドで行う。
という感じにしてはどうでしょうか? (momo)
momo様 早速のご回答ありがとうございます。 知識不足のため、どの様に記述するのかよく判らず ネットで検索して
Dim fname As String fname = Application.GetSaveAsFilename( _ InitialFileName:="成績表保存.xls", _ Title:="成績ファイルの保存") If fname <> "False" Then ActiveWorkbook.SaveAs filename:=fname End If End Sub
というマクロを記述してみました。 しかし、これだとシートではなくブック全体が保存されてしまうことと デフォルトで入るファイル名が "成績表保存.xls" と""が入ってしまいます。 どの様に修正すべきでしょうか? 勉強不足で申し訳ありませんが、よろしくお願いいたします。
横から失礼します。
> fname = Application.GetSaveAsFilename( _ > InitialFileName:="成績表保存.xls", _ > Title:="成績ファイルの保存")
>ActiveWorkbook.SaveAs filename:=fname
>しかし、これだとシートではなくブック全体が保存されてしまうことと
↓となっているので当然です。
>ActiveWorkbook.SaveAs filename:=fname
↓はどこにいっちゃんたんでしょう? With ActiveSheet .Copy End With
>デフォルトで入るファイル名が "成績表保存.xls" と""が入ってしまいます。
↓となっているので当然です。
> InitialFileName:="成績表保存.xls"
ActiveSheet.Copy でアクティブシートが新規ブックとしてコピーされます。
ActiveSheet.Copy の直後はアクティブシートがコピーされた(コピーされたシートのみの)ブック がアクティブになります。
このアクティブになっているブックを保存します。
Sub test() Dim fname As String '保存名を指定 fname = Application.GetSaveAsFilename( _ InitialFileName:="", _ fileFilter:="エクセル ファイル (*.xls), *.xls", _ Title:="成績ファイルの保存") If fname <> "False" Then 'アクティブシートを新規ブックにコピー ActiveSheet.Copy 'アクティブブックを保存 ActiveWorkbook.SaveAs Filename:= _ fname, FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False ActiveWorkbook.Close End If End Sub
(シスボーベー)
シスボーベー様、ご親切に解説・マクロの記述ありがとうございました。 お蔭様で思ったとおりの処理ができました。 どこがいけなかったかなんとなくわかりましたので、これからまた勉強します。 今後ともよろしくお願いいたします。 (さみぞう)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.