[[20111206184550]] 『シートに名前を付けて保存のキャンセルについて』(さみぞう) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シートに名前を付けて保存のキャンセルについて』(さみぞう)
 どなたか詳しい方、教えていただけないでしょうか。
 よろしくお願いいたします。
 ネットで検索しながら次のマクロを組みました。

 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.