プロが教える店舗&オフィスのセキュリティ対策術

エクセル2000です。
Sheet1を複製し名前をつけて保存するマクロを書きました。
以下のとおりですが、キャンセルされた場合でも「保存しました」のメッセージが出てしまいます。
キャンセルされたことを取得するにはどう書けばいいでしょうか?

Sub tesy01()
Dim ns As Workbook
Dim fn As String
Sheets("Sheet1").Copy
Set ns = ActiveWorkbook
With ns.Sheets(1)
.Cells.Copy
.Cells.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
fn = .Range("A1") & Format(Date, "yymmdd")
End With
Application.Dialogs(xlDialogSaveAs).Show ARG1:=fn & ".xls", ARG2:=1
ns.Close (False)
Set ns = Nothing
MsgBox "保存しました。"
ThisWorkbook.Activate
Sheets("Sheet1").Activate
End Sub

A 回答 (3件)

Msgboxを使ったりして


Application.Dialogs(xlDialogSaveAs).Show
の戻り値を確認してみればわかるが,
OKを押した時はTrueで
Cancelを押した時はFalseだ。

#MSDNのどのページに載っているかよくわからんかった。
#そういやあ、http://support.microsoft.com/kb/139723/en-us の method2との違いはなんだろう?
    • good
    • 0
この回答へのお礼

ありがとうございました。
おかげさまで解決しました。

Sub tesy01()
Dim ns As Workbook
Dim fn As String
Sheets("Sheet1").Copy
Set ns = ActiveWorkbook
With ns.Sheets(1)
.Cells.Copy
.Cells.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
fn = .Range("A1") & Format(Date, "yymmdd")
End With
msg = IIf(Application.Dialogs(xlDialogSaveAs).Show(ARG1:=fn & ".xls", ARG2:=1), "保存", "キャンセル")
ns.Close (False)
Set ns = Nothing
MsgBox msg & "しました。"
ThisWorkbook.Activate
Sheets("Sheet1").Activate
End Sub

とやってみました。

お礼日時:2008/06/28 22:10

Sub test02()


a = Application.Dialogs(xlDialogSaveAs).Show
If a = False Then
MsgBox "Cancelされた"
End If
End Sub
を実行してX(キャンセル)ボタンをクリックしてみればわかる。
普通に選択されたらTrueが帰る。
    • good
    • 0
この回答へのお礼

ありがとうございました。
解決しました。

お礼日時:2008/06/28 22:13

Sub tesy01()


Dim ns As Workbook
Dim fn As String
Dim s As Boolean

Sheets("Sheet1").Copy
Set ns = ActiveWorkbook
With ns.Sheets(1)
.Cells.Copy
.Cells.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
fn = .Range("A1") & Format(Date, "yymmdd")
End With
s = Application.Dialogs(xlDialogSaveAs).Show(fn & ".xls", 1)
ns.Close (False)
Set ns = Nothing
If s Then
MsgBox "保存しました。"
End If
ThisWorkbook.Activate
Sheets("Sheet1").Activate
End Sub

でどうでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございました。
解決しました。

お礼日時:2008/06/28 22:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A